深入了解自动化:自动化测试的流程,尊重流程避免踩坑

2020-11-19 10:00:00
木头人
转贴:
知乎
6180
摘要:自动化测试不是个简单的任务,而是个项目。作为项目就必须有其流程与规范。

一、项目启动阶段

1、可行性分析

评估项目当前是否合适启动自动化测试?如果项目不适合,需要找出不适合原因与上级领导沟通。自动化的启动时间的切入点很关键,切入点时间可以分散到模块,先稳定的模块先开展自动化。

2、抽样分析

通过可行性分析后需要进行抽样分析,也就是写几个自动化测试脚本,通过实际案列再次看看自动化测试工作是否能顺利开展,也可以在此过程中发现部分技术上的疑难或是否存在致命的问题,在这过程中也可以发现有那些需要开发、测试、运维、产品配合或改进的地方。

有经验的工程师通过抽样分析,能对自动化测试工作开展有个大体的轮廓,为后面的工作开展打下基础。

抽样分析方式推荐采用自动化冒烟测试抽样,也就是将实现冒烟测试用例作为抽样的样本,将系统的手工冒烟测试转换为自动化测试用例,自动化测试的用例数量需控制在5个左右,这样既有成果又贴合实际。

注意:抽样分析时不要搭建完整的测试框架,可以只线性的实现自动化测试用例,它的主要工作还是抽样分析。

二、自动化测试准备阶段

1、自动化测试需求筛选与评审

测试需求筛选主要时明确自动化测试的的目标,整理出需要实现自动化测试的业务需求,以及自动化测试深度。需求分析完成后要对其内容进行评审,只有项目组评审通过后才能有效。
UI自动化测试不可能做到100%覆盖,所以我们主要从实际的业务场景方面考虑,首先需要贴合用户使用的正向场景,然后再筛选出重要的逆向场景。

API自动化测试,需要对整个系统的API进行整理,根据API的重要程度和使用率来划分等级,确定API自动化测试的深度。对API自动化测试的覆盖率要求都会在70%以上,也有公司要求达到100%覆盖率。API 变更频率比 UI 低,而且 API 测试脚本的执行效率高,出错率低,可测试的覆盖率也比 UI 高,它的维护成本也较低。所以现在很多公司将 API 作为自动化测试的重点。

2、制定自动化测试计划

由 PM 和自动化测试负责人编写计划,与手工测试的测试计划过程一致,在测试计划中要明确做什么,什么时候做。自动化测试计划包含自动测试的组织架构、工作任务分配、工作量估计、人力物力资源的分配、进度的安排、风险的估计和规避、各任务通过准则等。

3、制定自动化测试方案

测试方案编写需要由有经验的工程师编写,测试方案要明确自动化该怎么做。方案写得越详细,后面遇到的坑就越少。主要从以下方面考虑:
  • 自动化的目标?
  • 测试的范围?
  • 工具的设计和选择?
  • 开发语言的选择?
  • 自动化测试框架的设计?
  • 持续集成的规划?
  • UI自动化的场景与规划?
  • API自动化场景与规划?
  • 用例的设计原则?
  • 测试脚本编写的原则?
  • 测试脚本的管理?
  • 测试数据的管理?
  • 自动化测试环境的规划?
  • 脚本的执行策略?

4、搭建自动化测试框架

自动化测试框架是由基础模块、用例管理模块、报告统计模块等组成的工具集合;它用于组织、管理和执行自动化测试用例,在测试完成后统计测试结果生成HTML测试报告。

自动化测试框架需要保证测试脚本的分布执行,用例的模块化,测试数据的管理,清楚的日志分析与错误截图,通俗易懂的测试报告,基本的公共对象库,基础的操作方法封装,可实现环境的配置,还要各种异常处理和场景恢复等。

在设计测试框架的时,要尽可能的将这些模块功能有机的结合起来,要能将脚本有效的组织和连贯应用,提高测试脚本的可维护性和可读性。测试框架还要做到高内聚低耦合。高内聚,每个模块尽可能独立完成自己的功能,不依赖于模块外部的代码;低耦合,模块与模块之间接口的尽量简单。

