如何使用JMeter实现API接口自动化测试?

发表于:2017-12-06 11:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:miaomiao    来源:backup

  背景
  Red.Q 是岂安为客户提供业务风险情报服务的产品。API 是该产品的一个模块,客户可以通过输入不同的参数获取不同的风险数据。
  在测试该 API 的过程,就是对这个接口的测试,不同的 Token 对应不同的订单,对应不同的标签,对应不同的返回。本文主要介绍在测试该接口时总结的一些场景用法。
  工具介绍
  目前接口测试的工具,例如 Postman/SoupUI,等大多都提供了接口的发送、响应结果的获取、以及针对响应结果的断言,都可以用来做接口的自动化测试,我们目前选用的工具是 JMeter,各种工具大同小异。如对 JMeter 工具不了解的同学请戳  Bioneck  分享的  Jmeter+Jenkins 文章
  实现本次自动化测试用到的组件介绍 :
  1. Threads–> 线程组
  2. 配置元件–> HTTP 请求默认值
  3.配置元件–> JDBC Connection Configuration
  4.配置元件–> HTTP 信息头管理器
  5.定时器–> 高斯定时器
  6.Sampler–> HTTP 请求
  7.Sampler–> JDBC Request
  8.后置处理器–> 正则表达式提取器
  9.断言–> BeanShell 断言
  10.断言–> 响应断言
  11.监听器–> 查看结果树
  测试场景与测试实现
  1、使用Token调用API
  一个最简单的 HTTP 请求,由 host+ 端口 + 路径 + 参数构成,调用 API 的设置如下:
  1) HTTP 请求默认值 ,设置好服务器 IP 和端口,所有作用范围内的 HTTP 请求可以不再指定。
  2) HTTP 请求,设置路径和参数
  Red.Q 的请求是 GET 方法,参数可以加入 Parameters ; 如果是 POST 方法的 JSON body,参数可以放入 Body Data 内。
  POST 请求时,参数内有中文,需要设定 Content encoding 为 utf8
  3) 调用完成后,通过查看结果树查看调用结果。
  2、Mock-server 的机制
  需要每次请求时,把 request_id 放到 Header 内,随请求一起调用(HTTP 信息头管理器)。
  1) HTTP 信息头管理器
  将 HTTP 信息头管理器放入 HTTP 请求下,该 HTTP 信息头管理器内的参数,只对该 HTTP 请求生效。
  右边的设置,每次 HTTP 请求 Mock-server 时,会将 REQUEST-ID 加入到请求 Header 内。
  2)查看结果树内,可以看到发送的 Header。
  3、断言:响应结果的文本断言
  每次执行测试后,需要了解本次执行的结果正确与否,以上的步骤只能知道我们返回了什么,不能确认到底返回的对不对。这个时候需要用到断言,对响应结果进行验证。
  1)响应断言,提供对所有请求的响应结果内的内容进行断言,一般为文本断言。
  将响应断言放入HTTP请求下,会对该HTTP请求调用的响应结果进行断言。
  要测试的文本放入测试的模式内,可添加多个验证文本。
  2) 查看结果树内,如果与指定的内容不一致,请求会标记为失败,并给出失败原因。
  4、断言:响应的结果与数据库内的字段比较
  部分场景下,要求每次调用 API 后,需要验证对应的 [风险等级]符合预期。而 [风险等级] 保存在数据库内,需要通过 JDBC Request 来实现对数据库的操作。
  1)JDBC Connection Configuration,提供对数据库的连接配置。
  2) JDBC Request,设置查询 SQL
  验证结果一般是查询类的 SQL,QueryType 选择 Select Statement;
  如果需要在某个请求开始前对数据库内的数据做新增修改删除,则需要选择 QueryType为Update Statement;
  3)在 JDBC Request 下,添加响应断言,验证响应结果与字符串一致。
21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • ln666666
    2021-7-28 13:38:02

    图片看不清楚呀

  • Mr_Duan
    2018-6-22 15:47:12

    图片太模糊了看不清啊,大神有清晰版

  • smith1982
    2017-12-06 22:13:30

    图太模糊了

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号