写点什么

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:005219

    评论

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

    世界上最健康的程序员作息表!「值得一看」

    王中阳Go

    golang 高效工作 学习方法 程序员 作息时间

    腾讯云助力东宁智慧农业发展,共探乡村振兴产业数字化创新

    科技热闻

    这才是打开Java面试的正确方式,金三银四互联网大厂Java面试八股来袭

    架构师之道

    编程 程序员 java面试

    云数据库TiDB使用过程注意项及改进建议

    TiDB 社区干货传送门

    6.x 实践

    高复用性自动化脚本设计实践

    京东科技开发者

    自动化 测试 框架 脚本重构 高复用

    中国一级市场5年完成1039个投融资事件;红杉中国、启明创投、高瓴创投在2022年最为活跃-创业邦发布《2022年合成生物学产业投资报告》

    创业邦

    高并发下保证接口幂等的8个锦囊

    采菊东篱下

    Java 编程

    iOS tableView添加group分组

    刿刀

    ios UITableView

    优质的云管平台厂商重点推荐-行云管家

    行云管家

    云计算 云管平台 行云管家

    # drainer binlog 清理机制 源码详解

    TiDB 社区干货传送门

    集群管理 管理与运维

    2022年最新数据库调查报告:当前企业使用率第一的中国数据库是什么?

    墨天轮

    数据库 TiDB oceanbase 国产数据库 达梦数据

    普通单双面板的生产工艺流程:图形转移

    华秋电子

    【立哥】【每日一个小知识】写遗嘱把部分财产赠给第三者,遗嘱有效力吗?

    Lee Chen

    知识

    Zebec完成BNB Chain以及Near链上协议部署,多链化进程加速

    西柚子

    TiDB在转转公司的发展历程

    TiDB 社区干货传送门

    实践案例 版本升级 集群管理 管理与运维

    火山引擎DataTester:A/B测试,让企业摆脱广告投放“乱烧钱”

    字节跳动数据平台

    大数据 AB testing实战 企业号 2 月 PK 榜

    Wallys|QCN9074/QCN6024/ 5G 802.11ax|Does QCN9074-5G module support W56?

    Cindy-wallys

    QCN9074 QCN6024

    Outcome VS. Output:研发效能提升中,谁会更胜一筹?

    LigaAI

    敏捷开发 研发管理 技术管理 产品管理 企业号 2 月 PK 榜

    Serverless Streaming:毫秒级流式大文件处理探秘

    华为云开发者联盟

    云计算 大数据 华为云 企业号 2 月 PK 榜 华为云开发者联盟

    借助 APISIX Ingress,实现与注册中心的无缝集成

    API7.ai 技术团队

    服务注册与发现 服务发现 APISIX Ingress Controller

    信通院发布“2023可信AI案例 知识计算应用优秀案例”, 百度知识中台三大案例入选

    Geek_2d6073

    成都市信息安全等级保护测评机构详细名单汇总

    行云管家

    成都 等保 等级保护 等保测评

    SVFormer:走进半监督动作识别的视觉 Transformer

    Zilliz

    计算机视觉 Transformer

    文盘Rust -- 本地库引发的依赖冲突

    TiDB 社区干货传送门

    开发语言

    GGX发布全新路线图,揭示具备 Layer0 特性且可编程的跨链基建生态

    股市老人

    HIFIVE音加加×筷子科技,内容创作如何再加“筷”一点

    HIFIVE音加加

    音乐 版权 视频创作 AI剪辑

    故障案例:MySQL唯一索引有重复值,官方却说This is not a bug

    GreatSQL

    压电石英晶体谐振器,国产替代需求强劲

    华秋电子

    LeetCode题解:938. 二叉搜索树的范围和,DFS,详细注释

    Lee Chen

    算法 LeetCode

    OceanBase 4.0解读:兼顾高效与透明,我们对DDL的设计与思考

    OceanBase 数据库

    数据库 oceanbase

    自定义HarmonyOS启动页组件

    白晓明

    HarmonyOS 自定义组件 OpenHarmony

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