对于中小型企业,不必自己编写一套自动化测试框架,现在开源的自动化测试框架有很多如:ZTE(推荐)、Python + unittest+ selenium/Appium/requests(推荐)、Robot framework(推荐)、Serenity、Phoenix Framework、Tellurium、Gauge 等等。

记住:没有万能的测试框架,适合自己项目的,能提高工作效率的就是好框架。

5、测试用例标准化与制定编码规范

测试用例标准化对提高代码的重用性和复用率直接相关,它对测试脚本的可靠性和可维护性也有很大影响。

用例标准化需要有统一的设计模式,统一的编码规范与约束,共有的模块化函数与类库,统一的命名规则。

三、自动化测试脚本开发

1、测试用例设计

自动化测试的用例设计重中之重,不要在没设计自动化测试用例之前就进行编码,自动化测试用例他是对自动化测试场景的整理与综合。
很多自动化测试脚本开发直接使用手工测试用例,然而手工用例之间的相关性高,到最后造成测试脚本繁重,用例维护难,遇到问题难定位。
  • 自动化用例设计要保证测试对象的明确性;
  • 每个用例都是一个完整的场景;
  • 每个功能点一个测试用例;
  • 尽量降低用例的复杂度,每个脚本独立,脚本之间不要产生关联性。

在写用例过程中需要将共性功能或操作抽象出来模块化,提高测试脚本的可维护性与代码的重用性。不管是UI自动化还是API自动化,编码前必须设计测试用例。

2、公共脚本开发

在自动化用例设计时已经将共性的功能或操作抽象出来,在脚本编写前需要将这些操作模块化放入公共模块。

3、测试脚本开发

根据自动化测试用例实现测试脚本的开发,在开发测试脚本时要将脚本的可靠性和维护性放在首位,每写一行都需要考虑它的可靠性和可维护性,代码编写必须严谨、规范。
  • 脚本的执行必须智能、高效、稳定、可靠。
  • 脚本开发完成后要在不同的环境运行3次以上,确认脚本没有问题才能提交代码库。提交代码库的代码后,需要进行代码评审并在自动化测试平台运行通过,然后才能合并到主分支。

四、自动化测试的执行与维护

1、自动化测试执行

自动化测试的执行策略有三种:定时执行、自动触发、手工触发。
  • 定时执行:多用于监控代码版本的质量。如,每天早晚二次固定时间执行精选的中高级用例,实时监控版本质量。
  • 自动触发:多用于冒烟测试。如,精选出冒烟用例(执行时间控制在10分钟内),在开发提交代码合并到主分支时自动触发冒烟测试,有问题邮件通知对应人员。
  • 手工触发:多用回归测试。如,一周或一个sprint为周期触发两次左右的全量执行,要结合实际情况手动触发。

2、自动化测试结果分析

自动化测试结果分析主要靠测试报告,测试报告要求通俗易懂,不能过于复杂。

每个sprint结束后需对自动化测试结果进行深入分析,以此来调整自动化测试方案和优化自动化测试脚本。

3、 自动化测试用例和脚本的维护

系统发生变更时需要及时更新自动化测试用例和修改测试脚本。

测试用例和测试脚本的维护是个长期过程,用例与需求挂钩,测试脚本与用例挂钩,必须先更新测试用例,然后才能修改测试脚本。用例和脚本的每次更新需留下维护的记录,以便 review 和 问题查找。

4、自动化测试脚本的持续优化

测试脚本需要每个大版本检查一次,对脚本进行优化。测试脚本不是写好了,需求没有变更,运行无报错就放在哪里。

每过段时间检查脚本代码,当发现测试的方法可优化的地方,就需要对代码进行修改。只有持续对测试脚本进行优化,才能让脚本更智能、更高效、更稳定、更可靠。
发表评论
评论通过审核后显示。
联系我们
  • 联系人:阿道
  • 联系方式: 17762006160
  • 地址:青岛市黄岛区长江西路118号青铁广场18楼