#独家
QuickFox 接口自动化测试系统(使用手册)

2021-05-24 0 1,864

基本使用

站点默认进入“开始/新的测试“页面,在此即可进行在线接口测试,输入 URL、请求头、请求参数,提交请求并查看返回结果,或将 JSON/XML 文本以格式化的方式展示。主要能力与常见的接口测试工具相似,因此这里不再多加讲解。稍有不同的是,在发送按钮的右侧,有个上传至云端的图标,可以将当前输入的接口信息保存,供自动化回归测试使用,或重新载入至当前页面做调试。

系统的整体设计逻辑为五级管理结构,空间->模块->接口->用例->步骤。

空间用于在较大层面上对测试进行隔离,相对比较独立,适用于划分不同的产品线或部门。而模块用于对空间下的测试进一步进行分类。空间和模块的操作,可以在“项目/项目空间”菜单项中找到,注意将鼠标移至空间(表格行)上方,即可出现空间的附属操作,以及空间下属模块的管理入口,系统中的其他操作均与此类似。

接口是测试的主体,承载了 URL 信息,用例用于补充关于此 URL 的具体内容,例如请求方法(GET/POST/PUT/DELETE),内容类型(TEXT/JSON/XML/…),请求头,请求参数。用例围绕接口(URL)提交不同的测试数据,以达到对接口进行正向、反向完整测试的目的。接口和用例的操作,可以在“项目/接口用例”菜单项中找到,点击接口(表格行)即可展开所属的用例列表。

步骤是 Quickfox 比较独特的一个设计,用于解决测试的上下文依赖。例如,我想要测试修改用户信息的接口,完整的闭环是:

1) 调用登录接口获取令牌。

2) 调用修改用户信息接口(主要测试目标)。

3) 检查接口返回。

4) 再次调用修改接口重置用户信息,完成数据清理。

以上步骤除了 2) 3) 是必要的步骤外,1) 4) 分别用来处理测试的前置依赖和后置清理工作。我们推荐的实践是,在一次测试中尽可能完成所有需要的工作,包括数据初始化和清理。如此设计可以给测试整体的稳定性、可维护性、并发执行带来巨大的优势。而通过步骤的灵活组合,Quickfox 可以处理非常复杂的测试场景。

关于步骤,还有一些更为复杂的用法,我们在下一节详细展开。

 

步骤进阶

步骤管理入口可以在用例的附属操作中找到,展开后的页面分为测试模式和编辑模式:测试模式用于在线执行测试,并即时查看测试结果;编辑模式用于添加、修改、删除步骤。Quickfox 的步骤分为四种:

1) 接口调用:调用其他已经写好的接口用例,注意不会执行该用例所属的全部步骤,只执行目标调用步骤。

2) 存储查询:查询数据库中的数据,支持 MySQL、SQL Server、Oracle 数据库,可以自行填写查询语句。

3) 检查点:检查前一个接口调用或存储查询步骤返回的内容,可以一次性设置多个检查点。

4) 延时器:人为设置等待时间,用于解决部分特殊的时效性问题。

系统中可以任意设置不同类型步骤的执行顺序,这会影响步骤的输入和输出。大体上说,前一个步骤的输出,是后一个步骤的输入,但是具体根据步骤类型会有所不同:接口调用和存储查询,即有输入又有输出;检查点只有输入,没有输出;延时器即无输入,也无输出。特别需要注意的是,检查点确认的是上一个拥有输出的步骤的返回值,因此连续多个检查点,检查的均是同一段返回。

大部分步骤允许设置过滤器,而过滤器又分为前置和后置。前置过滤器的作用是从输入中提取特定值,例如,步骤 1) 的返回值是 {“A”: “Hello”, “B”: “World”},将步骤 2) 的前置过滤器设为 ${extractor:json:A;},则步骤 2) 得到的输入相当于字符串 “Hello”;后置过滤器的作用是控制输出的内容,以同样的步骤输出为例,如果将步骤 1) 的后置过滤器设置为 ${extractor:json:A;},步骤 1) 的输出也相当于字符串 “Hello”。虽然二者的实际应用效果是一致的,但是需要留意这个区别,前者是控制输入(不改变上一步的输出),后者是控制输出。

所有可用的过滤器形式如下:

1) ${extractor:global}:提取全部文本。

2) ${extractor:json:a->b;}:提取 JSON 文本中 a->b 的值(b 是 a 的子级,例如 {“a”:{“b”: “x”}}),注意不要遗漏最后的分号。

3) ${extractor:xml:/a/b;}:提取 XML 文本中 /a/b 节点的值,”/a/b”可以替换成其他 XPATH 表达式,注意不要遗漏最后的分号。

4) ${extractor:regexp:e(x)p:M:N;}:提取第 M 个括号的第 N 次正则匹配,注意不要遗漏最后的分号。

最后一个过滤器可能比较难理解,例如对返回值”Hello World”应用过滤器 ${extractor:regexp:o(.):1:2;},则匹配的是字符”r”,因为正则表达式的含义是跟随在 o 之后的任意字符,而过滤器的含义是第二次符合条件的匹配。

另个一个难以理解的是 ${extractor:global},为什么会需要这样一个看似无用的过滤器?因为这些过滤器表达式,不单可用于前、后置过滤器中,也可以填写在接口 URL、用例参数和请求头、存储查询语句中,用于替换指定文本。例如前置提到的四步闭环,步骤 2) 的 URL 可以写为 http://www.xxx.com/user/3/?token=${extractor:json:user->token;} ,如此便可在请求中带入上一步得到的令牌。

麋鹿网 未分类 QuickFox 接口自动化测试系统(使用手册) https://www.miluwang.cn/691.html

学测试就到麋鹿网

QuickFox 接口自动化测试系统(使用手册)
上一篇:

已经没有上一篇了!

相关文章

评论
暂无评论