自动化测试方法论(管理篇)
引言
如果你是测试的负责人,是否可以识别在哪些场景上应用自动化测试?工作规划、开展需要考虑哪些问题?如何阐述工作价值及获取资源支持? 基于这些问题,我们围绕自动化工作的理解、实施策略的考虑、应用价值评估等方面来探讨。
1、自动化测试种类及应用场景
自动化测试
通过计算机程序来模拟人或外部系统和被测系统/程序的交互,设置断言来判断系统/程序的质量(属性)表现是否符合预期。
应用场景:
手工用例自动化,代替回归测试的重复劳动。
模拟手工无法实现的场景,如性能测试、可靠性测试
我们从测试的目的,即质量属性验证的角度、测试的对象,即测试行为的施加主体、应用场景,即测试工作的开展阶段来描述他们之间的关系。
系统结构示例
2、自动化测试实施策略
了解了自动化测试的应用场景之后,接下来要考虑的是这个工作如何开展呢,如何选取测试系统、测试场景(主要围绕功能测试探讨)。
2.1 系统评估
自动化用例的价值体现在可重复的测试应用,即:人工用例执行成本*N(版本应用次数)-自动化投入成本>0 产生价值,且 N 越多,价值越大。基于上述原理,在系统和业务的选择上需要考虑
选择的系统在较长时间范围内都有迭代的需求,项目周期长
自动化场景选择上优先做场景核心业务,即在每轮测试中都可能会重复测试的用例
如下情况下的投入会导致自动化用例有效性降低,维护成本增加
UI 改版,如有 UI 改版计划,不适宜做 UI 自动化
系统拆分,如有系统拆分导致接口变化的计划,不适宜做接口自动化
逻辑变更,如业务需求在迭代阶段,功能尚未稳定,该业务需求不适宜开展自动化
2.2 设计策略
有限的测试资源如何投入到无限的自动化实现中去?在业务场景的选取和测试类型投入上要看投入产出比。
2.3 工具选型
[工欲善其事,必先利其器]
根据选定的测试场景和测试类型,来选用或者开发相应的测试工具。在工具/方案选型时需要关注如下三个方面:自动化开发效率、运行效率、维护效率。
以接口测试举例,工具可分为
传统型
针对不同的测试类型提供标准化的输入及流程处理,返回特定的结果格式,对非标准化的格式提供 API 或自定义脚本支持。如:JMeter 的 xxSample、关键字驱动模式
优点:
模式化处理,封装了公用服务,屏蔽底层处理,关注业务自动化实现
缺点:
随着业务/用例规模的扩大和系统演进,维护工作量变大
智能型
①录制生产系统行为在测试环境回放来回归,可以基于日志或标记分析调用链路、业务场景
②机器学习错误模式,自动判断行为结果的正确性
优点:节省了人工自动化脚本设计的工作量、以生产行为更新案例脚本,人工维护工作量少
3、缺点:
①不能识别业务(流程)行为的完整性和正确性(单纯的录制回放)
②测试过程会有比较多的 mock 操作,某些环节校验上会“失真”
苏宁方案
测试管理:一站式研发 DevOps 平台,支持研发(测试)过程管理、自动化流水线(代码检查、打包构建、集成测试、发布)
自动化 SAT:支持接口、UI(WEB、APP)关键字驱动设计
流量录制回放:录制生产接口调用,生成测试脚本,在测试环境回归验证。(方案预研阶段)
精准测试:提供代码覆盖率度量、测试案例和代码关联录制、代码变更测试案例推荐
2.4 技术栈规划
根据系统架构/业务特点,确定合适的自动用测试开展类型,及所需技术/工具支持,自动化方案选型。
根据测试类型及技术栈划分培养方向和能力等级,建设人才梯队
2.5 团队职能
为有效支持自动化工作开展,需要规划团队职能领域、分工要求。
角色分工
技术架构
技术架构技术选型、方案优化、公共服务/组件开发。
设计开发
设计开发基于已有的技术方案实现测试用例的自动化设计,在版本测试中应用。
团队模式
专职团队自动化
接收业务团队的自动化需求,开发实现。优点是开发效率高,缺点是业务响应不及时,不便根据业务痛点提供针对性方案。
自动化资源池(虚拟组织)
培养认证具备自动化技能的人员,承担自动化案例设计工作。
全员自动化
优点是自动化实现响应快,了解效率提升痛点,业务结合度高。适用技术栈难度低(便于推广),或者成员总体技能水平高的情况。
评估策略
在以上维度考虑时没有标准答案,要综合考虑应用成熟度和技术栈复杂度、团队成员能力、团队规模等,在不同的阶段考虑不同的方式。
2.6 执行推动
在具体工具开展的时候,需要制定目标、数据量化、阶段评估、及时反馈(投入了多少,收益了多少)。
参考如,
1)目标计划
2)阶段评估
3、自动化测试应用价值评估
3.1 能力评价
几个指标维度
举例,
一场战役(版本)准备的 10 只子弹(自动化用例),在开战时用了 5 只(执行率),其中有 3 只能正常发射(通过率),有 2 只枪击中了目标(代码覆盖)。
还有 5 只为什么没执行?可能是战斗结束了,但是子弹没打完,执行效率低
还有 2 只为什么不能正常发射,可能是在仓库没维护,受潮哑火了,稳定性低
为什么只有两只击中目标,可能是子弹发射后没到目标就掉下来了,质量差
由此可见,百分之多少的自动化用例覆盖,并不能说明什么问题。
3.2 收益评估
价值评估的几个方向,说清楚这些数据,就可以回答本文开头提到的价值。
1、 投入人员减少多少
2、 测试速度快了多少
3、 交付吞吐高了多少
4、 生产质量提升多少
举例 1:版本数据周期总结
举例 2:目标数据周期总结
数据的指标分析需要我们在研发支撑平台建设的过程中考虑、规划。
4、结语
如果一个自动化工作/项目准备开展,需要回答三个问题(也适用于对已经开展的工作进行回溯)
1、为什么要做,解决什么痛点
2、如何开展,实施策略的可行性
3、要达到什么价值,如何评估
版权声明: 本文为 InfoQ 作者【薛飞】的原创文章。
原文链接:【http://xie.infoq.cn/article/db526035c2de8d78852928eda】。文章转载请联系作者。
评论