
打开JMeter,看到左边显示一个空的测试计划。右键单击该测试计划,选择添加(Add)→Threads(Users)→线程组(ThreadGroup),添加一个线程组,并命名为客服系统
1右键单击在工作台(Work Bench)→添加→非测试元件(Non-TestElements)→
在用Jmeter进行业务流程接口测试的时候,因为有多个线程组,但是所有的接口都依赖于登录接口。原先处理方式是每一个线程组里都添加一个登录接口,但是后面发现这样不是很友好,每次执行一个线程组都要调一次登录接口。所以想把登录接口提出来,单独放在一个线程组里。
实现流程大概这样:
一、建一个线程组,将登录接口添加进来
二、添加一个BeanShell Sample
里面写上提取cookie值的脚本,大致如下图
(因为测试的登录接口,响应头中返回的数据中有两个值所以分别提取两次)
三、完后,添加一个后置处理器,将提取到的值设置为全局变量
四、然后在其它线程组中添加cookie管理器,并添加引用上面设置的全部变量
问题开始出现:
所有配置完成后,开始执行,结果查看发现除登录外的其他线程组中的接口全部请求失败,原因“”用户未登录“”。
然后一通检查,添加日志,将过程都打印了出来,发现没什么问题。
然后又又又检查了一遍,发现在测试计划最外层添加了一个cookie管理器(如果最外层添加了cookie管理器,优先级要比线程组内的高,导致最终没有走线程组内设置的值)。将这个cookie管理器禁用后,成功调通。
Apache JMeter™是Apache组织开发的一款开源软件,它是 功能和性能测试 的工具,是典型的 纯Java开发 的应用程序,可以在不同平台比如Windows、Linux或macOS系统上进行软件测试。
1、基准测试:
即单用户测试,测试环境确定以后,对 业务模型 中的 重要业务 做单独的测试,获取 单用户运行时的各项性能指标 ,为多用户并发测试和综合场景测试等性能分析 提供参考依据。
[个人理解:分别模拟单用户使用某个重要业务场景; 业务即功能 ,如何去实现它,是业务逻辑的实现;例如登录业务,登录的过程是业务逻辑的实现;添加、修改、删除定时任务都是业务]
我们在查看平均事务响应时间的时候,先看整体曲线走势,如果整体趋势比较平滑,没有忽上忽下的波动情况,取“Average Time”与“90 Percent Time”都可以;如果整体趋势毫无规律,波动非常大,我们就不用“Average Time”而使用“90 Percent Time”可能更真实些。 详细分析
2、并发测试
主要指当测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如 内存泄漏、线程锁、资源争用问题 ,几乎所有的性能测试都会涉及并发测试。
是多用户执行某一 *** 作,形成瞬时压力(精确到毫秒),是一种严格的测试,主要考察系统对瞬时较大压力的承受能力。
注: 同步定时器 实现并发
3、负载测试
模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察 不同负载下 系统的 响应时间 和 数据吞吐量 、 系统占用的资源(如CPU、内存 )等,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。
4、压力测试
又称为强度测试:是在强负载( 大数据量、大量并发用户 等)下的测试,查看应用系统在峰值使用情况下 *** 作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。
压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。
一直重复长时间给系统极限压力,看系统是否能承受
压力测试时,系统内存溢出解决方案:
修改 apache-jmeter-211\bin\jmeterbat
5、稳定性测试:
主要测试 持续一段时间 访问接口,测试接口的稳定性。
主要涉及的配置为:
1)线程组设置循环次数永久,持续时间设置为15分钟(根据自己的项目要求而定)
2)必要的时候,添加统一随机定时器元件
主要有两个参数:
随机的最大时间(ms):在这个范围内进行随机
常量延时时间(ms):固定的延时时间
最后的延时时间=随机的时间+常量延时时间
6、业务场景测试:
主要测试多个接口联动,模拟真实接口的调用,增加统一随机定时器模拟用户真实 *** 作
比如添加购物的流程涉及到:登录接口–搜索商品接口–浏览商品接口–添加到购物车接口
其中主要最难的是:登录接口提交的验证码处理,我之前的项目是开发给定了一个固定的万能验证,进行提交登录,添加>
用来存储浏览器产生的用户信息(例如登录成功后的cookie信息)
点击后,>
什么是接口测试
为什么掌握接口测试
怎么做接口测试
案例:一个登录接口
场景:
产品上规定用户名6-10个字符数字下划线
测试人员在前端做了娇艳,通过!
后段开发人员没有做校验!
风险:直接抓包去纂改你的接口,然后绕过校验,通过sql注入直接随意登录
危害:公司损失!
功能测试岗位
自动化测试岗位
性能测试岗位
1、打开jmeter,选中 测试计划 右键 - 添加 - 线程(用户)- 线程组,默认线程数1,等接口调过再增加线程数/循环次数/延时时间
2、选中线程组 - 添加 - 配置元件 - >
将一个常量写成变量的形式,每次调用参数获得不同的数据。
PS: 这里要说下Cookie,在后面的参数化过程中发现登录接口请求头里要携带cookie;我一直的误解就是只有登录才有cookie产生,其实是不对的, 一般的cookie是会话被创建时就产生,关闭后就消失 ;可以随便访问项目的网页获取到cookie,然后想办法将cookie加到请求头里去~
1、CSV控制-CSV DATA Set Config
线程组 -> 新建请求 ->参数用变量代替 ,格式${变量名}
新建EXCEL文件,写入测试数据-> 另存为csv文件的格式;
线程组 ->添加配置元件->CSV DATA Set Config->在配置元件里输入csv的绝对地址 ->若CSV不含表头,则在CSV数据文件设置里输入表头变量;反之,则不添加;
2、用户自定义变量
比如有登录接口和获取token的接口,都需要输入用户名和密码,如果我在每个接口请求参数都输入一次,相当于输入了两次;那么,可以使用自定义变量,将用户名和密码的值存在一个变量里,后续的接口需要时直接调用参数即可,减少重复输入的次数。具体 *** 作如下:
线程组-> 添加配置元件->选择用户自定义变量->添加变量名及对应的值(key&value);
线程组 -> 新建请求 ->参数用变量代替,格式为${变量名},调用变量值;
PS: 用户定义变量的所有数据只会初始化一次,不管你多少线程,循环多少次,它的值是不变的(即同一个变量的值写死,不能改变)。 用户自定义变量作用域不同,表示的含义也有区别;放在线程组外,表示全部变量;放在线程组内表示局部变量。
3、用户参数
在调试脚本的时候,可以使用前置处理器中的用户参数组件进行数据的提供,在该数据中可以使用固定值也可以使用变量值。
线程组-> 添加前置处理器->选择用户参数->添加变量名,并输入多个对应的值
每次迭代更新一次:如果选中该选项,则参数的值在每个迭代中保持不变,在新的迭代开始时取下一个值。
PS:在使用用户参数时,如果有n个值,需要设置线程数=n,若设置循环为n,只会调用第一个值执行n遍。
4、函数助手
函数助手里内置了多个函数,如__Random或${__CSVRead(,)}等可以按需求使用不同的功能函数;
面板-> 选项-> 函数助手对话框-> 根据需要选择不同的函数-> 设置范围及变量名->后续接口调用。
${__CSVRead(,)}可以实现读取CSV数据,()里逗号左边是CSV路径,右边是CSV里存放的变量的索引;索引从0开始依次增加1,如 ${__CSVRead(D:\jmeter\loginstxt,0)}。 注:这里的CSV文件就不要表头了。
用户自定义变量的值写死,不能改变;而用户参数,可以引入函数助手,使得同一变量有不同的变量值。
以上就是关于Jmeter那点事·脚本录制全部的内容,包括:Jmeter那点事·脚本录制、jmeter 载入的cookie文件在哪、Jmeter跨线程组传递token失败等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)