Jmeter对禅道进行性能测试分享
前言jmeter工具的学习和使用。
一、背景
前段时间没事,自己在虚拟机上搭建了一个禅道环境,并在外机上安装jmeter,编写脚本对禅道进行简单的性能测试。
二、操作步骤
1.环境搭建
1.1、禅道环境搭建:本地电脑安装VMware Workstation Pro虚拟机管理软件,然后在软件上安装一台window虚拟机。在禅道管网下载禅道安装包(注意:需要下载windows的开源版本),下载后解压到本地,并启动应用:
http://www.51testing.com/attachments/2023/02/15326880_202302061353191v5LV.png
1.2、jmeter下载:在外机上下载jmeter,下载地址:https://jmeter.apache.org,下载后,可直接解压则可以正常使用。
1.3、jmeter环境变量配置:第一步:在系统变量-新建JMETER_HOME(全部大写)环境变量,变量值为JMeter解压后的路径,值(例如):C:\jmeter\apache-jmeter-5.5。第二步:在系统变量中,双击classpath变量在值后面加上%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar; 点击确定。第三步:在系统变量中,双击“Path”变量,新建添加内容“%JMETER_HOME%\bin”,点击确定。
http://www.51testing.com/attachments/2023/02/15326880_202302061353211bq4o.png
1.4、jmeter环境配置是否成功检测:打开cmd,输入jmeter,如果可成功打开jmeter,则环境配置成功。
1.5、Java环境下载:打开java官网地址可下载(前提需要注册一下):https://www.oracle.com/java/technologies/downloads/#java8-windows,选择windows64版本下载即可,下载成功后,一直点击下一步即可成功安装。(注意:安装时,要把java的安装路径记下来,后面环境配置需要用到)
1.6、Java环境配置:第一步:系统变量下,新建JAVA_HOME,值是java安装的根路径,例如:D:\java\jdk1.8.0_361,第二步:新建CLASSPATH,(如果有的话,就不要新建了),在其值下面加上次值:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;第三步:在系统变量path后面加上值:%JAVA_HOME%\bin、%JAVA_HOME%\jre\bin。
http://www.51testing.com/attachments/2023/02/15326880_202302061353241q8iD.png
1.7、Java环境配置是否成功检测:打开cmd,输入Java - version,可正常输入java版本信息,则表示java配置成功。
2.jmeter测试禅道接口脚本编写
2.1、fiddle抓取接口信息,并于jmeter进行单接口联调:在虚拟机环境下,打开禅道环境,访问禅道官网,第一步:利用fiddle抓包工具,抓取禅道登录接口信息,将接口地址,请求头信息,请求的用户参数,和content-type类型等信息记录下来。第二步:在外机上打开jmeter,新建测试计划,计划下新增线程组,线程组下新建请求,新增查看结果树,新增消息头管理器。第三步:将fiddle抓去到的信息,填写到jmeter新增的配置原件下,点击启动,进行单接口联调。
2.2、正则表达式提取Cookid,进行参数传递:登录接口发送成功后,响应头中返回了Cookid,可利用新增正则表达式提取器来提取。
2.3、正则表达式参数讲解(延申内容):
正则表达式一般是把你需要提取的信息全部填上,然后在把你想要提取的信息,一般换成(.*?). 表示匹配任何字符,?表示任意个字符,?表示不要太贪婪,在找到第一个匹配项后停止。
模板:表示取第几个值,$-1$表示取所有值,$0$表示随机取值,$1$表示取第一个值,$2$表示取第二个值
匹配数字: 0表示随机取值, 1代表全部取值。
缺省值:如果正则表达式取不到值,则使用此缺省值。
http://www.51testing.com/attachments/2023/02/15326880_202302061353271kWWD.png
2.4、怎样检测正则表达式提取的信息是否拿到:可以新增原件Debug Sample(调试取样器),里面参数一般不用做改变。
2.5、JSON提取器使用(延申内容):除了利用正则表达式,一般也可以用,JSON提取器。JSON提取器一般用在返回信息是json格式,用的时候一般用 . .来根据树形结构来提取字段信息,如果多个字段在一个节点,则需要用[]切片加序号来提取信息。
2.6、不同线程之间传递Cookid:登录线程提取Cookid值后,可通过添加BeanShell后置处理器,通过函数来把局部变量设置为全部变量,如:${__setProperty(全局变量名,${局部变量名},)}; ,在其他线程中使用时候,用法为:${__P(全局变量名)}; ,这样则可成功在不同线程组之间传递变量信息。
http://www.51testing.com/attachments/2023/02/15326880_202302061353301Dryk.png
2.7、登录线程只登录一次控制:第一种方法:添加setup线程组,将登记接口放到次线程下,线程循环次数改为一次,则可控制登录接口只执行一次,且每次都是先执行。第二种方法:在同一个线程组中时,可以先添加循环控制器,把所有的请求放到循环控制器下面,然后再添加仅一下控制器,把登录请求放到此控制下,则可做到登录请求只执行一次。
2.8、多线程、多请求执行顺序:第一:除了setup每次都是最先执行的线程,teardown每次都是最后执行的线程外,其他线程都是排在前面的先执行,排在后面后执行。第二:在一个线程组下有多个请求,则需要在线程组下面添加逻辑控制器Critical Section Controller,再把多个请求按执行顺序放到逻辑控制器下面,那么多个请求并发操作时候,则会按顺序执行请求。
3.jmeter脚本执行
3.1、图形化模式下执行:这种模式下执行,没什么说的,就是打开jmeter,打开编写的脚本文件,选择你需要执行测试计划,或者某个线程组,点击执行按钮,等待程序执行完成,查看添加的监听器,如查看结构树,聚合报告来看一下接口执行的基本信息,一般在脚本调试阶段会在此模式下运行脚本。
3.2、非图形化模式下执行:保证jmeter已配置了系统变量,如在windows下,可输入cmd,打开doc窗口,输入jmeter的运行命令,如:jmeter –n –t D:\test01.jmx –l D:\html\csvlog.log –e –o D:\html\Report,-n -t D:\test01.jmx ,表示执行jmeter的脚本文件,–l D:\html\csvlog.log,表示将执行jmeter的脚本文件记录并输出log文件, –e –o D:\html\Report,表示将执行jmeter的脚本生成html文件,html文件里面记录了像,接口运行中的参数信息,如接口运行错误率,吞吐量,响应时间,等等。正常做性能测试,都会在非图形化模式下运行的,因为图形化运行脚本,也为打开jmeter软件也有资源消耗,这样对接口性能测试有一定影响。
http://www.51testing.com/attachments/2023/02/15326880_202302061353331oTj8.png
总结
以上就是今天要讲的内容,本文仅仅简单介绍了jmeter的使用,而jmeter提供了大量函数及其他模块的集成使用,也是值得我们探险和学习。
页:
[1]