接口自动化测试中一些复杂请求的处理方式

简介: 接口自动化用例编写中,遇到复杂的请求数据,该如何处理?

一. 问题

      在一些平常的RestAPI的测试中,如果接口字段都为静态值,这类请求一般只需要通过登录校验,就可以正常发送请求获取响应。但多数时候,考虑到自动化用例的循环使用能力,请求数据通常不会单纯的为静态值,会出现一些关联值、随机值(含时间相关值)以及一些加密后的值,并且由此引发一些特殊处理的情况,如同一接口字段之间相互引用,获取之前接口的返回值并处理等。那针对这类相对复杂的接口请求数据处理,我们有什么好的解决办法呢?

二. 解决

      在以前我们用测试脚本的时候,这个问题可能不算是问题。因为在脚本中,我们可以将参数定义在内存中,需要用到的时候通过变量名直接提取出来,需要计算的时候就写计算逻辑的代码。但这样有一个问题就是,可能会出现许多重复性的代码,并且作为测试同学,代码规范性意识并不是很好,很容易出现十个人十个写法,一个简单的参数加密就可以写出花来,这也是为什么现在测试团队更推崇用低代码平台的原因之一。

      那平台化或者工具化遇到这类问题该怎么解决呢?我们先举个经典工具--jmeter。在jmeter中,支持${name}占位符的方式来引用之前保存的变量或者是一些内置随机函数。但遇到一些需要特殊处理的数据,通常都是通过每个接口写beanshell前置脚本,将参数处理完成后在传回来,在接口请求字段中以占位符方式来引用。至于其他工具或平台,其实相差不多,这也算是业内通用的处理方式。

      接下来本文介绍一下流马测试平台对于该类问题提供的解决办法:

      首先是关联值随机值等类型的参数引用,与业内相同,使用占位符的方式来引用之前接口保存的值,写法如:{{name}},也支持使用内置函数来实现随机值的生成:{{@function}},内置函数即有丰富的随机函数,也有一些数据处理函数,比如获取列表中的第n个值indexof等等。

      此外,通过函数和参数的嵌套写法,我们也可以实现一些简单的获取上个接口响应值并处理后的值,即{{@function({{name}})}}。同样的道理,如果遇到同一接口字段相互引用,还支持在函数入参中使用#{jsonpath}占位符的方式引用当前接口的其他请求值,尤其是当被引用的字段值是动态值时,其它工具只能通过前置脚本来实现,但在流马中,可以通过引用方式实现。

      而针对一些复杂的接口请求处理,比如字段的加密,甚至需要引用本接口其他字段来进行加密时,也可以通过自定义函数来实现。只需要将加密方法定义成一个函数,需要的接口请求内容作为入参,加密后值作为返回值。如此封装后,使用者不需要在前置脚本中编写重复且不易维护的数据加密脚本,只需要通过函数的引用即可实现数据的处理,如此才能算上低代码的思维。

      当然,前后置脚本可以不用,但不能没有,流马的逻辑控件中还是支持前后置脚本编写的,当然支持语言相对单一,仅支持Python脚本语言,但为了维护方便,该功能其实作者并不推荐经常使用。

三. 总结

      我们将测试自动化平台化的目的之一就是希望能够实现低代码化,因此一个测试平台是否合格的一个关键评估点就是是否可以实现以尽量少的代码去处理更多复杂的使用场景。如果还需要在平台上写一堆脚本的话,那低代码的意义就不是很大,甚至维护成本比传统测试脚本还要高。

 附流马测试平台的GITHUB链接:GITHUB 官网地址

相关文章
|
7天前
|
Java 测试技术 Python
《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)
【6月更文挑战第21天】本文介绍了TestNG中测试方法的依赖执行顺序。作者通过一个实际的自动化测试场景展示了如何设计测试用例:依次打开百度、搜索“selenium”、再搜索“selenium+java”。代码示例中,`@Test`注解的`dependsOnMethods`属性用于指定方法间的依赖,确保执行顺序。如果不设置依赖,TestNG会按方法名首字母排序执行。通过运行代码,验证了依赖关系的正确性。
30 4
|
9天前
|
JSON Java Maven
使用`MockMvc`来测试带有单个和多个请求参数的`GET`和`POST`接口
使用`MockMvc`来测试带有单个和多个请求参数的`GET`和`POST`接口
22 3
|
2天前
|
XML 测试技术 数据格式
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)
9 3
|
2天前
|
存储 JSON 测试技术
软件测试之 接口测试 Postman使用(下)
软件测试之 接口测试 Postman使用(下)
11 2
|
2天前
|
测试技术 数据格式
软件测试之 接口测试 Postman使用(上)
软件测试之 接口测试 Postman使用(上)
11 1
|
2天前
|
Java 测试技术 程序员
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(上)
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(上)
12 1
|
8天前
|
Java 测试技术 Python
《手把手教你》系列基础篇(七十九)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-下篇(详解教程)
【6月更文挑战第20天】TestNG是一个Java测试框架,提供两种测试方法依赖机制:强依赖(所有前置方法成功后才运行)和弱依赖(即使前置方法失败,后置方法仍运行)。文中通过代码示例展示了这两种依赖如何实现,并解释了当依赖方法失败时,如何影响后续方法的执行。文章还包含了TestNG Suite的运行结果截图来辅助说明。
31 8
|
4天前
|
运维 Java 测试技术
Spring运维之boo项目表现层测试加载测试的专用配置属性以及在JUnit中启动web服务器发送虚拟请求
Spring运维之boo项目表现层测试加载测试的专用配置属性以及在JUnit中启动web服务器发送虚拟请求
9 3
|
4天前
|
XML Java 测试技术
《手把手教你》系列基础篇(八十二)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-上篇(详解教程)
【6月更文挑战第23天】TestNG 是一个用于自动化测试的 Java 框架,它自动生成测试报告,包括 HTML 和 XML 格式。报告可在 `test-output` 文件夹中找到。要创建测试用例,可创建一个实现了 `@Test` 注解的方法。通过 `testng.xml` 配置文件来组织和执行测试。默认报告包括测试结果、失败点和原因。用户还能实现 `ITestListener` 和 `IReporter` 接口来自定义报告和记录器。
21 2
|
9天前
|
监控 前端开发 测试技术
postman接口测试工具详解
postman接口测试工具详解
39 7