安阳免费搭建自己的网站,网站服务器查询平台,迪庆州建设局网站,合肥市网站建设公司#x1f680; 优质资源分享 #x1f680;
学习路线指引#xff08;点击解锁#xff09;知识定位人群定位#x1f9e1; Python实战微信订餐小程序 #x1f9e1;进阶级本课程是python flask微信小程序的完美结合#xff0c;从项目搭建到腾讯云部署上线#xff0c;打造一… 优质资源分享
学习路线指引点击解锁知识定位人群定位 Python实战微信订餐小程序 进阶级本课程是python flask微信小程序的完美结合从项目搭建到腾讯云部署上线打造一个全栈订餐系统。Python量化交易实战入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统**摘要**面对庞大服务接口群完备的接口测试覆盖和业务上下文场景测试看护才有可能保障产品服务的质量和可信。如果你想低成本实现产品和服务的测试高覆盖和高质量看护这篇文章将为你提供你想要的。 本文分享自华为云社区《基于语义感知SBST的API场景测试智能生成【智能云测】》作者DevAI。
1 背景
据2022年统计数据华为云已发布商用的云服务达到220。以单个服务500接口数量计算已商用的云服务的接口总数高达10W。每接口参数数量更是平均超过20个全组合测试会带来组合爆炸费时费资源是不可完成的任务。为在有限的测试投入下保障有效的问题拦截和测试覆盖通常需要投入专职测试人员人工设计测试逻辑和测试数据组合门槛高依赖业务经验和自动化开发经验。而当前主流的API测试自动生成工具基本采用传统的随机测试、Fuzz测试、基于代码覆盖目标引导的SBST等不感知接口业务语义只能较好地解决单接口测试生成对于多服务、多组件接口功能交互、协议交互时序场景、状态相关场景生成有效性极差误报高效率低下导致用户E2E业务场景看护不足易遗漏功能交互场景、异常调用等测试场景导致现网问题时有发生甚至服务中断。
面对庞大基数的接口群需要完备的接口测试覆盖和业务上下文场景测试看护才有可能保障产品服务的质量和可信。
2 API场景级测试智能生成
总体流程图 Semantic-aware search-based API场景级高度自动生成方法基于正向API接口定义文档和逆向现网、类生产脱敏导流数据挖掘接口操作上下文语义依赖和入参数据约束生成接口操作依赖概率图ODG和接口参数约束字典基于接口定义生成显性测试oracle, 基于脱敏导流数据挖掘生成隐性业务测试oracle。覆盖操作依赖图和字典批量迭代生成实例化测试序列下发SUT测试执行准实时收集测试response并自动判定。依据前序迭代response结果动态修正更新ODG图和参数字典以及测试oracle。实现API场景级测试全自动生成、判定、修正、再生成。
迭代过程中辅助以代码覆盖为导引定向加速测试序列种子变异和优化。全过程极少需要人工介入和确认是一种L4-L5全自动测试生成方法能够实现低成本、低代码、低误报、高质量的覆盖增强测试能力。
术语解读
**ODG图**基于Swagger2.0和OpenAPI3.0.0规范的Rest接口定义文档正向挖掘API接口操作上下文依赖ODG图
**OTPG图**基于现网业务请求流量数据以用户、时间、环境等维度逆向挖掘API接口调用时序业务转移概率图
动态修正 基于动态执行响应码和响应结果实现执行时动态更新修正ODG和参数字典解决静态依赖数据中的错挖和漏挖问题
测试oracle挖掘 自动挖掘测试断言包括响应参数统计分布和接口入参 vs出参的requires、relational、only one、zero one……数值关系或蕴含关系等常见约束关系实现响应异常状态码、返回码、接口定义schema violation自动检测和业务依赖违反自动判定。
2.1 测试设计和执行交互模式变革 AS IS是当前测试设计和执行交互模式多数环节需要人工理解设计文档测试方案设计测试逻辑时序设计、测试数据组合设计、测试判定点设计和测试自动化实现开发且要求参与人员熟知被测产品或服务业务、接口文档熟练掌握测试技术、测试自动化框架、测试自动化方法开发。依据经验先设计、实现、调试、固化基线化测试用例再批量按需执行最后出报告、提单、反馈开发。。。
To Be是API场景测试智能生成技术带来的测试变革之后的交互模式测试人员只需简单配置生成需要的数据来源哪些接口定义哪个时间段的导流数据即可其余测试设计活动、执行活动和判定活动均交由生成工具服务自主挖掘探索完成。最终只需少量人工批量确认结果按需固化、基线化用例以便后续回归测试。 为有效衡量和举证测试生成服务的测试生成质量和生成效率API场景测试智能生成服务提供了有效性、缺陷拦截、覆盖率三大维度的指标和趋势数据
2.2 关键技术
2.2.1 API接口操作上下文依赖ODG图静态挖掘
API接口操作依赖图ODG图反映了接口间的操作时序以及接口间参数依赖。通过遍历ODG图可以生成完备的业务场景以实现业务场景功能交互测试覆盖。因此ODG图的准确性和有效性定了测试生成的质量。
下图为ODG图生成的流程图 本技术采用两种规则进行ODG图的挖掘
基于接口间出参-入参依赖挖掘
参数匹配根据参数名称、类型是否完全一致来建立依赖关系
子串匹配参数A的名称是参数B名称的子串
分词匹配和编辑距离匹配 存量接口中存在大量接口的参数命名不符合规范或关键信息在url资源路径中需通过分词、编辑距离等方式来发现潜在的关系
参数黑名单部分无实际业务意义但多个接口都包含的参数如page分页信息等采用添加黑名单的方式过滤
基于对同一资源对象的CRUD操作语义顺序依赖挖掘
符合restful规范Post-Get-Put-Delete的挖掘
不符合restful规范对URI信息构建方法映射如“add-”- “Post”, “query/get-” - “Get”, “remove-” - “Delete” 对URL的路径分词识别是否对同一资源的操作以实现CRUD语义的依赖挖掘 以真实业务为例生成的ODG图
2.2.2 API接口操作时序上下文依赖OTPG图挖掘 OTPG图是对业务场景挖掘的有效补充我们对脱敏后的导流数据以用户/时间/环境等维度按API接口操作时序及接口间出入参的取值匹配计算转移概率生成OTPG图。
2.2.3 动态修正技术
在测试生成任务执行过程中根据场景测试序列sequence实例的结果反馈动态更新ODG图和参数字典更正错挖和漏挖进一步提升生成成功率和场景序列的成功请求长度。
Top-Down: 分解请求不通的sequence成多个sub sequence直到sub sequence请求成功并更新参数字典
Bottom-Up: 重组请求成功的sub-sequence和字典取值实现更长长度的sequence的请求成功 动态修正示意图
基于动态修正技术我们在ICSE 2022发表了题为《MOREST: Model-based RESTful API Testing with Execution Feedback》的会议文章。
2.2.4 测试Oracle挖掘
鉴于随机参数的生成效率低下我们引入参数约束提升参数生成效率。同时为了验证返回结果我们引入Oracle挖掘。参数约束是指请求参数间存在的约束关系如参数A要大于参数BOracle是指对于返回结果的约束如request中的某个参数值等于response中某个参数值。
常见的约束类型如下 API测试用例生成的在测试oracle挖掘的流程示意图 参数约束Oracle挖掘示意图
现有全自动生成方案只能探测非业务功能相关的显性问题例如黑盒oracle应用crash,白盒oracle 空指针、内存溢出等问题或者只能通过对比测试的方法来判定结果不能解决业务相关复杂oracle的生成问题因此当前对于业务相关oracle仍需大量人工投入设计、补全。
该模块旨在解决测试oracle的生成难题基于接口定义文件和现网脱敏导流数据实现接口内/间2-wise 乃至n-wise参数蕴含、数值关系等约束挖掘(隐性oracle)以及状态码、schema violation等显性测试Oracle生成和自动判定。
3 小结
面对云化产品版本的快速迭代应用场景日益丰富产品功能渐趋复杂完全基于经验人工设计的接口测试在云化产品质量保障上越来越捉襟见肘。因此基于接口文档和现网流量数据的智能API测试生成技术应运而生实现了单接口与多接口业务场景的双覆盖做到真正帮助测试人员提高工作效率并有力保障了云化产品质量。
该生成服务的应用前景 对于小规模测试团队或无专职测试人员的全功能团队或测试小白可基本实现少人参与或无人参与的无代码化高度自动化Rest 接口正常场景级测试用例生成自动化执行和判定。 对于有专职测试人员、测试专家的测试团队可低成本提升测试场景覆盖率、缺陷拦截效率减少测试设计投入。 可以正常场景API测试基础上实现异常场景 可靠性测试和并发场景性能压力模型的全自动化生成完全替代现有接口fuzz测试实现接口全场景测试无代码化。 点击关注第一时间了解华为云新鲜技术~