Jmeter实现接口测试

接口测试分为:功能测试、自动化测试、性能测试

一、接口功能测试:

  1、制定测试计划、分配任务:环境搭建、测试接口
  2、从api文档中提取接口清单:提取三要素:URL地址+请求方式、类型(JSON串)、状态码
  3、设计接口测试用例并参数化覆盖测试用例:覆盖所有必选参数、组合可选参数、参数边界值、越界数据、参数取值范围是枚举变量,覆盖所有枚举值(性别、月份、周)、空数据、特殊字符、错误的数据、政治敏感词
  4、编写脚本实现,导入设计的测试数据:csv数据文件/用户参数
  5、测试结果汇总,BUG提交

二、接口自动化测试:

原则:

  1、只测试重要或重复调用的接口
  2、只设计正向测试用例
  3、自动化脚本可重读执行
  4、一个线程组只设置一个取样器,方便单个接口测试

jmeter接口自动化实现:

  1、参数化生成测试数据,使用断言判断响应结果
  2、使用setUp新增测试数据,tearDown最后删除自动化测试生成的数据
  3、从setUp线程组的取样器中提取数据
  4、跨线程组关联-调用函数:setProperty、Property

步骤(数据库-增删改查)跨线程组关联方式:

  1、添加测试计划(勾选独立运行每个线程组)
  2、添加http信息头管理器
  3、添加http请求默认值
  4、添加用户定义的变量(路径)
  5、添加setUp线程组进行新增
  6、setUp线程组下添加取样器:
    a、改请求方式-post
    b、路径填写变量名
    c、消息体上传JSON串,将参数清空;
    d、涉及到id可以用函数UUID生成后放到参数里,涉及到名字可以函数Random(随机数)需添加前缀,例:汪_函数
7、在新增取样器下添加响应断言:
    a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写201
    b、设置为响应文本,模式匹配规则选择Substring,预期结果填写添加的前缀
8、在新增取样器下添加后置处理器-正则表达式提取器
    a、设置新的引用变量名
    b、正则表达式填写结果树下的格式:"xxxx":"(.*?)"
    c、模板:$1$
    d、匹配数字:0或者其他
    e、缺省值没有就勾选后面的框
9、设置函数setProperty
    a、属性名称,新设置,函数Property中会填写在属性名称中
    b、填写正则表达式提取器中的变量名
    c、生成后复制粘贴在BeanShell取样器中
10、在setUp线程组下添加BeanShell取样器
11、添加tearDown线程组删除测试数据
12、在tearDown线程组下添加取样器
    a、改请求方式-delete
    b、路径填写变量名+新增的id(需要用到上一个接口返回的数据那就用正则表达式提取器)
13、设置函数Property
    a、函数setProperty的属性名
    b、生成后复制粘贴在tearDown线程组下的取样器路径后面
14、在tearDown线程组下的取样器添加断言
    a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写204
15、添加普通线程组(改)
16、在改线程组下添加取样器
    a、改请求方式-put
    b、路径填写变量名+想要修改的id(调用Property函数)
    c、消息体上传JSON串,将参数清空;
    d、id调用Property函数,其余字段前缀update_+时间函数
17、在改线程组下的取样器下添加响应断言
    a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写200
    b、设置为响应文本,模式匹配规则选择Substring,预期结果填写添加的前缀
18、添加普通线程组(查)
19、在查线程组下添加取样器
    a、改请求方式-get
    b、路径填写变量名+想要修改的id(调用Property函数)
20、在查线程组下的取样器下添加响应断言
    a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写200
    b、设置为响应文本,模式匹配规则选择Substring,预期结果填写添加改的前缀
21添加结果树

步骤-发送sql语句方式:

1、测试计划下导入jar包
2、测试计划下添加配置元件-JDBC
    a、定义变量名
    b、url:jdbc:sqlite:数据库资源路径db.sqlite3
    c、JDBC:org.sqlite.JDBC
3、在取样器下添加JDBC Request
    a、输入配置元件-JDBC中变量名
    b、编写sql语句:select 字段 from 表名 where 字段 like "查询的前缀_%"
    c、Variable names:填写变量名,几个字段填写几个变量名
4、在取样器下添加线程组
    a、改请求方式put/get/delete
    b、路径填写变量名+想要修改的id/查询的id/删除的id

三、Jmeter性能测试

原则:

1、线程组:增删改查每个功能点都需要建立单独线程组,避免同一个线程组内添加多个取样器
2、参数化:尽量避免采用CSV,使用前缀_函数生成测试数据
3、查看结果数:一个测试计划就一个结果树
4、报告:添加聚合报告
5、分布式:数量过大采用分布式
6、新增/删除/修改:不要采用时间模式(集合点、QPS)压测,直接使用线程数和循环(特殊情况除外:双十一)

Jmeter性能实现

  • 例:半个小时内依次启动1000个用户,要求平均响应时间在3000ms内且错误率为0
    1、添加测试计划
    2、添加线程组
    a、线程数设置为1000
    b、时间设置为1800
    3、添加取样器
    a、设置协议、ip、端口号、请求方式、路径、内容编码
    4、测试计划下右击监听器下添加聚合报告/汇总报告(Std Dev偏差值:越小越好)看平均响应时间和错误率

  • 例:100个用户同时访问服务器,要求平均响应时间在3000ms内且错误率为0(高并发)
    1、添加测试计划
    2、添加线程组
    a、线程数设置为100
    3、添加取样器
    4、添加定时器:Synchronizng Time(同步定时器):高并发-多人同一时间进行某件事
    a、第一行(一组用户数)设置数量(总用户数可以整除一组用户数)100;总用户数为集合数,这里设置的数为出发数,假如设置了50那就是分了2组50人出发,但是需求是100人同时
    5、测试计划下右击监听器下添加聚合报告/汇总报告(Std Dev偏差值:越小越好)看平均响应时间和错误率

  • 例:模拟2个用户以20QPS(20次每秒)的频率访问服务器持续10秒,要求平均响应时间在3000ms内且错误率为0(高频率)
    1、添加测试计划
    2、添加线程组
    a、线程数设置为2
    b、循环次数设置为200
    3、添加取样器
    4、添加定时器:Constant(常量吞吐定时器):高频率-一个人多次进行某件事
    a、访问频率设置为1200(默认是分钟,其他单位需要换算)
    5、测试计划下右击监听器下添加聚合报告/汇总报告(Std Dev偏差值:越小越好)看平均响应时间和错误率以及访问频率(40左右)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值