导读:你是否为每天“点点点”的工作而感到索然无味?你是否苦于没有合适的工具而对复杂的测试任务望而却步?频繁变动的接口,重复的功能测试,你,疲惫么?京东数科平台开发团队基于日常接口测试经验,开发了接口测试平台——ITest。通过此平台让研发流程更高效,让测试回归测试本身,做适配数科场景的通用接口测试平台。本文将从需求背景、平台特性、架构设计、未来规划几方面详细阐述ITest助力接口自动化测试在京东数科的最佳实践与探索。

一、需求背景

接口测试位于测试金字塔的中间层,与业务关联度较高,测试及运行成本适中,同时能够覆盖到端对端测试所不能覆盖的并发,安全等,在测试过程中占据重要地位。

接口自动化测试因其能够降低回归成本,提高回归效率,在回归测试及冒烟测试阶段应用较为广泛。但面对日益复杂的软件设计,做好接口自动化工作并非易事,在此针对其中两个痛点进行阐述:

1、复杂场景的接口自动化编码耗时多,接口测试工具无法满足个性化需求

自动化测试能够稳定执行的前提是,单个测试用例必须能够重复成功运行。这意味着完整的自动化用例中必须包含测试数据准备,测试调用,数据校验及数据清理工作等。

在应用逐渐微服务化的今天,A服务接口的数据准备工作可能会依赖多个B服务的接口,接口测试用例的设计本身对于测试同学的业务能力就是不小的挑战,要完成高质量的稳定可重复运行的自动化用例的编码,更是一件耗时的事情。

而目前通用的接口测试工具能解决的多是通用性的需求,当用户的接口请求中包含自定义算法,加解密信息等情况时,接口测试工具无法给予友好的支持。

2、团队协作不易,开发和测试对齐用例有沟通成本

在自动化编码的过程中,测试代码维护在代码仓库中,测试用例的管理也依赖于代码仓库。项目中不同模块的测试情况没有一个总体的入口,较难对测试的情况进行度量和总体评估,不同模块间的用例复用也变得比较困难。

同时因开发同学对测试情况了解不足,在冒烟阶段,bug验证及测试回归阶段,往往需要测试和开发同学对代码仓库中的用例进行对齐,有一定的沟通成本。

为提高测试效率,简化沟通成本,让测试同学专注于测试策略选择,测试用例设计、codeReview等更重要的工作,笔者所在团队研发了接口自动化测试平台ITest, 致力于提供简易、灵活,通用的接口自动化测试服务。

二、ITest特性

1、灵活的用例组织,提高测试效率

  • 简洁的用例配置视图,提供多协议支持(http, jsf, dubbo, jdbc 等)

ITest提供了简洁的可视化配置页面,用户通过对关键接口信息的配置、断言项的选择及预期结果配置即可完成单个接口测试用例的组织。目前平台可支持http, jsf, dubbo, jdbc 等常用协议类的接口用例配置。

图1 jdbc协议测试步骤配置

  • 通用的用例组织方式,可将测试结果特定信息提取为变量,在测试上下文中传递

ITest平台将仅包含单个接口信息的测试形式定义为测试步骤,而将以before - test -after 这种通用方式组织的测试形式定义为测试用例。测试用例中的 before,after 可选择多种协议类型的测试步骤,亦可选择测试用例。通过这种方式来灵活组织单一接口用例和复杂场景用例,同时实现步骤和用例的复用。同一用例范围内可支持不同测试步骤间变量的相互应用,同时支持将测试过程中测试步骤的关键结果信息提取为变量,在整个用例上下文中传递。

图2 测试用例编辑页面

  • 用例与数据分离

图3 用例参数化配置

  • 内嵌常用的函数(时间戳,随机数,求和,常用加解密算法等)

图4 常用函数支持

2、便利的项目协作&管理,简化沟通流程

  • 项目空间内用例共享,利于项目内用例复用和对齐
  • 项目域内测试执行计划灵活编排

图5 测试计划编排示意

  • 项目域管理多组测试计划,用于不同迭代及测试目标

图6 测试工程详情视图

  • 测试计划执行情况可追溯,提供历史测试报告及执行详情

图7 测试报告概览

3、多维度运行支持,提高测试运行稳定性

  • 用例在线快速调试
  • 测试计划执行,支持定时执行,批量执行等
  • 任务运行状态通知

