自动化测试不是个简单的任务,而是个项目。作为项目就必须有他的流程与规范。
目录
一、项目启动阶段
1、可行性分析
2、抽样分析
二、自动化测试准备阶段
1、自动化测试需求筛选与评审
2. 制定自动化测试计划
3、制定自动化测试方案
4、搭建自动化测试框架
5、测试用例标准化与制定编码规范
三、自动化测试脚本开发
1、测试用例设计
2、公共脚本开发
3、测试脚本开发
四、自动化测试的执行与维护
1、自动化测试执行
2、自动化测试结果分析
3、 自动化测试用例和脚本的维护
4、自动化测试脚本的持续优化
评估项目当前是否合适启动自动化测试?如果项目不适合,需要找出不适合原因与上级领导沟通。
自动化的启动时间的切入点很关键,切入点时间可以分散到模块,先稳定的模块先开展自动化。
通过可行性分析后需要进行抽样分析,也就是写几个自动化测试脚本,通过实际案列再次看看自动化测试工作是否能顺利开展,也可以在此过程中发现部分技术上的疑难或是否存在致命的问题,在这过程中也可以发现有那些需要开发、测试、运维、产品配合或改进的地方。
有经验的工程师通过抽样分析,能对自动化测试工作开展有个大体的轮廓,为后面的工作开展打下基础。
抽样分析方式推荐采用自动化冒烟测试抽样,也就是将实现冒烟测试用例作为抽样的样本,将系统的手工冒烟测试转换为自动化测试用例,自动化测试的用例数量需控制在5个左右,这样既有成果又贴合实际。
注意:抽样分析时不要搭建完整的测试框架,可以只线性的实现自动化测试用例,它的主要工作还是抽样分析。
测试需求筛选主要时明确自动化测试的的目标,整理出需要实现自动化测试的业务需求,以及自动化测试深度。需求分析完成后要对其内容进行评审,只有项目组评审通过后才能有效。
UI自动化测试不可能做到100%覆盖,所以我们主要从实际的业务场景方面考虑,首先需要贴合用户使用的正向场景,然后再筛选出重要的逆向场景。
API自动化测试,需要对整个系统的API进行整理,根据API的重要程度和使用率来划分等级,确定API自动化测试的深度。对API自动化测试的覆盖率要求都会在70%以上,也有公司要求达到100%覆盖率。
API 变更频率比 UI 低,而且 API 测试脚本的执行效率高,出错率低,可测试的覆盖率也比 UI 高,它的维护成本也较低。所以现在很多公司将 API 作为自动化测试的重点。
由 PM 和自动化测试负责人编写计划,与手工测试的测试计划过程一致,在测试计划中要明确做什么,什么时候做。自动化测试计划包含自动测试的组织架构、工作任务分配、工作量估计、人力物力资源的分配、进度的安排、风险的估计和规避、各任务通过准则等。
测试方案编写需要由有经验的工程师编写,测试方案要明确自动化该怎么做。方案写得越详细,后面遇到的坑就越少。主要从以下方面考虑:
自动化的目标?
测试的范围?
工具的设计和选择?
开发语言的选择?
自动化测试框架的设计?
持续集成的规划?
UI自动化的场景与规划?
API自动化场景与规划?
用例的设计原则?
测试脚本编写的原则?
测试脚本的管理?
测试数据的管理?
自动化测试环境的规划?
脚本的执行策略?
自动化测试框架是由基础模块、用例管理模块、报告统计模块等组成的工具集合;它用于组织、管理和执行自动化测试用例,在测试完成后统计测试结果生成HTML测试报告。
自动化测试框架需要保证测试脚本的分布执行,用例的模块化,测试数据的管理,清楚的日志分析与错误截图,通俗易懂的测试报告,基本的公共对象库,基础的操作方法封装,可实现环境的配置,还要各种异常处理和场景恢复等。
在设计测试框架的时,要尽可能的将这些模块功能有机的结合起来,要能将脚本有效的组织和连贯应用,提高测试脚本的可维护性和可读性。测试框架还要做到高内聚低耦合。高内聚,每个模块尽可能独立完成自己的功能,不依赖于模块外部的代码;低耦合,模块与模块之间接口的尽量简单。
对于中小型企业,不必自己编写一套自动化测试框架,现在开源的自动化测试框架有很多如:Python + unittest+ selenium/Appium/requests(推荐),Robot framework(推荐),Serenity,Phoenix Framework,Tellurium,Gauge 等等。
记住:没有万能的测试框架,适合自己项目的,能提高工作效率的就是好框架
测试用例标准化对提高代码的重用性和复用率直接相关,它对测试脚本的可靠性和可维护性也有很大影响。
用例标准化需要有统一的设计模式,统一的编码规范与约束,共有的模块化函数与类库,统一的命名规则。
自动化测试的用例设计重中之重,不要在没设计自动化测试用例之前就进行编码,自动化测试用例他是对自动化测试场景的整理与综合。
很多自动化测试脚本开发直接使用手工测试用例,然而手工用例之间的相关性高,到最后造成测试脚本繁重,用例维护难,遇到问题难定位。
自动化用例设计要保证测试对象的明确性;每个用例都是一个完整的场景;每个功能点一个测试用例;尽量降低用例的复杂度,每个脚本独立,脚本之间不要产生关联性。在写用例过程中需要将共性功能或操作抽象出来模块化,提高测试脚本的可维护性与代码的重用性。
不管是UI自动化还是API自动化,编码前必须设计测试用例。
具体内容太多,后面开单独章节讲自动化测试用例的设计。
在自动化用例设计时已经将共性的功能或操作抽象出来,在脚本编写前需要将这些操作模块化放入公共模块。
根据自动化测试用例实现测试脚本的开发,在开发测试脚本时要将脚本的可靠性和维护性放在首位,每写一行都需要考虑它的可靠性和可维护性,代码编写必须严谨、规范。
脚本的执行必须智能、高效、稳定、可靠。
脚本开发完成后要在不同的环境运行3次以上,确认脚本没有问题才能提交代码库。提交代码库的代码后,需要进行代码评审并在自动化测试平台运行通过,然后才能合并到主分支。
自动化测试的执行策略有三种:定时执行、自动触发、手工触发
定时执行,多用于监控代码版本的质量。如,每天早晚二次固定时间执行精选的中高级用例,实时监控版本质量。
自动触发,多用于冒烟测试。如,精选出冒烟用例(执行时间控制在10分钟内),在开发提交代码合并到主分支时自动触发冒烟测试,有问题邮件通知对应人员。
手工触发,多用回归测试。如,一周或一个sprint为周期触发两次左右的全量执行,要结合实际情况手动触发。
自动化测试结果分析主要靠测试报告,测试报告要求通俗易懂,不能过于复杂。
每个sprint结束后需对自动化测试结果进行深入分析,以此来调整自动化测试方案和优化自动化测试脚本。
系统发生变更时需要及时更新自动化测试用例和修改测试脚本。
测试用例和测试脚本的维护是个长期过程,用例与需求挂钩,测试脚本与用例挂钩,必须先更新测试用例,然后才能修改测试脚本。用例和脚本的每次更新需留下维护的记录,以便 review 和 问题查找。
测试脚本需要每个大版本检查一次,对脚本进行优化。测试脚本不是写好了,需求没有变更,运行无报错就放在哪里。
每过段时间检查脚本代码,当发现测试的方法可优化的地方,就需要对代码进行修改。只有持续对测试脚本进行优化,才能让脚本更智能、更高效、更稳定、更可靠。
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!喜欢软件测试的小伙伴们,可以加入我们的测试技术交流扣扣群:310357728里面有各种软件测试资源和技术讨论)