欢迎来到魔幻小生的博客

浅谈接口测试及常用工具介绍

前言

目前软件测试行业做功能测试和接口测试的人相对比较多。API 测试是一种作为集成测试的一部分、通过直接控制被测应用的接口(API)来确定是否在功能、可靠性、性能和安全方面达到预期的软件测试活动。由于 API 都没有 GUI 界面,API 测试都是在通讯层进行的。现在 API 测试在自动化测试中有着很重要的地位,因为 API 一般是应用逻辑的主要接口,同时 GUI 测试在敏捷开发和 DevOps 的快速迭代和频繁变更中很难维护。

预备知识

GET 和 POST 请求

如果是 get 请求的话,直接在浏览器里输入就行了,只要在浏览器里面直接能请求到的,都是 get 请求,如果是 post 的请求的话,就不行了,就得借助工具来发送。

GET 请求和 POST 请求的区别:

  • GET 使用 URL 或 Cookie 传参。而 POST 将数据放在 BODY 中。
  • GET 的 URL 会有长度上的限制,而 POST 的数据则可以非常大。
  • POST 比 GET 安全,因为数据在地址栏上不可见。
  • 一般 GET 请求用来获取数据,POST 请求用来发送数据。

http 状态码

每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:

  • 200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
  • 300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了。
  • 400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面。
  • 500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果。

cookie、session、token

可以看另一篇博客:https://www.cnblogs.com/werr370/p/17408208.html

web service 接口

它不需要你再拼报文了,会给一个 webservice 的地址,或者 wsdl 文件,直接在 soapUI 导入,就可以看到这个 webservice 里面的所有接口,也有报文,直接填入参数调用,看返回结果就可以了。

接口测试

通过性验证

首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。

接口安全

  • 绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?

  • 绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功。

  • 参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。

  • 密码安全规则,密码的复杂程度校验。

异常校验

所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。

工具介绍

接口测试的工具很多,比如 postman、RESTClient、jmeter、loadrunner、SoapUI等,下面只针对测试 http 接口较为常用的测试工具 postman 和 jmeter 进行介绍。

步骤的实现

Postman 和 jmeter 都是创建 http 请求。

  • 区别1:postman 请求的请求URL是一个整体,jmeter 分成了4个部分(协议、主机、端口、路径)

  • 区别2:postman 可以在请求中直接填写请求头信息,jmeter 需要通过添加 http 请求头管理器添加请求头

  • 区别3:对于 cookie,postman 可以对 cookie 做管理,但是 jmeter 只需添加 http cookie 管理器即可完成 cookie 的处理,并且是自动处理 cookie 信息,所以 jmeter 的 cookie 管理更简单

Postman 在 pre-request script 可以添加前置请求,获取响应数据,比较容易进行 json 结果的处理,很方便的提取 json 数据;jmeter 不仅可以处理 json 数据(json 提取器),还可以提取其他数据(正则表达式提取器)。

数据用例的实现

  • 区别1:jmeter 比较适合进行数据与操作分离,而 postman 比较适合把数据和操作放在一起,显然 postman 操作更简单,jmeter 更便于维护。

  • 区别2: postman 也支持 csv 数据文件的导入,但是每次执行时都需要手工加载数据文件,不方便(所以只能做半自动化);Jmeter 可以进行完全自动化,特别是引入 ant 后效果更明显。

断言的实现

  • 区别1:Postman 有很多自带的断言函数,直接引用即可,操作非常方便。。。jmeter 也自带断言组件,操作非常直观。 区别: postman 用函数断言,jmeter 用元件进行断言。

  • 区别2:jmeter 支持正则表达式断言,postman 不支持。

  • 区别3:Jmeter 的断言更丰富。postman 需要通过编程来实现同样的效果,所以难度更大。

执行

  • 区别:默认执行,postman 不能保存结果,jmeter可以保存结果;Postman 可以通过 newman 实现批量执行和保存结果,jmeter 可以通过 ant 实现批量执行和保存结果。

总结

Postman 比较适合做手工接口测试,因为简单,可以实现半自动化。

Jmeter 比较适合自动化接口测试,因为功能强大并且可以保存脚本,批量执行设置很容易。

Postman 一般用来做接口测试,用来发现 BUG,验证后台程序。

Jmeter 一般用来做自动化测试,做冒烟测试。

Postman 是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持 get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。

jmeter 是一款 100% 纯 Java 编写的免费开源的工具,它主要用来做性能测试,相比 loadrunner 来说,它内存占用小,免费开源,轻巧方便、无需安装,越来越被大众所喜爱。

posted @ 2023-05-15 18:00  魔幻小生  阅读(150)  评论(0编辑  收藏  举报