4、持续集成

  • 与JCI & JAT 深度合作,嵌入JCI CI&CD流水线
  • 开放API,满足业务线多样化的CI&CD需求

图8 与通用接口测试工具功能对比

三、ITest架构设计

1、核心概念

测试步骤,测试用例及测试计划是ITest接口自动化平台的核心概念。其中,测试步骤和测试用例是两个描述不同粒度测试行为的单位,测试步骤定义了单个接口测试行为,测试用例则可描述多个接口测试行为。测试用例可嵌套测试用例和测试步骤,满足复杂测试场景的编排需求。

图9 测试步骤,测试用例及参数化关系

测试计划是多组测试步骤及测试用例的有序集合,beforeGlobal和afterGlobal 中的用例是整个计划的前置用例和后置用例,beforeGlobal用例会先于整个测试计划内其他用例执行,若执行失败,则直接跳过该测试计划剩余用例。

测试计划可包含多个group,同一group中用例可共享执行上下文。在group中可定义beforeGroup 和afterGroup用例,做为group 内的前置用例和后置用例。beforeGroup用例若执行失败,则直接跳过该group 中剩余用例。不同group间用例互不影响,可并行执行。

图 10 测试计划组成示意

2、总体架构及模板简介

图11 ITest 总体架构概览

ITest由管理平台和执行引擎两大模块构成。其中,管理平台是面向用户侧的,负责测试用例的编辑及快速调试,测试计划的编排及调度执行,测试结果展示,消息通知,角色权限管理,项目空间和个人空间用例及计划的维护等工作。执行引擎则负责测试模板的解析及执行工作。执行引擎通过java编写,可以通过ITest Agent,Jenkins,容器云轻松集成,当前默认环境托管在数科容器云lambda上,提供面向数科测试环境及公网的集成测试能力。

图12 ITest engine 功能逻辑示意

四、ITest未来规划

为更好支持接口自动化测试,ITest 接口自动化测试平台计划在以下方面继续丰富完善功能:

1、丰富测试用例及测试计划的组织结构,在目前顺序组织的基础上,增加分支选择结构和循环结构的组织方式,以应对复杂测试逻辑的需求。

2、增加对脚本语言的支持,同时提供函数的上传与编辑需求,满足用户多样化自定义函数的需求。

3、自动化测试的精准度量:从代码及接口数据层面对测试覆盖率进行度量,进一步结合分布式服务跟踪系统SGM与精准测试的理念,实现源码与用例的双向绑定,继而针对版本迭代的代码变更为用户回归范围提供建议。

互动讨论:你在日常工作中都遇到哪些接口测试的痛点?你觉得一个好的接口自动化测试平台是什么样子的呢?欢迎在留言区分享你的困惑或你的见解。

本文作者:京东数科 郑琳

往期好文推荐:
2020 ICDM 知识图谱竞赛获奖技术方案
一文读懂联邦学习的前世今生(建议收藏)
突破DevOps瓶颈:京东数科自动化测试平台建设实践
京东数科七层负载 | HTTPS硬件加速 (Freescale加速卡篇)
京东数科mPaaS:深度解读京东金融App(Android)的秒开优化实践

