API全场景零码测试机器人,华为云发布ATGen in CodeArts TestPlan
摘要:华为云ATGen现开放对外邀测,欢迎预约。
本文分享自华为云社区《API全场景零码测试机器人,华为云发布ATGen in CodeArts TestPlan》,作者:华为云头条 。
众所周知,软件服务及组件之间的交互主要依赖大量的API接口。
以华为云300多个商用云服务为例,平均每个服务含500+接口,接口总数高达10万+,接口调用上下文业务场景超乎想像的错综复杂。
如何保障API测试场景尽量完备、不遗漏、不引起严重现网问题?这是当前人们遇到的经典难题,而其中常见的瓶颈主要如下:
- 当前接口测试设计依赖人员经验,测试数据构造手段单一,难以反应现网真实应用数据分布场景;
- 面对成千上万的API接口,可构成上万甚至十几万的操作路径,E2E场景测试编排工作量巨大;
- 现有的API接口测试生成工具,基本采用Fuzz测试+基于代码覆盖目标引导的SBST,或基于现网数据的单接口回放,不感知接口业务上下文,对于多接口功能交互场景,生成有效性较差且效率低。
那么,华为云是如何破解这些问题的呢?
华为云ATGen:感知API接口上下文,自主生成API全场景测试,变革人机交互模式
ATGen (APITestGenerator) 是一种基于上下文感知(Context-aware)的API场景级零代码自主测试生成服务,实现应用API场景级测试全自动设计、生成、执行和判定,整个过程无需编写一行代码。
传统的测试设计和执行交互模式,需要人工理解设计文档、编排测试方案、测试自动化开发,这要求参与者熟知产品或服务业务及接口文档,熟练掌握测试技术、测试自动化框架、测试自动化代码编写。
如今,在自主设计、自主生成、自主执行、自主判定的AI算法加持下,API场景级测试的人机交互模式已发生了巨大的转变。

智能算法加持下ATGen人机交互模式
在测试过程中,机器自主解析文档和数据,自动生成API场景级操作依赖ODG(OperationDependencyGraph)图,测试人员只需做适量修订,机器便可自主探索遍历ODG图执行,并同步完成结果的判定和报告的生成,测试人员只需按类批量确认结果。

华为云ATGen:亮点技术和业务价值
华为云ATGen基于正向API接口定义文档,自动挖掘API测试上下文操作依赖图(ODG),探索遍历ODG自主生成API测试序列,实时构造并下发API测试请求,判定API测试响应结果,动态修正ODG图,优化下一轮生成。

华为云ATGen六大关键特性:
- 支持基于Rest API接口定义Yaml文档零码全自动智能测试生成;
- 感知Rest API 接口调用上下文:解析接口定义Yaml文档,挖掘API接口间出参与入参的上下文传参依赖,以及CRUD增删改查依赖,生成接口操作序列依赖图ODG;
- 自主探索遍历和修正ODG:探索遍历ODG批量生成测试序列,自动下发执行,依据响应反馈动态修正ODG图;
- 13种接口测试数据生成方法:支持接口上下文自动传参、复用字典取值、enum值、example值、example变异值、边界值、中间值、随机值等13种测试数据生成方法;
- 自动挖掘生成测试判定点:基于接口定义和状态码生成显性测试判定点;
- 测试结果聚类和批量高效确认:支持按照业务返回码、相似子序列,参数生成类型对测试结果分层聚类,便于测试人员按类别批量确认失败,并一键提单;
*具体技术细节可参考发表在ICSE, ASE的顶会论文【1,2】。
华为云ATGen业务价值与应用前景:
- 快速构建接口和功能质量防护网:对于新成立的产品服务团队,或无专职测试人员的全功能团队,可实现少人参与或无人参与的零代码全自动接口全场景级测试,快速构建起接口级和功能场景级测试基础质量防护网;
- 低成本、高覆盖:对于有专职测试人员、测试专家、成熟度较高的测试团队,可以极大提升测试设计效率, 低成本实现更高的测试场景覆盖率和缺陷拦截率;
- 流水线质量门禁加固:可与现有流水线集成,加固现有冒烟测试门禁,进一步拦截业务逻辑深度缺陷;
- 面向接口的全场景全属性测试无码化:可以在API正常场景测试基础上实现异常场景 (可靠性测试)和并发场景(性能压力模型)的全自动化生成,完全替代现有接口fuzz测试,实现接口全场景测试零代码。
华为云ATGen在华为内部已规模部署30+产品服务日常应用,按三个维度来度量业务应用效果:
- 生成有效性:包括接口请求成功通过率,请求成功的最长序列长度和长度分布,业务采纳并基线化沉淀的用例数等;
- 缺陷探测数:缺陷拦截能力,即发现产品服务缺陷的问题数及误报率;
- 覆盖率:包括白灰黑盒覆盖,即代码覆盖、接口及参数组合覆盖、业务场景覆盖等。

