大家好,小编今天和大家分享一个自己编写的自动化测试工具,主要解决的问题是如何遍历测试用例中“判定表”方法设计出来的case。
列举一个需求: 有一个开关下发的网络接口,针对以下条件给用户下发音乐开关: 1、 手机厂商满足:xiaomi,oppo,vivo 2、 且Androidid尾号为:1、2、3、4、5、6 3、 且地区必须是北京,上海,广州 下发的音乐开关的key、value分别是“music”,“1”。
观察该需求,我选择采用判定表的方法来设计测试用例,详情如下:
通过上表进行用例设计。满足下发的条件一共有3*6*3=54条,如果每一类各设计一个反向条件,则总case数量为4*7*4=112条。
如果通过黑盒的方式全部遍历这112条case,时间人力消耗就太大了,考虑到该接口的测试需求较频繁,于是考虑用自动化的手段进行测试。
自动化工具的设计主要有以下三个步骤: 1、条件输入:全部case条件的录入; 2、测试执行:对所有条件全部遍历组case,进行测试验证; 3、结果输出:对测试结果进行校验、排版输出。
一、条件输入: 首先由于该接口使用频率较高,于是计划设计一个完整的工具,通过wxpython进行GUI的绘制(wxpython使用说明:https://www.yiibai.com/wxpython/wxpython_environment.html),做出来的界面如下:
条件框中可以多个条件填写,通过“;”隔开,使用GetValue()方法时通过split进行拆分; 引用刚刚的例子,待查询关键字:“music”,预期结果:“1”。
二、测试执行: 首先将所有正向、反向条件分别用数组接收,然后进行遍历组合,我在这里遇到了一个困难, 如果仅仅是例子中的3重条件,那么嵌套3次循环即可。但是以后的需求条件可能会有很多,每增加一组条件就要修改脚本增加一重循环,对脚本的易用性有很大影响,通过查询python库找到了一个更有效的方法:python的itertools模块,使用方法如下:
从图中可以看出,该模块循环可以将所有list进行全部组合的排列输出,获取到所有的条件后,将条件组合成对应case并作为body进行request上传,接收返回的内容准备输出结果。
三、结果输出: 收到返回后,进行实际结果和预期的判断,主要有两种case 1、正确路径:全部条件正确case,结果如果命中预期则返回True,否则False; 2、错误路径:如果有一个非下发case,结果如果仍命中预期则返回False,否则返回True。 将结果进行排版输出到excel中,大概效果如下:
本次案例属于接口测试,但工具的设计理念不仅仅适用接口验证,利用itertools的数组全组合能力实现判定表的所有条件遍历,在功能回归的多条件自动化测试上也可以使用,解放双手,并保证测试case覆盖率达到100%。