《3-万锐媛- ATGen-上下文感知的API全场景零代码自主测试生成.pdf》由会员分享,可在线阅读,更多相关《3-万锐媛- ATGen-上下文感知的API全场景零代码自主测试生成.pdf(35页珍藏版)》请在三个皮匠报告上搜索。
1、CodeArt TestPlan:ATGen-上下文感知的API全场景零代码自主测试生成2023 深圳站万锐媛12年获清华大学EE博士学位,曾赴UC Berkeley EECS访问学者。16年加入华为至今,从事智能辅助测试技术探索、工程工具落地规划、设计,带领团队聚焦智能辅助测试设计、测试自动生成,多目标精准回归,测试失败智能定界等方向,成功孵化多项智能测试服务并规模落地应用,多次获得华为总裁奖、金牌团队、海盗派重大测试技术突破奖等。获得专利5项,在ICSE、ASE等A类国际会议发表论文,担任ICST、ISSRE、TiD、NJSD等会议演讲嘉宾华为测试技术专家2023 深圳站目录CONTENT
2、SAPI测试生成背景和SOTA01 ATGen测试设计自主生成新模式02 自主测试生成关键技术03 华为内部实践场景和应用效果04 总结05 2023 深圳站API测试生成背景和测试生成背景和SOTA2023 深圳站API接口测试背景和痛点华为XXX产品接口用例和接口场景级用例设计工作量样例接口多,华为云商用云服务接口数10W+,测试设计工作量大接口测试痛点参数多,平均10+参数/接口,组合爆炸易遗漏,接口功能交互和性能模型设计,依赖人经验,业务场景覆盖不足误报高,现有接口fuzz工具不理解业务,不感知上下文,生成有效性低2023 深圳站上下文感知的API接口黑盒测试生成学界state-of-
3、artRestCT基于API 定义挖掘操作序列约束,利用组合测试方法生成场景级API测试生成有效性可达56%不考虑 依赖生成不考虑动态执行反馈两者均考虑Restler基于Rest定义考虑上下文接口依赖和动态执行反馈fuzzing代码覆盖较单接口fuzzing可提升2倍以上RESTTESTGEN:Automated Black-Box Testing of RESTful APIs,ICST2020RESTler:stateful REST API fuzzing,ICSE2019Combinatorial Testing of RESTful APIs,HuayaoWu,Changhai Ni
4、e,ICSE2022Step1.测试序列生成:基于Spec定义中的资源对象层级和CRUD语义构造sequence约束Step2.测试数据生成:基于受限NLP解析参数约束数据生成方法RestTestGen 基于API 定义挖掘操作序列上下文依赖,生成场景级API正常&异常测试生成有效性30%正常测试有效性30%异常测试效果孤立单接口测试生成-多接口上下文交互测试生成安全/可靠性测试生成-功能验证生成大大缩短大大缩短500击中时间击中时间快速提升代码覆盖快速提升代码覆盖接口调用上下文依赖接口调用上下文依赖+动态执行反馈动态执行反馈2023 深圳站CodeArt-TestPlan 华为云一站式测试平
5、台待测软件需求IPD-PTM质量规范和要求测试经验库测试工程方法测试分析和评估自动化&测试执行测试分析&质量评估 沉淀华为30年高质量测试方法,融入IPD精髓的测试设计、自动化、测试管理实践,支持大规模、高并发、全场景的自动化测试生成、执行和评估 应用规模:4万+测试&开发活跃用户,10亿+用例管理,支撑每年15亿+例次自动化执行待测软件版本xxn待测软件版本xx2场景分析功能设计特性设计逆向网上问题待测软件版本xx1测试设计中心RBT风险分析RBT风险分析启发式测试设计启发式测试设计数据驱动组合测试用例生成数据驱动组合测试用例生成测试用例库(产品基线/版本/分层分级管理)功能测试待测软件版本
6、xx1专项测试待测软件版本xx1用户场景测试待测软件版本xx1软件版本xx1发布部署在线测试待测试的软件版本缺陷分析与质量持续改进开发构建需求列表失败定位分析/质量大屏沉淀华为30年高质量测试方法,融入IPD精髓的测试设计和测试管理实践基于风险的启发式策略模型数据驱动组合生成用例行业测试设计模板千级节点秒级加载测试报告环境自动申请环境自动申请测试用例自动分块测试用例自动分块用例并行下发执行用例并行下发执行测试结果自动上报测试结果自动上报性能测试性能测试安全/韧性测试安全/韧性测试可靠性/故障注入测试可靠性/故障注入测试兼容性测试兼容性测试用户场景测试用户场景测试体验测试体验测试安装部署测试安装
7、部署测试容灾演练容灾演练测试覆盖统计度量测试覆盖统计度量缺陷统计度量缺陷统计度量执行率/通过率统计执行率/通过率统计测试质量评估测试质量评估测试报告生成测试报告生成在线拨测在线拨测灰度验证灰度验证全链路压测全链路压测测试环境大规模分布式测试调度中心关键技术:7*24大规模高并发持续自动化测试技术环境动态申请调度技术测试用例自动分块技术技术指标:万级用例下载1分钟万级用例调度5分钟万级用例结果回填Get-Put-Delete非规范“方法”自动映射“add-”-”Post”;“remove-”-”Delete”传参依赖传参依赖依赖依赖依赖点:接口操作边:操作依赖2023 深圳站关键技术1.2-基于
8、应用系统log数据挖掘用户真实接口操作转移概率OTPGOperation-Transmission-Probability-Graph挖掘pair-wise操作序列转移概率图,采用贝叶期条件概率传播重组、合并生成1)测试序列比例 2)每个序列中的参数取值比例 3)序列中接口间参数动态传递脱敏Trace/log用户操作转移概率图OTPG逻辑序列推导融合参数比例参数依赖挖掘高保真动态仿真压测模型2023 深圳站关键技术1.3-遍历ODG+OTPG图,多种参数生成方法生成测试实例If 求全Then:求并集If 求准Then:求交集基于接口定义挖掘的操作依赖图ODG基于导流的操作转移概率图OTPGOD
9、G+OTPG测试参数实例生成方法逻辑Sequence实例Sequence2023 深圳站关键技术2-执行时动态更新ODG,更正错挖和漏挖,提升生成成功率和成功请求序列长度动态执行过程中,依据前序sequence的执行结果,动态更新ODG和参数取值字典Top-Down:分解请求不通的sequence成多个sub-sequence,直到sub-sequence请求成功,并更新参数字典Bottom-Up:重组请求成功的sub-sequence和字典取值,实现更长长度sequence的请求成功本工作发表于ICSE2022“MOREST:Model-based RESTful API Testing w
10、ith Execution Feedback”2023 深圳站关键技术3-参数约束挖掘&Oracle挖掘高阶约束类型表达高阶约束类型表达RequiresP1p2参数p1存在依赖于参数p2存在Arithmetic/Relationale.g.P1+p2p3Or(或,异或)Or(p1,p2)P1,p2pn中有一个或者多个存在OnlyOne(互斥)OnlyeOne(p1,p2pn)P1,p2pn中有且只有一个存在AllOrNoneAllOrNone(p1,p2,pn)p1,p2,pn全真或全否ZeroOrOneZeroOrOne(p1,p2,pn)p1,p2,pn中只有零个或一个存在complex包
11、含以上多种关系历史流量数据API接口定义文档参数数据聚合预处理频繁项集挖掘因果推断、频繁项集挖掘、贝叶斯网络测试Oracle接口间2-wise入参依赖入参or 出参pair入参vs入参pair入参vs出参pair或 出参vs出参pair作用于参数字典结果确认分析流迭代生成&执行流失败Group专家标记真假失效校正Oracle已支持自动生成的Oracle类型:状态码、接口定义Schema Violation、pairwise 数值关系(,)、逻辑关系、依存关系等执行结果基于导流数据的参数约束挖掘结果示例2023 深圳站关键技术4:基于GA和代码覆盖反馈的测试用例种子筛选基于Jacoco结合部分自
12、研的动态插桩的覆盖收集基于代码覆盖反馈及GA算法的种子用例优选重要实验发现和应证:1、基于变异和GA的SBST相对于纯随机测试,效率和覆盖提升明显,保守可至少提升20%以上2、但相较于基于语义和文法依赖的测试生成,覆盖无明显提升,且效率提升不显著代码覆盖趋势 GA+ODG vs ODGonly vs 随机生成类覆盖函数覆盖2023 深圳站19关键技术5:执行结果分层聚类,提升基线化用例和失败提单效率19成功序列聚类失败序列聚类Operation 1Operation 2Operation 3500200200Operation 1Operation 2Operation 3200200200O
13、peration 1Operation 2Operation 3500Operation 4400200200Operation 1Operation 2Operation 3200200Operation 6500Pattern 123400Diff聚类2023 深圳站华为内部实践场景和华为内部实践场景和应用效果应用效果2023 深圳站生成效果度量指标设计2023 深圳站华为内部实践效果-生成有效性 正向ODG、逆向导流OPTG API接口时序依赖图挖掘准确率可稳定在90%以上,成功请求测试序列最长长度可达58 基于正向Spec文档only生成接口级200成功击率可稳定在75%-100%无效
14、请求(400)比例可低于90%生成用例序列样例指标维度值指标解释(总共指标维度值指标解释(总共68个接口)个接口)API有效覆盖比例90.6%用例结果的返回码击中2xx、5XX的API/所有API数API成功比例81.3%用例结果的返回码击中2xx的API/所有API数成功序列最长的长度11+成功的序列中API个数最大的值成功序列长度大于1的序列个数2500+序列长度大于1的成功序列个数发现缺陷接口数10报5XX的接口数XXX服务XX特性32个接口,跑0.5小时结果含单边&多边依赖场景2023 深圳站华为内部实践效果-缺陷检测能力华为XXX云化产品 X服务全量240个接口试点,共发现86个接口
15、存在问题,覆盖3类缺陷,低误报(93%代码单元覆盖:测试代码覆盖较随机生成可绝对提升2035%,较人工设计可相对增加8%21%华为云计算XXX 服务试点2023 深圳站应用场景产品形态产品形态:云化存储管控类产品,北向服务化,南向控制嵌入式存储设备测试团队规模测试团队规模:50+人北向北向Restful接口总数接口总数:2300+应用前现状应用前现状:团队新成立,缺乏接口和功能测试自动化防护网应用模式:应用模式:从零快速构建起接口测试和功能测试防护网测试用例应用效果:应用效果:以某服务以某服务240个接口为例,生成个接口为例,生成8000+测试用例测试用例共发现共发现86个接口存在缺陷个接口存
16、在缺陷覆盖覆盖3大类缺陷大类缺陷误报率误报率10%应用场景1新成立团队快速构建接口全场景质量防护网应用场景2对现有测试覆盖的低成本增强补充产品形态:运营商产品形态:运营商&企业网络运维保障类企业网络运维保障类服务,公有云服务,公有云/私有云部署私有云部署测试团队规模:测试团队规模:50人人北向北向Restful接口总数:接口总数:10000+应用前现状:应用前现状:8000+接口接口&功能测试用例功能测试用例应用模式:应用模式:对现有测试用例的覆盖增强补充,减少现网问题应用效果:应用效果:补充沉淀基线测试用例补充沉淀基线测试用例3000+新发现新发现30+深层业务逻辑问题,如深层业务逻辑问题,
17、如业务上下游数据处理逻辑不一致等业务上下游数据处理逻辑不一致等问题问题应用场景3Build-in 流水线门禁加固产品形态:云原生服务,产品形态:云原生服务,XX工具类服务工具类服务群群测试团队规模:全功能团队,无专职测试测试团队规模:全功能团队,无专职测试Restful接口总数:接口总数:2000+应用前现状:应用前现状:23000+接口和功能测试用例接口和功能测试用例应用模式:将应用模式:将ATGen集成到工具服务集成到工具服务alpha环境流水线,环境流水线,build完成及回归测试任务完成及回归测试任务之后自动触发生成任务检测是否有失败接口,之后自动触发生成任务检测是否有失败接口,作为作
18、为alpha门禁加固门禁加固应用效果:应用效果:2000+个接口中额外发现个接口中额外发现35个接口缺个接口缺陷,包括指针问题和数据库陷,包括指针问题和数据库I/O问题问题等等2023 深圳站总结总结2023 深圳站总结及应用前景展望1.对于小规模测试团队或无专职测试人员的全功能团队或测试小白,可基本实现少人参与或无人参与的零代码、高度自动化Rest 接口正常场景级测试用例生成,自动化执行和判定。2.对于有专职测试人员、测试专家的测试团队,可实现低成本和广覆盖,提升测试场景覆盖率、大幅减少测试设计投入3.可以正常场景API测试基础上替代传统单接口fuzz,实现异常场景(可靠性测试)和并发场景(
19、性能压力模型)的全自动化生成,实现接口全场景测试无代码化应用前景 基于用户旅程生成 基于swagger接口定义生成 感知Rest API接口调用上下文 自动挖掘Rest API接口参数依赖 自动挖掘测试Oracle判定点 成功/失败用例聚类 一键生测试文本和脚本基线化关键特性业务价值 无代码低成本低门槛 自主探索E2E链路高覆盖 深度逻辑缺陷发掘 功能、性能、可靠性全场景 10+种数据生成方法 低误报感谢聆听CSDN全球最大的中文开发者社区平台CSDN全球最大的中文开发者社区平台CSDN创立于1999年全球编程类网站排名第7(来源:Similarweb 2023.04)注册用户超过4300万,覆盖90%的中文开发者新媒体矩阵粉丝数量超过3100万超过1000家企业客户和合作伙伴目前公司员工近800名,分布在北京、长沙、上海、深圳、杭州、成都等城市,并在美国硅谷常设办事处旗下品牌旗下品牌专业中文IT技术社区:CSDN.NET多媒体专业出版:新程序员开发者专属移动APP:CSDN APP代码托管协作平台:GitCode代码工具协同平台:InsCodeIT人力资源服务:科锐福克斯丨八爪网络高校IT技术学习成长平台:高校俱乐部