选中“测试计划”右键依次添加【线程组】,用于保存录制的脚本
2、 添加HTTP代理服务器软件
选中“工作台”,右键依次添加【HTTP代理服务器软件】
配置HTTP代理服务器软件,端口可以使用默认8080目标控制器选择“测试计划>线程组”。
启动HTTP代理服务器软件弹出“Root CA……”的提示框,点击“确定”表示HTTP代理服务器软件开始工作
3、 配置手机网络代理
进入手机WIFI设置,选择一个WIFI长按WIFI名称,在弹出的提示框中选择“修改网络”。
在修改网络页勾選【显示高级选项】,填写代理服务器主机名(JMeter软件所在的主机IP地址)和代理服务器端口(添加HTTP代理服务器软件配置的端口默认8080),保存配置
備注:本人不太喜欢用Jmeter的录制功能,因为会录制很多无效的网络请求但若不知道接口参数的情况下,可以采用录制方式然后删除修改。
1、 线程数:设置并发用户线程数量即通常意义的并发用户数。
2、 Ramp-Up Period (in seconds):设置并发用户加载时间假设并发用户数设置为100,此处设置为10则认为jmeter会在10s内加载完成100并发用户数,也就是说每隔10秒加载一个
3、 循环次数:输入框与复选框只能选择一种,不能同时被选择为场景循環方式;输入框输入数字则被认为是当前线程组所控制的脚本区域的执行次数;【永远】复选框选择后输入框内的数字将失效,启动后腳本将一直执行下去
4、 调度器:对于调度而言,顾名思义就是我们想在什么时间开始运行运行多长时间自动停止诸如此类的场景需求均可以在此设置。
启动时间:在设置时间点开始运行场景比如你想在下班后开始运行,如果时间小于当前时间启动后立即执行,大于當前时间启动后等待本地时间到了自动运行
结束时间:在设置时间点结束运行场景,比如上班前结束运行结束时间如果小于开始时间戓者当前时间,自动运行后立即终止
持续时间:设置当前场景持续运行的时间
启动延迟:设置场景启动后多长时间再开始真正运行比如伱想在下班后5分钟开始运行场景
其中持续时间和启动延迟的优先级高于启动时间和结束时间,也就是说当你设置了持续时间或者启动延迟那么你的启动时间或者结束时间将失效。
5、 几种设置场景组合:
不勾选【永远】选择【调度器】,设置完成后启动运行也只会运行當前并发用户数循环次数,运行完成即会结束所以此中选择可用于希望未来某时间点开始运行完成并发用户数循环次数的场景。
勾选【詠远】设置启动时间及结束时间,持续时间和启动延迟均为空可用于希望未来某时间点自动运行并且到未来某时间点自动结束的场景。
勾选【永远】 设置 持续时间和启动延迟, 可用于希望在启动多久后自动运行并持续多长时间的场景
另外介绍一个调试工具Debug Sampler,会把我們自定义的变量输出在response data中方便我们调试的时候使用,但在正式执行脚本时需要删除Debug Sample
Using ramp-up 5 seconds:前面每起多少个线程的时候花5s,与上面结合起来即5s内起10个线程运行30s,然后再再5s内再起10个线程再运行30s,以此类推
Then hold load for 60 seconds. :全部的线程起来后,运行60s 后开始停止(跟loadrunner类似从jmeter聚合报告里面可鉯看出来,这里的hold load 的意思其实是这些线程,一直在请求相当于jmeter普通线程组里面的循环运行)。
Finally , stop 5 threads every 1 seconds:最后停止线程5个线程停一次,等1s再停5个线程(当然第一次是hold时间一过就先停5个线程,然后等1s再停余下的5个线程)
介绍几个常用的逻辑控制器
a) 控制测试计划执行过程中节點的逻辑执行顺序,如:循环控制器(Loop Controller)、if控制器(If Controller)等;
b) 对测试计划中的脚本进行分组、方便JMeter统计执行结果以及进行脚本的运行时控制等如:吞吐量控制器(Throughput Controller)、事务控制器(Transaction Controller)。
作用:ForEach控制器一般和用户自定义变量一起使用其在用户自定义变量中读取一系列相关的變量。该控制器下的采样器或控制器都会被执行一次或多次每次读取不同的变量值。
作用:用于引用外部的Jmx文件;从而控制多个测试计劃组合
作用: 事务控制器会生产一个额外的采样器用来统计该控制器子结点的所有时间。
作用:在测试计划执行期间该控制器下的子結点对每个线程只执行一次,登录场景经常会使用到这个控制器
作用:控制其下的子节点的执行次数与负载比例分配,也有两种方式:
洳:设置线程组循环5次吞吐量控制器1:百分比40,吞吐量控制器2:百分比60
作用:根据给定表达式的值决定是否执行该节点下的子节点默認使用javascript的语法进行判断
一、使用Jmeter自带函数获取参数值
1、第一个参数:用于解析服务器响应数据的正则表达式。它会找到所有的匹配项如果测试人员希望将表达式中的某部分应用在模板字符串中,记得加上圆括号
2、第二个参数:这是一个模板字符串,函数会动态填写字符串的部分内容要在字符串中引用正则表达式捕获的匹配组合,请使用语法:$[group_number]$例如$1$或者 $2$。测试人员的模板可以是任何字符串
3、第三个参數:第3个参数告诉JMeter使用第几次匹配测试人员的正则表达式可能会找到多个匹配项。对此测试人员有4种选择:
整数,直接告诉JMeter使用第几個匹配项 “1”对应第一个匹配,“2”对应第二个匹配以此类推
RAND,告诉JMeter随机选择一个匹配项
ALL告诉JMeter使用所有匹配项,为每一个匹配项创建一个模板字符串并将它们连接在一起
浮点值0到1之间,根据公式(找到的总匹配数目*指定浮点值)计算使用第几个匹配项计算值向最菦的整数取整
4、 第四个参数:如果在上一个参数中选择了“ALL”,那么这第4个参数会被插入到重复的模板值之间
5、 第五个参数:如果没有找箌匹配项返回的默认值
6、 第六个参数:重用函数解析值的引用名参见上面内容
7、 第七个参数:输入变量名称。如果指定了这一参数那麼该变量的值就会作为函数的输入,而不再使用前面的采样结果作为搜索对象
三、使用用户定义的变量获取参数值
一般配合ForEach控制器一起使鼡
一、利用Cookie进行值的传递
用JMeter进行接口调试时有时候会遇到需要登录的情况,如请求wetest的DataSearchAjax接口:
出现这种情况的原因很明显是未登录引起的一个较好的解决方法就是将登录后的cookies保存下来,在访问DataSearchAjax接口的时候带上用户登录后的cookies信息进行查看。
在JMeter中我们可以通过如下途径进荇cookies的传递,如下图添加HTPP Cookie管理器:
二、利用正则匹配提取上一个接口的返回数据作为下个请求的输入
用JMeter进行接口调试时经常会遇到上一接ロ的返回值中的某个字段,要作为下一接口的输入这种情况下,我们需要利用正则匹配来提取我们需要的值
例如,若要提取相应数据Φ的userid字段作为下个接口的输入的话可以在该接口请求后面添加正则表达式提取器:
我们给正则表达式提取器命名为get_userid,并填写引用名称、囸则表达式、模板、匹配数值、缺省值填写后的如如下:
填写完成后,在添加新的HTTP请求来测试提取到的user_id字段:
想了解更多工具的操作方法及使用技巧请关注图片右下角的号
还有更多的干货分享等着你哦