1. 什么是自动化测试框架
在了解什么是自动化测试框架之前,先了解一下什么叫框架?框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面,而后者是从目的方面给出的定
义。 从框架的定义可以了解,框架可以是被重用的基础平台;框架也可以是组织架构类的东西。其实后者更为贴切,因为框和架本来就是组织和归类所用的。
所以自动化测试框架的定义为:由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合。
按框架的定义来分,自动化测试框架可以分为:基础功能测试框架、管理执行框架;按不同的测试类型来分,可以分为:功能自动化测试框架、性能自动化测试框架;按测试阶段来分,可以分为:单元自动化测试框架、接口自动化测试框架、系统自动化测试框
架;按组成结构来分,可以分为:单一自动化测试框架、综合自动化测试框架;按部署方式来分,可以分为:单机自动化测试框架、分布式自动化测试框架。
在百度百科中是这样定义的:自动化测试框架,即是应用于自动化测试所用的框架。按照框架的定义,自动化测试框架要么是提供可重用的基础自动化测试模块,如:selenium [1] 、watir等,它们主要提供最基础的自动化测试功能,比如打开一个程序,模拟鼠
标和键盘来点击或操作被测试对象,最后验证被测对象的属性以判断程序的正确性;要么是可以提供自动化测试执行和管理功能的架构模块,如:Phoenix Framework,robot [2] ,STAF [3] 等,它们本身不提供基础的自动化测试支持,只是用于组织、管理和执
行那些独立的自动化测试用例,测试完成后统计测试结果,通常这类框架一般都会集成一个基础自动化测试模块,如:robot框架就可以集成selenium [4] 框架,Phoenix Framework集成的也是selenium框架。
简单来说,自动化测试框架就是由一些标准,协议,规则组成,提供脚本运行的环境。自动化测试框架能够提供很多便利给用户高效完成一些事情,例如,结构清晰开发脚本,多种方式、平台执行脚本,良好的报告去跟踪脚本执行结果。
框架具有以下一些优点:
1)代码复用
2)最大覆盖率
3)很低成本维护
4)很少人工干预
5)简单报告输出
2. 为什么要进行自动化测试?
①、黑盒测试回归效率低
②、手动测试的偶然性和不确定性
③、回归的覆盖率不足
④、交付的产品质量无法保证,全靠评估
⑤、系统越复杂,问题越多
⑥、上线时间长、构件失败率高导致的蝴蝶效应(迭代快,加班多)
3. 自动化测试能解决什么问题?
①、提高出现问题后的响应速率
②、降低回归成本
③、提高回归覆盖率
④、提高回归效率
⑤、提高回归的稳定性
4. 自动化测试的不足有哪些?
①、无法减少成本投入,而是为了加快测试结果反馈,提升测试质量
②、自动化适用于回归和冒烟,而不是发现BUG
③、录制回放功能是鸡肋,可视化并不是一个很好的做法
④、不是所有所有系统所有功能都适合做自动化测试
5. 常见的测试框架分类
好多Selenium自动化测试开发人员是有QTP那边转过来的,所以,他们在早期设计的框架大致可分为以下几类:
1)基于模块的测试框架
2)基于库(Library)结构测试框架
3)数据驱动测试框架,和QTP很像
4)关键字驱动测试框架,也是QTP过来的
5)混合测试框,3 4和综合
6)行为驱动开发测试框架
这里我们不一一介绍这些框架,字面意思可以想象一些这些框架的背景和组件,本文只是对框架有一个基本了解。
6. 框架基本组件
我们来思考下框架组成部分:
1)需要配置文件管理
2)业务逻辑代码和测试脚本分离
3)报告和日志文件输出
4)自定义的库的封装
5)管理、执行脚本方式
6)第三方插件引入
7)持续集成
解释:
我们需要一个配置文件去控制一些,环境信息,开关,配置文件可以是txt/xml/yaml/properties/ini,一般.properties使用较多在JAVA里,本文是Python系列,我可能会选择ini文件。
业务逻辑代码和测试脚本分离,不像我们刚开始学习Selenium那样,代码和脚本在一个类文件里演示。我们根本没有用到代码重构,复用。代码和用例文件分离后,更加清晰,去多人开发脚本,方便调试。
报告和日志文件输出,你执行了多少case,case结果如何,这都需要报告来展示,一般采用第三方插件来实现这个功能,好多报告格式是html,简单,明了的风格。日志输出也很重要,如果发生报错,脚本执行失败,通过日志快速定位发生问题位置。
用户自定义库,这个很好理解,我们很多功能需要重复调用,这样我们就写成一个公用方法,放到工具包下,每次方便调用,例如浏览器引擎类和basepage.py的封装。
管理和执行脚本的方式,例如Python中单元测试框架unittest使用率非常高。
第三方插件,有时候,我们一些功能,需要借助第三方插件,能够更好实现,例如AutoIT,来实现文件上传和下载。还有利用第三方报告插件生成基于html格式的测试报告。
持续集成,git,svn,ant,maven,jenkins,我们会把这整合到jenkins,达到持续集成,一键执行测试脚本。
7. 自动化框架概要设计
根据以上的框架基本组件特点介绍,宏哥大致用以下图来描述一下,一个简单的自动化测试框架,可能包含配置文件、框架的主要代码、产品业务页面、测试脚本集合、日志和报告和持续集成等等这些组成部分吧,目前想到的只有这么多,如果后期想到宏哥再进一步完善它。
8. 自动化框架详细设计
根据以上的框架概念设计的特点介绍,宏哥这里详细地用以下图来描述一下,一个简单而又实用的自动化测试框架,可能包含以下这些组成部分。宏哥目前细化到这里,后期会将这个框架的代码放到github上,欢迎有兴趣和有能力的大佬给出建议或者完善这个自动化测试框架。
9. 小结
框架的简单介绍就到这里,有些人把框架想得太复杂了,框架无非就是一些软件的集合,达到特定的目的。这里我们上图画出来的框架,就是一个简单的自动化测试框架,别笑,这确实是一个简单但又包含必要的组件的自动化测试框架设计实例,如果你学会了这个设计思路和思想,那么,你已经达到了自动化测试第二个阶段的水平:能够简单设计自动化测试框架和维护框架的能力。
好了,今天的分享就到这里吧!!!谢谢各位的耐心阅读。