1 Star 0 Fork 0

xiaojin2630 / CGI接口自动化测试

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

CGI接口自动化测试

介绍

使用excel管理所有的接口用例,驱动脚本读取,管理和执行用例,将执行结果直接写入excel,方便查看和汇总。

用例的组织和管理

几年前,在测试WAF产品时,我曾直接使用代码编写测试用例,未使用Excel或CSV或YAML等工具组织用例。发现灵活很好,但不方便交接给其他同事维护用例。

网络上也有使用Jmeter和PostMan管理用例的。PostMan我没深入用过,但其商业性质等原因,我已放弃使用。Jmeter我试过用一段时间,功能也不错。Jmeter可以从CSV文件中读取用例,那CSV中使用逗号分割,感觉功能还是不够。所以个人认为Excel才是管理接口用例最佳选择。

xls_cgi工具

xls_cgi工具是我最近接手一个接口测试时,使用Ruby编写的一个接口自动化测试工具。 因为接手的项目的接口多达700个,人工执行测试验证及回归已不现实。

xls_cgi使用excel管理用例,在Linux命令行调用执行,每个包含用例的sheet均会被加载(当然也可以控制加载某个sheet),然后一行行读取数据进行解析。转化成另一种数据结构,再执行用例,将执行结果写到一个新的excel文件中

xls_cgi工具不足之处

xls_cgi无条件判断,无多步骤功能。它的出现只为了方便、快速地对接口中字段有效性进行测试和单一接口的验证。

当然复杂逻辑的接口测试用例,可以使用代码直接编写实现。

主要特性

  1. 支持表格添加额外的自定义列(不会影响脚本的解析)
  2. 支持多种断言表达式
  3. 支持用例执行范围及调试功能
  4. 支持测试结果直接写入表格
  5. 支持HTTP请求Body内容嵌入变量定义
  6. 支持HTTP请求Body内容嵌入变量数组
  7. 支持多种断言表达式嵌入变量定义
  8. 支持对测试结果备注

特性1 支持表格添加额外的自定义列

如下图: 除了蓝色背景的列是核心列不可更名外,可以随意添加额外的列,方便自己使用。如下图的“bug备注”,当然新加列的位置也是可以随意放的。

查看原始图片:1-表格添加额外的自定义列.png 图表

特性2 支持多种断言表达式

查看原始图片:2-支持多种断言表达式.png 图表

特性3 支持用例执行范围及调试功能

场景1

用excel管理接口用例,用例数量最少也有几十个,多达几百个。每次只能必须跑所有的用例,明显不够灵活。 可以使用 -i <数字参数> 指定执行哪几个用例。如右下图红框中的数字。

  • 示例1-不指定-i : 执行所有的用例
  • 示例2-只执行1到3 : -i 1-3
  • 示例3-只执行1到3,5到6 : -i 1-3,5-6
  • 示例4-只执行1,3,5 : -i 1,3,5

查看原始图片:3-p1-支持用例执行范围及调试功能.png 图表

场景2 : 有时需要打印HTTP请求内容和响应内容及断言内容。使用-d 。

查看原始图片:3-p2-支持用例执行范围及调试功能.png 图表

查看原始图片:3-p3-支持用例执行范围及调试功能.png 图表

特性4 测试结果直接写入表格

管理用例的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 图表

特性5 HTTP请求Body内容嵌入变量定义

场景

 复杂的接口,其请求数据一般是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 图表

特性6 HTTP请求Body内容嵌入变量数组

上面提到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 图表

特性7 多种断言表达式嵌入变量定义

场景 : 有的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 图表

特性8 对测试结果备注

场景 : 假设现在编写了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等途径。

空文件

简介

使用excel管理所有的接口用例,驱动脚本读取,管理和执行用例,将执行结果直接写入excel,方便查看和汇总。 展开 收起
Ruby
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Ruby
1
https://gitee.com/xiaojin2630/xls_cgi.git
git@gitee.com:xiaojin2630/xls_cgi.git
xiaojin2630
xls_cgi
CGI接口自动化测试
master

搜索帮助