ITest:京东数科接口自动化测试实践相关推荐

  1. 接口测试用例模板_ITest:京东数科接口自动化测试实践

    ITest 作者:郑琳 京东数科平台开发团队原创,转载请获得授权 导读:你是否为每天"点点点"的工作而感到索然无味?你是否苦于没有合适的工具而对复杂的测试任务望而却步?频繁变动的接 ...

  2. 运维数智化时代——京东数科AIOps落地实践(一)

    一.背景 自从2016年Gartner提出AIOps概念以来,平台化和智能化已经成为了运维体系发展的大趋势.从整体来看,运维发展可以分为5个阶段,分别为手工及脚本运维.工具标准化运维.平台自动化运维. ...

  3. Lego-美团点评接口自动化测试实践

    Lego-美团点评接口自动化测试实践 2018-02-07 转自:Lego-美团点评接口自动化测试实践 目录 一.概述   1.1 接口自动化概述   1.2 提高ROI     针对"减少 ...

  4. 接口自动化测试实践指导(中):接口测试场景有哪些

    在第一篇文章 接口自动化测试实践指导(上):接口自动化需要做哪些准备工作中详细给小伙伴们讲解了一下接口自动化需要做哪些准备工作,准备工作中最后一步接口测试用例设计是非常重要的一个环节,用例设计的好不好 ...

  5. 接口自动化测试实践指导(下):接口自动化测试断言设置思路

    在前篇文章: 接口自动化测试实践指导(中):接口测试场景有哪些 中详细给小伙伴们讲解了一下接口自动化需要做哪些准备工作及接口测试场景有哪些. 本篇文章是最后一篇,主要分享一下接口自动化测试断言设置思路 ...

  6. Lego-美团接口自动化测试实践

    一.概述 1.1 接口自动化概述 众所周知,接口自动化测试有着如下特点: 低投入,高产出. 比较容易实现自动化. 和UI自动化测试相比更加稳定. 如何做好一个接口自动化测试项目呢? 我认为,一个&qu ...

  7. java脚本接口自动化测试_接口自动化测试实践的记录

    接口测试实践的记录 在敏捷开发交付的流程中,自动化测试实际上被放在一个看起来挺重要的位置,而自动化测试中,接口测试是一个投入产出比比较高的 一种自动化测试的形式,而我自己也做了一个这样的脚手架一样的东 ...

  8. 京东数科研发效率和质量提升实践

    阿里QA导读:快速迭代是互联网公司的典型特征之一,这也要求技术团队能够做到快速交付,然而快速交付就意味着要牺牲一定的质量吗?研发过程中,是什么样的痛点.需求阻碍了效能的提升?京东数科熊志男老师,在TI ...

  9. 实战丨基于接口的银行系统自动化测试实践

    本文以接口自动化测试作为银行测试工作突破口,在分析主流工具与银行业实际需求之间差异的基础上,通过自研打造接口自动化测试平台,分享了平台建设及落地的实践经验. 自动化测试类型分析 自动化测试是提高测试效 ...

  10. 接口自动化测试平台Lego ------ 美团接口自动化测试超全实践【3000字长文】

    一.概述 1.1 接口自动化概述 众所周知,接口自动化测试有着如下特点: 低投入,高产出. 比较容易实现自动化. 和UI自动化测试相比更加稳定. 如何做好一个接口自动化测试项目呢? 我认为,一个&qu ...

最新文章

  1. 论文被scoop(抢先发表)是怎样一种体验?
  2. 直播活动丨BMMeetup第1期:大模型Prompt Tuning技术,8场学术报告和Poster提前下载...
  3. golang并发编程goroutine+channel(一)
  4. 两个rtsp同时抓流_海康摄像头同时添加到两台海康硬盘录像机上
  5. oracle:集合查询
  6. 大志非才不就,大才非学不成—博文资源汇总
  7. NLP:基于snownlp库对文本实现提取文本关键词和文本摘要
  8. android 相机纹理,Android平台Camera实时滤镜实现方法探讨(五)--GLSurfaceView实现Camera预览...
  9. javascript学习系列(11):数组中的findIndex方法
  10. go java websocket_java的连接wss的websocket服务器代码如何转成go代码
  11. php查询锁表情况,MySQL update where in 子查询导致锁表
  12. php相关术语,PHP中一些专业术语、符号、函数[初学者学习PHP]
  13. matlab imagesc 保存,在matlab中保存imagesc的精确图像输出
  14. 坦克大战小游戏的实现
  15. 爬取图片,并按比例划分数据集
  16. android百度地图定位文字表述,Android studio 百度地图开发(8)地图已标记POI点和搜索POI点的获取和利用...
  17. ETFE膜和PTFE膜不同之处以及特点-世来福
  18. Go会否给Java带来冲击?
  19. 医学图像重采样spacing和direction
  20. 在Flash中播放flv视频

热门文章

  1. wnmp mysql 密码_WNMP完整教程
  2. gif表情制作软件怎么制作gif动图
  3. How to cover an IE windowed control (Select Box, ActiveX Object, etc.) with a DHTML layer.
  4. Ubuntu14.04更新显卡(Nvidia gt755m)驱动,成功步骤
  5. 如何知道一个App的包名
  6. 成考计算机专业难不难,成人高考计算机类难度大吗(成人大学难度)
  7. Hive修复外表分区时报错
  8. 给一整型变量a,写两段代码,第一个设置a的bit3,第二个清除a的bit3.“a的bit3”
  9. IDEA 依赖自动导入,不用每次手动点击Load Maven Changes图标
  10. 凯思面试经历转置一个string