使用excel管理所有的接口用例,驱动脚本读取,管理和执行用例,将执行结果直接写入excel,方便查看和汇总。
几年前,在测试WAF产品时,我曾直接使用代码编写测试用例,未使用Excel或CSV或YAML等工具组织用例。发现灵活很好,但不方便交接给其他同事维护用例。
网络上也有使用Jmeter和PostMan管理用例的。PostMan我没深入用过,但其商业性质等原因,我已放弃使用。Jmeter我试过用一段时间,功能也不错。Jmeter可以从CSV文件中读取用例,那CSV中使用逗号分割,感觉功能还是不够。所以个人认为Excel才是管理接口用例最佳选择。
xls_cgi工具是我最近接手一个接口测试时,使用Ruby编写的一个接口自动化测试工具。 因为接手的项目的接口多达700个,人工执行测试验证及回归已不现实。
xls_cgi使用excel管理用例,在Linux命令行调用执行,每个包含用例的sheet均会被加载(当然也可以控制加载某个sheet),然后一行行读取数据进行解析。转化成另一种数据结构,再执行用例,将执行结果写到一个新的excel文件中
xls_cgi无条件判断,无多步骤功能。它的出现只为了方便、快速地对接口中字段有效性进行测试和单一接口的验证。
当然复杂逻辑的接口测试用例,可以使用代码直接编写实现。
如下图: 除了蓝色背景的列是核心列不可更名外,可以随意添加额外的列,方便自己使用。如下图的“bug备注”,当然新加列的位置也是可以随意放的。
查看原始图片:1-表格添加额外的自定义列.png
查看原始图片:2-支持多种断言表达式.png
场景1 :
用excel管理接口用例,用例数量最少也有几十个,多达几百个。每次只能必须跑所有的用例,明显不够灵活。 可以使用 -i <数字参数> 指定执行哪几个用例。如右下图红框中的数字。
查看原始图片:3-p1-支持用例执行范围及调试功能.png
场景2 : 有时需要打印HTTP请求内容和响应内容及断言内容。使用-d 。
查看原始图片:3-p2-支持用例执行范围及调试功能.png
查看原始图片:3-p3-支持用例执行范围及调试功能.png
管理用例的excel表格同时也是报告的模板,待用例执行完后,会将结果准确地填入相应的行单元格,演示如下:
步骤1:写入请求data,这里以json为例,如下图:
查看原始图片:4-p1-测试结果直接写入表格.png
步骤2:执行此用例
$ go -a run -s ‘演示用例’ -i 1
Linux命令行可以看到此条用例无法执行,原因是没有填写断言表达式
查看原始图片:4-p2-测试结果直接写入表格.png
查看原始图片:4-p3-测试结果直接写入表格.png
增加断言: “CODE = 200”
查看原始图片:4-p4-测试结果直接写入表格.png
Linux命令行可以看到测试通过了。 (判断依据是HTTP响应CODE = 200)
查看原始图片:4-p5-测试结果直接写入表格.png
下图中HTTP的响应也填充了进去,返回的是JSON数据。
查看原始图片:4-p6-测试结果直接写入表格.png
场景 :
复杂的接口,其请求数据一般是JSON或XML居多,里面包含的字段也很多,整个字符串也很长。
如果要对各个字段的有效性进行测试,就需要人为在这些大量的字符串里一一修改。每个case均要修改,给用例的编写和维护带来一些不便。
有了变量的定义,这种现状要改善很多。
通过在表格“变量”这一列定义一个或多个变量,请求数据那里仅需填写变量名即可。增加同类case时,只需复制请求数据的同时,把变量的值做相应的更改就可以了。
如下面4个case,data列的内容中的value字段的值全部用”<%=@var%>”表示。 只需要在左列中定义变量@var = <值>即可。 像这种多字段的用例编写时,只需复制data列内容,更改左侧变量值。 方便、快捷,同时也很直观。
查看原始图片:5-p1-HTTP请求Body内容嵌入变量定义.png
让我们执行下这4个用例。
查看原始图片:5-p2-HTTP请求Body内容嵌入变量定义.png
查看原始图片:5-p3-HTTP请求Body内容嵌入变量定义.png
上面提到Body内容嵌入变量定 义,通过上面的示例我们可以看到,对一个字段的有效性测试,随便就写了4个case;当然实际情况可能多达10+个或几十个。
像我们最近的一个接口测试项目,产品支持的CGI接口多达700多个。里面包含的字段是非常多。如果按这样一行一个字段的有效性做为一个case,到时也会将excel表格的行数增加到很大的数字。
而有变量数组功能,可以这4个case合并成一个case:将4个变量值,全部归到一个数组里即可。
脚本执行此类case时,会自动展开4个子case去执行。
@list = [“aa”, “bb”, “cc”, “dd”]
定义了一个@list数组(列表),将4个值做为元素放在里面。
查看原始图片:6-p1-HTTP请求Body内容嵌入变量数组.png
让我们执行下吧:
Linux命令有几个要注意的地方,这里只需执行代码为1的用例了(-i 1)。同时下面tc_sub = 4。这里因为子case = 4的缘故。
查看原始图片:6-p2-HTTP请求Body内容嵌入变量数组.png
测试结果中可以看到有4个变量: var1-var4
查看原始图片:6-p3-HTTP请求Body内容嵌入变量数组.png
场景 : 有的CGI接口,对其某个字段的值进行设置时,若设置成功,其响应中会返回新设置的值 。以我自己开发的一个cgi demo为例吧。
POST请求的目的是设置age = 11。 响应的code = 0,表示执行成功。其顺便也把设置后的值也返回了,如第2个红色箭头。 当我要断言响应内容age = “11”时, 使用: BODY_CONTENT =~ /”age”: “11”/ 此表达式明显不够灵活。 这时可以搭配变量使用。
查看原始图片:7-p1-多种断言表达式嵌入变量定义.png
如下图:A B两处的值均得到相应替换
查看原始图片:7-p2-多种断言表达式嵌入变量定义.png
查看原始图片:7-p3-多种断言表达式嵌入变量定义.png
查看原始图片:7-p4-多种断言表达式嵌入变量定义.png
场景 : 假设现在编写了100个case,正好对项目verion 1.0进行测试,测完后,有20个失败,通过确认这个20个均是bug,然后你也提了20个bug。
过几天version 1.1提测了,但只修复了其中的12个bug,还有8个未修复。
当然对100个case执行过后,可能有30+个失败。当然前面的8个也包含其中。
当你对这个30个失败一一确认时,也会再次确认这8个失败,其实这也是在浪费时间。如果能提前对8个失败,做了相应备注,那我在excel表格中,确认bug时,就可以直接跳过。
还是以cgi_demo为例,cmd = “set_age”时,其有效值只能为数字字符串,范围在18-60。其它的值均是非法的。
我设计了下面4个用例,前3个用例中的value值,按有效性检查,其是非法的,期望测试结果应该是“失败”
查看原始图片:8-p1-对测试结果备注.png
Linux下执行4个用例:
查看原始图片:8-p2-对测试结果备注.png
打开测试结果,可以看到。前3个是失败的,同时返回了当前的设置值: 60。
查看原始图片:8-p3-对测试结果备注.png
当下次测试新版本时,如果前3个用例发现的bug,还没有修复的话,那我可以对其备注。如下:
查看原始图片:8-p4-对测试结果备注.png
如下图,Linux命令行执行时,就直接将备注追加到测试结果后面,打印了出来。
查看原始图片:8-p5-对测试结果备注.png
再次查看测试结果确定失败细节时,这里我看到后面有结果备注,那这3个我就可以跳过了,直接去找没有备注且测试结果=“失败”的行了。
实际情况,这个数字肯定是比较大的,而且存在不连续的行中,有此功能,势必增加工作效率。
查看原始图片:8-p6-对测试结果备注.png
工具使用环境:GNU/Linux + Ruby
如果想excel文件的编辑和脚本的执行配合更加便捷,可以使用Samba配置一个共享目录,存放用例excel文件,这样的话,在Windows系统里可以直接打开编辑,并保存。 在GNU/Linux里,直接指向此文件路径开始执行,省去了使用ftp、sftp等途径。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。