download:博为峰-软件测试提速班2022年最新无密完结
前言
当开发改变相干业务逻辑之后,测试同学须要从新回归测试,有些还得走残缺流程,比如说下单,开单,而后财务审核,各种流程去回归测试。无疑加大了测试同学的工作量,有些新接手他人工作的更是一脸闷逼,不晓得之前的需要长啥样。
那么自动化测试的作用就施展进去了。
背景
当初咱们的做法是让测试同学去手动录入接口,以及相应返回参数的判断逻辑,这就很蛋疼了,可能一个零碎就有上百个接口,想想都让我头大(尽管不是开发来搞),所以我想谈谈我的想法,缩小测试同学的工作量,降本提效我感觉是大部分it在做的事件,这时就须要体现进去。
多少模块
作为工程师,模块化是一个很重要的思维。
那么在自动化这一块,我感觉有几个局部:接口模块、构建数据模块、自动化测试模块。
接口模块:首先你得晓得有多少接口吧,别离用了什么参数,而后返回后果是什么
构建数据模块:测试总得有数据能力测试,那怎么构建测试数据
自动化测试模块:在后面两个根底上,对输入输出的内容进行校验,而后记录接口是否失常
实现计划
接口模块
在controller层,mvc是能拿到所有的接口以及对应的参数,这个找张表收集起来,而后每次我的项目启动的时候更新下我的项目所有的接口数据,洒洒水~
保留对应api,参数还有响应参数,咱们也能够将它们分类,通过利用来辨别整在一张表外头。
构建数据模块
这个环节会比拟细一点,个别状况下是测试人员通过随机参数来达到自动化测试的目标。我想另辟蹊径,通过收集测试的流量,来构建测试数据。比如说,我在测试环节新建商品,能够是导入excel,能够是页面间接输出数据,这些在网关层都能拦挡失去,比如说api门路,申请参数。
如果为了避免数据跟test环境抵触,能够拿uat环境申请数据,这个过程叫录制流程,当咱们须要的回归的时候,将这些录制流量,重放进去,结构数据,相当不便实用。
这个想法的由来,其实是来自我之前的一次面试,那是一次阿里的面试,面试官所在的组做的是工具类,其中就有流量录制,针对简单的业务流程导致线上问题排查艰难的状况,通过流量录制伎俩,而后重放的模式来排除问题所在。这个工具叫做JVM SandBox
有一个跟我老大聊天的时候,也发现其中的难点,就是数据构建的问题,线上流量有了,然而根底数据咋办,我感觉能够再搞个计划把线上数据dump到测试环境配合调试。
自动化测试模块
这个就比较简单了,就是把咱们刚刚录制的流量,能够是test环境的,也能够说uat环境的,重放到咱们零碎api外面,而后须要一个判断逻辑,对响应的参数进行匹配,是否跟咱们预期是统一的。比如说返回参数是否为200,或者说另外一个接口查问商品详情是否失常等等伎俩来验证自动化测试的后果,而后将这个后果保留到表头。
那么那些异样的响应,就是咱们须要拎进去解决的问题了。
比照成果
如果是人工录入的话,首先有多少接口,这个跟零碎的业务量有关系的,其次每个接口的参数,还有返回的参数的校验都须要独自写一套逻辑。再说到改变,因为信息不肯定是对称的,所以漏掉接口也是失常状况,另外一个如果接口改了参数,还有返回参数,测试同学也是浑然不知的。
比照我这套计划,根本是由开发同学来实现,你多少个接口,心里没有点数?哈哈哈
收集api阶段,次要是咱们通过mvc那层收集所有api数据,基本上不会漏接口,参数跟返回后果也是实时同步(我的项目启动的时候,就更新一次)构建数据的环节,人工计划是通过postman上随机数来实现,然而要晓得有些参数不适宜用随机数,比如说手机号,这些有特定规定的,那这时录制流量的益处就显现出来了。自动化测试阶段,人工的计划是写了一个逻辑来判断响应参数是否合乎预期,我这个计划其实也一样。然而呢,就是如果咱们有一套零碎来搞,一旦发现响应后果变了,就须要有告诉咱们是否须要变动自动化测试脚本,流量重放编排等等。说白了,就是对变动是有感知的,包含api接口门路、参数、响应后果。
这样一比照,很明显降低了测试同学的工作量,美滋滋~