如何评价接口自动化项目我理想中的接口自动化项目有一套脚本,可以覆盖100%的核心业务场景,可以在线返回高发问题,可以支持人工无法验证的场景,可以throwoutoccasionaloccurrenceproblems可以包括边界场景和异常场景,很容易被遗漏,可以每天定时运行,发布报告,反馈。用实际的“指标量化”:功能测试自动化率=自动化测试用例数/测试用例总数。自动发现bug的比例=自动发现的bug/bug总数。自动发现Bug的效率=自动发现的有效Bug/自动提交的Bug总数。自动执行成功率=自动执行成功次数/自动执行总次数。每周活跃的自动化用例比例=(∑每周执行的自动化测试用例)/(∑每周维度的自动化测试用例)。应用维度自动化代码覆盖率=自动化用例覆盖的代码行数/应用维度总代码行数。现状如何(Situation)我负责的业务是发票中台。数据流简化如下图:发票中台为调用方提供RPC服务,底层有读写MySQL、同步ES、消息队列、异步任务等服务,上游是用户和订单,需要账号,加票资质,订单等资料;下游是财务,将申请表推送给财务开具发票等,发票的接口自动化是很多年前写的,用Java+TestNG+RPC实现了一套本地化的框架。因为人员离职和业务变动,这个自动化在我手里的时候已经没有了。本地标准化的接口自动化项目不能做数据计量,只会统计接口测试平台编写的自动化用例。任务是什么(Task)我给自己定的业绩是在Q2完成95个自动化用例,按照一个标准化的自动化项目实现发票的接口自动化,结合测试环境、测试物料、流水线、精准分析打造个人稳定沉淀,无论是升职还是求职,都可以用来讲故事。什么是行动?(Action)“写自动化用例”最理想的方式是能够记录线上流量,直接转化为自动化用例,修改即可。虽然我们有一个流量录放平台,但是没有和接口自动化平台对接。可惜这种方法不能采用。参考线上流量日志,抓取接口和输入参数,手动转化为自动化用例。参考接口的代码设计,比如controller/provider/sdk,都定义了应用接口,可以知道哪些是覆盖的,哪些是需要补充的。根据输入模板自行构造参数。如果参数太多,创建起来会很麻烦。我主要结合第二种和第三种方式来编写自动化用例。《典型自动化用例》前置步骤:初始化数据,更新订单发票类型为3。预置变量:提供参数化数据。执行步骤:调用订单发票类型修改接口,将发票类型3修改为2,引用预置变量。财务接口:依赖测试资料无法满足,通过Mock返回模板数据,让接口继续往下走。基础断言:接口响应状态码200业务断言:调用订单列表查询接口,使用JSONPath提取响应中的发票类型,断言已改为2场景用例数据准备:创建订单数据通过素材工具写入MySQL数据库。更新MySQL数据:更新订单的部分字段数据,触发binlake,将数据同步到ES,因为提交一个开票申请就是读取的ES数据;从预设变量中获取orderId。提交开票申请:从ES读取订单数据,提交开票申请;从预设变量中获取orderId和userId。查询申请号:根据订单号查询申请号;从预设变量中获取orderId和userId。使用JSONPath提取申请号并将其存储在动态变量中。推送财务:将申请号推送到财务;从动态变量中获取applyId。覆盖更多代码①看代码:找到Java项目中Controller/Provider中的所有接口,分析可用于自动化的接口,设计自动化用例进行覆盖。②代码覆盖:借助jacoco,在自动化用例执行后,跑出代码覆盖,分析未覆盖的代码,增加更多“正常/异常/边界”的自动化用例。那就是精密测试。每天早上8:00自动巡检,定时任务执行用例集;发邮件,抄送给测试组、开发组、leader,让测试、开发、leader知道自动化建设的状态;有问题必须当天解决,并通过邮件回复问题原因;确保当天自动化用例的结果是正确的;第二天继续检查。在流水线的持续集成中,引入了自动用例环节,以自动用例作为测试点,失败可以拒绝。什么是输出(Result)定性:“结合测试环境、测试物料、自动化、流水线、精准测试,我们完成了对环境和业务的稳定检验,以及研发测试的质量准入控制。接口自动化项目用于应用程序的代码覆盖分析。”定量上:功能测试自动化率=自动化测试用例数/测试用例总数“95/100=95%”。自动发现Bug的比例=自动发现Bug/Bug总数“2/53=3.7%”。自动发现Bug的效率=自动发现的有效Bug/自动提交的Bug总数[2/2=100%]。自动执行成功率=自动执行成功次数/自动执行总次数“5396/5621=96%”。每周活跃的自动化测试用例比例=(∑每周执行的自动化测试用例)/(∑每周维度自动化测试用例)“77%”。应用维度自动化代码覆盖率=自动化用例覆盖的代码行数/应用维度代码总行数“39%”。本次Q主要完成核心流程和重要接口的自动化用例,需要继续补充场景用例和异常/边界自动化用例。
