接口测试之问题挖掘

Posted 自动化测试研究与应用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试之问题挖掘相关的知识,希望对你有一定的参考价值。

在平常的测试工作中,我们往往需要了解和理解前后端代码,这样能够很好地提高测试效率、丰富我们的案例。其中,在测试http接口时,测试工程师就需要去了解用什么样的编码格式调用接口传递参数。下面就来介绍下SpringBoot中的@RequestParam和@RequestBody两个注解,帮助我们更好的测试带有这两个注解的http接口。
1.拥有不同的参数

1)@RequestParam总体上来说,该注解类拥有三个参数:

    required  表示是否必须,默认为  true。
    defaultValue  可设置请求参数的默认值。
    value  为接收url的参数名(相当于key值)。

2)@RequestBody注解只拥有一个参数:

    required 默认为 true,即对象中的属性必须有一个要传
2.处理不同的编码格式
         @RequestParam用来理  Content-Type  为  application/x-www-form-urlencoded  编码的内容。而注解@RequestBody一般用于处理非  Content-Type: application/x-www-form-urlencoded 编码格式的数据,比如: application/json application/xml 等类型的数据。
3.例子
1)用Content-Type:application/x-www-form-urlencoded
前端请求:
后端响应1:传参对应,没有任何注解,
接口测试之问题挖掘
接口测试之问题挖掘
后端响应2:参数添加@RequestParam注解
接口测试之问题挖掘
接口测试之问题挖掘
后端响应3:参数添加@RequestBody注解,虽然成功了,但是接收参数不正确。
接口测试之问题挖掘
接口测试之问题挖掘
后端响应4:参数用@RequestBody,但入参是一个Map,报错。
接口测试之问题挖掘
Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]
结论:当前端以application/x-www-form-urlencoded的格式传参时,后台可以使用@RequestParam或者不适用任何注解获取参数。后台不可以使用@RequestBody注解获取参数。
2)Content-Type:application/json
前端请求:
接口测试之问题挖掘
后端响应1:不加任何注解,接收到的参数都是null
接口测试之问题挖掘
后端响应2:参数添加@RequestParam注解,报错:
Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'name' is not present]
后端响应3:参数添加@RequestBody注解,入参为Map
结论:当前端以application/json的格式传参时,后台支持@RequestBody注解,入参为Map或者一个javabean的形式。

以上是关于接口测试之问题挖掘的主要内容,如果未能解决你的问题,请参考以下文章

教育edusrc证书站点漏洞挖掘

JMeter接口测试-模块控制器

Hadoop MapReduce编程 API入门系列之挖掘气象数据版本2

Flask 编写http接口api及接口自动化测试

Jmeter组件之-Test Fragment(测试片段)

测试基础之集成测试(初入行)