为什么需要自动化测试?有部分原因是说可以提高相关质量,但更多的,应该是减轻工作量。
对于频繁的回归,又或者时不时的全量,如果仅仅只是靠与开发交流和业务的熟知,而进行经验推断,往往测试的结果是毫无说服力且较难令人信服的。虽然事实上,对于长年工作者,很多重要问题都是通过经验发现,但事实的另一面却也的确存在,很多普通问题会被因此错过。
过于依赖经验,带来的问题是,主观判定了相关团队对于某类或几类问题是正确的,但实际,往往会让你大吃一惊。原因可能来自于团队的某个环节又或是团队之间的协作,甚至,是你自己。
于是,我们基于对质量提高兼且减轻工作又或是其他原因,开始了自动化测试(因为在大多数时,机器会比人更可靠,即对于执行固定规则的事务流程会更为精确)
一开始我们会直接在一个文件里写入所有相关测试的内容,但时间久了,对于频繁调用眼熟的接口就会予以厌烦,所以抽象出一个业务层进行专项接口调用,会是更好的选择。
当然,一些精致小巧的方法也会在这过程中一一展现,于是工具层就自然而然出现了
然后,回归测试本身,显而易见,也应该包含有一个测试层,用于各类场景的测试(不同环境、不同测试类型【接口、数据库、页面、服务器、缓存等等】、不同业务、不同项目、不同功能)。
最后,测试的整个周期,离不开数据的存储与提取,因此,我们还需要一个配置层。
一个比较合理的测试框架雏形大致如下:
工具层
配置层
业务层
测试层
它的目的大致是:
1、记录测试操作步骤,通过测试层
2、保存正确的测试数据,通过配置层
3、详尽的日志记录,日志系统
4、可以关键字驱动,用以批量测试
5、可以进行不同测试类型的业务混用
等等。
相关的数据大致可以分为五类:
1、小量测试,自定义测试,快捷测试的数据
2、模板化的初始数据
3、某个业务、项目、功能的特定数据
4、多次执行正确的正确数据
5、大量测试,以测试模板数据方式进行
优先级为1=5>4>3>2
最后,需要思考的是,自定义测试框架相较于市面上流行的工具,譬如postman,selenium,navicat,lr,jmeter,xshell等等的最大优点是什么?
个人觉得是集成,你可以把各个不同的测试类型放在一起混合调用(譬如,当你用接口新增数据数,可以用数据库删除该记录,用以保持环境的整洁等等),用以记录更为详尽的操作步骤。(有时,整个测试流程可能是繁琐且多样的)
撇开这一点,熟练的运用其他相关工具并没有什么不好,毕竟,自定义框架本身也只是工具的一种,都是为了结果服务。