写点什么

ITest:京东数科接口自动化测试实践

  • 2020-12-19
  • 本文字数:2546 字

    阅读完需:约 8 分钟

ITest:京东数科接口自动化测试实践

导读:你是否为每天“点点点”的工作而感到索然无味?你是否苦于没有合适的工具而对复杂的测试任务望而却步?频繁变动的接口,重复的功能测试,你,疲惫么?京东数科运维部平台开发组基于日常接口测试经验,开发了接口测试平台——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 与精准测试的理念,实现源码与用例的双向绑定,继而针对版本迭代的代码变更为用户回归范围提供建议。


    本文转载自:京东数科技术说(ID:JDDTechTalk)

    原文链接:ITest:京东数科接口自动化测试实践

    2020-12-19 07:006095

    评论

    发布
    暂无评论
    发现更多内容

    项目经理如何有效管理项目进度?项目管理3大常见问题及解决方案

    优秀

    项目管理 项目管理工具

    如何修改Kestrel上传文件的大小

    喵叔

    1月月更

    涨薪密码 | 音视频开发-程序员界的技术皇冠

    Yt

    音视频 WebRTC ffmpeg 流媒体 SRS流媒体服务器

    关于熟经济和通胀--《香帅中国财富报告》摘录(2/100)

    hackstoic

    经济

    基于STM32设计的校园一卡通项目

    DS小龙哥

    C语言 嵌入式 单片机

    如何用建木CI部署k8s资源

    Jianmu

    Kubernetes DevOps CI/CD 开源项目

    MongoDB高级应用之数据转存与恢复(5)

    Tom弹架构

    Java 分布式数据库mongodb

    2022年石家庄等保测评公司名单(排名部分先后)

    行云管家

    网络安全 等保 等保测评 石家庄

    Mithril.js:一个高性能 JavaScript MVC 框架

    devpoint

    typescript mvc 1月月更 Mithril.js

    基于STM32设计的计算器(实现基本运算)

    DS小龙哥

    C语言 嵌入式 单片机

    年度盘点丨2021数字化转型优秀案例TOP10

    ToB行业头条

    洞态漏洞检出测试第二期:NoSQL & LDAP注入漏洞

    火线安全

    DevSecOps WEB安全 安全漏洞

    政法委重点人员联防联控系统开发,重点人群管理服务平台建设

    a13823115807

    跨越2021丨在逐梦中星夜兼程,在前行中不忘初心

    YonBuilder低代码开发平台

    低代码

    Java 中 Jackson 的 readTree

    HoneyMoose

    全新UI西游H5决战天宫游戏详细图文架设教程

    echeverra

    基于STM32设计的指针式电子钟与日历

    DS小龙哥

    C语言 嵌入式 单片机

    阿里云「低代码音视频工厂」正式上线,为企业用户打造音视频应用开发最短路径

    阿里云CloudImagine

    音视频 低代码 开发

    QCon-OPPO大规模CV预训模型技术及实践

    安第斯智能云

    算法 计算机视觉 预训练模型

    低代码平台对程序员有哪些好处?

    J2PaaS低代码平台

    为什么企业组织更愿意选择内部私有的IM,而不使用钉钉、微信等软件?

    BeeWorks

    看了个女装项目(doge

    你?

    基于STM32设计的数字电子秤

    DS小龙哥

    C语言 嵌入式 单片机

    低代码实现探索(十二)vue.config.js模块打包

    零道云-混合式低代码平台

    CRM系统的六大优势

    低代码小观

    低代码 CRM 客户关系管理 CRM系统 客户关系管理系统

    云智慧运维管理平台OMP荣获OSC中国开源项目评选「最受欢迎项目」奖

    云智慧AIOps社区

    开源项目 运维工程师 运维监控 自动化运维 运维管理

    谁说操作系统没有创新,这里就有一个,还是分布式的

    LAXCUS分布式操作系统

    基于STM32设计的健康检测设备(测温心率计步)

    DS小龙哥

    C语言 嵌入式 单片机

    采购堡垒机时候,选择开源堡垒机还是云堡垒机?

    行云管家

    云计算 网络安全 等保 堡垒机

    安全架构要参:构建企业适用的安全架构

    I

    安全架构 企业安全

    CVE-2021-32682 elFinder RCE 简单分析

    H

    网络安全 安全漏洞

    ITest:京东数科接口自动化测试实践_文化 & 方法_京东数科_InfoQ精选文章