接口测试 接口测试并不只是测试参数和返回值

测试人生路 · 2020年11月18日 · 最后由 Ouroboros 回复于 2020年11月20日 · 235 次阅读

一般理解的接口测试无非就是,输入 url、参数值,点击请求发送查看一下响应值和响应状态码是否正常就完事儿了。

但是接口测试真正的关注点不值这些,今天就给大家说说接口测试有那些需要关注的地方。

在实际项目中,后端接口测试通过后,一般前端还需要再测试一遍,读者可能会提出疑问:后端接口测试一遍,前端也测试一遍,是不是重复测试了?其实这两者并不重复,区别在于后端接口测试和前端功能测试各自的侧重点不一样,后端接口测试侧重点是检查数据的交换、传递和控制管理过程。而前端功能测试更加测试检测提供给用户的使用功能是否正确可用。虽然各种测试的重点不一样,但也存在相同的部分,以功能测试、业务逻辑测试、性能测试和安全测试为例:

一、接口功能关注点

功能测试:由于测试最终的目标都是业务功能是否正确且稳定可用,所以不管是前端给用户使用的功能策是,还是后端的接口测试,功能保障是基本要求,也是后端测试和前端测试两种测试重合度最高的一块。

具体关注点:

1.接口的功能是否正确实现了

2.接口是否按照设计文档中来实现(比如 username 参数写为了 name,那么这就不符合,因为接口文档在整个开发中都需要使用,所以接口实际的设计要与接口设计文档中保持一致)

3.兼容性测试: 比如说今天接口进行了调整,但是前端没有进行变更,这时候需要验证新的接口是否满足旧的调用方式

4.错误码测试: 通用的错误码与业务错误码是否能够清晰的说明调用问题,错误码是否能够尽可能的全的覆盖所有的情况

5.返回值测试: 返回值除了内容需要是正确的,还需要类型也是正确的,保证调用方拿到这些参数能够正确的解析

6.默认值测试: 很多情况一些非必填的参数会有默认值,比如说一个查询的接口,参数 count 为返回查询的结果数量, 默认为 10,那么就应该有一条 case 来测试,当然前置条件是数据库里面必须要存在这样的数据超过 10 条。

二、接口业务逻辑测试

1.是否有依赖业务,比如查看订单,是需要用户首先登录的,所以肯定要保证登录了或有相应的 cookie

2.业务逻辑测试: 传递正确的参数,接口对数据库进行查询的操作,需要去验证数据库查询是否正确,接口对数据库进行 增删改的操作,也需要看数据库是否同步进行了这些操作

三、接口性能测试

1.接口响应时间

2.接口对应的服务器的吞吐量

3.接口并发数量

4.服务器进出口带宽

四、接口安全测试

1.接口中敏感信息是否加密

2.必要参数是否后端也进行校验(现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证)

3.接口是否防恶意请求(SQL 注入)

4.cookie:就是将 header 中的 cookie 修改或删除后看是否能返回相应的 error code

5.header:就是删除或修改 header 中部分参数的值,看是否能返回相应的 error code

6.唯一识别码:删除修改唯一识别码测试

五、接口测试工具

apipost 可以进行接口的功能测试和业务逻辑测试,除此之外还有强大的接口文档生成功能。

下载地址:https://www.apipost.cn/?dt=20201118

jmeter 强大的接口性能测试功能

共收到 5 条回复 时间 点赞

没有感受到标题的想法。个人看法: 前端测试其实主要测试的是前端对用户的各种限制是否正确实现,从而避免系统运行时候因为无意义的请求而浪费性能。 接口测试我没怎么做过,但是我真的觉得接口测试就是测试参数和返回值~ (不要扯性能、安全那边去,扯那边就扯远了) 。 不同意见,还请指教~

后端接口测试侧重点是检查数据的交换、传递和控制管理过程

这个点赞同,或者说这个应该是后端测试而不仅仅是后端接口测试,只是后端测试大多通过调接口触发。不过好像正文讲着讲着就不是讲这个点了。数据的交换、传递和控制,个人理解应该是要看输出的。接口的输入不止 request,还有中间件数据、请求其他服务得到的数据;输出也不止 response ,还有日志、中间件调用、其他服务调用。

另外,要把这些都关注到位,其实工作量还是挺大的,实践中建议是结合 code review 的方式进行,这样才比较高效。比如 4.cookie:就是将header中的cookie修改或删除后看是否能返回相应的error code ,这些逻辑非常通用,所以一般都是框架层负责的,业务层不负责。所以只要框架层之前这方面有确认过,就不用再测试了,出问题概率极低。

修正下。
5.返回值测试: 返回值除了类型需要是正确的,还需要内容也是正确的

Thirty-Thirty 回复

其实一般返回值只需要内容正确就行,类型这个基本上服务端的解析框架都会先做一层类型强转,如果转不了就会直接异常,很容易发现。
比如 1 和 "1" ,对服务端来说没啥差别,只要服务端对应对象是 Integer ,都会转成数字 1 进入后面的处理逻辑。

补充下,如果是接口类产品,所有配套功能也得测试。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册