华为内部三个典型的业务应用场景实践
- 业务应用场景1
产品形态:存储管理&控制服务类云化产品,北向服务化,南向控制嵌入式存储设备
测试团队规模:50+人
北向Restful接口总数:2300+
应用前现状:团队新成立,缺乏接口和功能测试自动化防护网
应用模式:从零快速构建起接口测试和功能测试防护网测试用例
应用效果:共发现350+个接口存在缺陷,覆盖3大类缺陷,API接口级请求有效性可达80%+,误报率10%。

- 业务应用场景2
产品形态:运营商&企业网络保障&智能运维类云服务,公有云/私有云部署
测试团队规模:50人
北向Restful接口总数:10000+
应用前现状:8000+接口&功能测试用例
应用模式:对现有测试用例的覆盖增强补充
应用效果:场景测试覆盖提升30%,新发现30+深层业务逻辑问题,样例如下:

- 业务应用场景3
产品形态:XX工具类云原生服务
测试团队规模:全功能团队,无专职测试
Restful接口总数:1300+
应用前现状:10000+接口测试用例
应用模式:将ATGen集成到工具服务alpha、beta环境流水线,build完成及回归测试任务之后自动触发生成任务检测是否有失败接口,作为alpha、beta门禁加固
应用效果:补充发现60+个接口缺陷,API接口测试生成有效性可达82%。
面对云化产品版本的快速迭代,应用场景的日益丰富,产品功能渐趋复杂,完全依靠人员测试经验来保障质量变得越来越困难,自主生成全场景功能测试机器人ATGen应运而生,可实现低成本、零代码、高覆盖、低误报的API全场景测试,持续为开发者提供优质服务。
【1】“MOREST: Model-based RESTful API Testing with Execution Feedback”,ICSE ’22,
【2】“Industry practice of automatic RESTful API testing”, ASE’22
API全场景零码测试机器人,华为云发布ATGen in CodeArts TestPlan的更多相关文章
- 华为云发布冷启动加速解决方案:助力Serverless计算速度提升90%+
摘要:本文介绍了华为云对冷启动优化这一业界难题的探索之路,创新提出了基于进程级快照的优化方案. 作者信息-- 子游:华为元戎高级工程师 平山:华为云中间件 Serverless 负责人 琪君:华为元戎 ...
- 华为云发布分布式编译构建系统CodeArts Build
摘要:2月14日,华为云发布分布式编译构建系统CodeArts Build,旨在支撑企业实现高效的软件开发,缩短产品上市周期,帮助企业的软件产品快速形成关键竞争力. 本文分享自华为云社区<唯快不 ...
- 华为云发布桌面IDE-CodeArts
摘要:华为伙伴暨开发者大会2022,发布华为云桌面IDE-CodeArts. 本文分享自华为云社区<华为云发布桌面IDE-CodeArts,让连接更简单.编码更智能>,作者: Huawei ...
- 产品质量管理利器,华为云发布CodeArts Defect缺陷管理服务
摘要:近日,华为云CodeArts Defect缺陷管理服务正式上线,提供结构化缺陷跟踪流程和标准化的质量度量模型. 本文分享自华为云社区<产品质量管理利器,华为云发布CodeArts Defe ...
- MongoDB一次节点宕机引发的思考(源码剖析)【华为云分享】
目录 简介 日志分析 副本集 如何实现 Failover 心跳的实现 electionTimeout 定时器 业务影响评估 参考链接 声明:本文同步发表于 MongoDB 中文社区,传送门:http: ...
- 华为云CodeArts Artifact,5大特性守护制品质量与安全
摘要:2023年2月23日,华为云CodeArts Artifact制品仓库服务正式上线,目标进一步赋能企业伙伴与开发者,实现软件作业中可信制品生产与应用活动快速落地,提高软件交付效率与质量. 本文分 ...
- 乘风破浪,遇见华为鸿蒙智能终端系统(HarmonyOS 2),打造面向全场景的分布式操作系统
什么是鸿蒙智能终端系统(HarmonyOS 2) HarmonyOS 是新一代的智能终端操作系统,为不同设备的智能化.互联与协同提供了统一的语言.带来简洁,流畅,连续,安全可靠的全场景交互体验. ht ...
- 昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者
摘要:本文带大家快速浏览昇思MindSpore全场景AI框架1.6版本的关键特性. 全新的昇思MindSpore全场景AI框架1.6版本已发布,此版本中昇思MindSpore全场景AI框架易用性不断改 ...
- 一图看懂华为云DevCloud如何应对敏捷开发的测试挑战
作为敏捷开发中测试团队的一员,在微服务测试过程中,你是不是也遇到同样困惑:服务不具备独立验证能力.自动化用例开发效率很低等? 华为云DevCloud API全场景测试技术来支招~围绕API的全场景,打 ...
- #PHP# 华为云 API 方式发送短信
使用给华为云 消息 服务 API 方式发送短信 代码来自华为云,已通过测试 <?php /** * 华为云发送短信示例代码 * 本段代码需要使用自己的配置信息才能正常运行,出配置信息外,不需要改 ...
随机推荐
- 可靠消息最终一致性【本地消息表、RocketMQ 事务消息方案】
更多内容,前往IT-BLOG 一.可靠消息最终一致性事务概述 可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)一定能够接收消息并处理事务成功,此方案强调 ...
- springboot jpa---->总结一下遇到的问题
Native Query throw exception dto code import lombok.Value; @Value public class IdsOnly { Integer id; ...
- vue-router面试题
1.vue-router怎么重定向页面? 答:路由中配置redirect属性 2.vue-router怎么配置404页面? 答:path: '*' 是对的 但是应该放在最后一个 3.切换路由时,需要保 ...
- VBA GET POST HTTP VBA网络爬虫 最新Excel自动获取股票信息源码 EXCEL自动获取网络数据 最新VBA自动抓取股票数据源码
最新Excel自动获取股票信息源码 EXCEL自动获取网络数据 最新VBA自动抓取股票数据源码 通过接口获取股票数据内容的主要优点包括以下几点: 实时性高:通过访问股票数据接口,可以实时获取到股票的实 ...
- Flask框架使用蓝图划分目录、g对象、使用数据库连接池链接数据库
目录 一.使用蓝图划分项目目录 1.蓝图的介绍 2.蓝图的使用 二.介绍flask框架的g对象 1. g对象是什么? 2. 使用代码再次解释g对象 三.使用数据库连接池链接数据库 1. 引入数据库连接 ...
- 每日复习------main()方法以及对象的初始化顺序
由于 Java 虚拟机需要调用类的 main()方法,所以该方法的访问权限必须是 public,又因为 Java 虚拟机在执行 main()方法时不必创建对象,所以该方法必须是 static 的,该方 ...
- Java设计模式 —— 适配器模式
9 适配器模式 9.1 结构型模式 结构型模式(Structural Pattern) 关注如何将现有类或对象组织在一起形成更强大的结构.结构型模式根据描述目标不同可以分为两种: 类结构型模式:关心类 ...
- day115:MoFang:种植园我的背包&种植园道具购买
目录 1.我的背包 2.道具购买 1.我的背包 1.在种植园点击背包按钮打开我的背包 在种植园打开背包,orchard.html,代码: <!DOCTYPE html> <html& ...
- MySQL(十二)索引使用的情况分析
索引使用的情况分析 数据准备 创建表student_info.course CREATE TABLE `student_info` ( `id` int NOT NULL AUTO_INCREMENT ...
- JUC(三)集合的线程安全
目录 集合的线程安全 list集合线程不安全演示 Vector解决 Collections.synchronizedList JUC 解决方案:CopyOnWriteArrayList HashSet ...