您的位置:首页 > 其它

使用JMeter测试工具对服务器并发执行能力,响应速度等方面进行压力测试

2019-03-21 11:39 218 查看

测试内容

使用JMeter测试工具对服务器并发执行能力,响应速度等方面进行压力测试。

测试工具以及环境配置

  • 测试工具:JMeter,版本:apache-jmeter-3.1

  • 环境配置:配置JDK环境变量,以及JMeter的环境变量
    1)JDK环境变量配置:
    变量名:JAVA_HOME变量值:C:\Program Files\Java\jdk1.8.0_51 (即jdk安装的位置)
    变量名:Path 变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
    变量名:CLASSPATH 变量值:.;%JAVA_HOME%lib;%JAVA_HOME%lib\tools.jar
    配置完成之后点击“确定”,jdk就配置完成。

    2)JMeter环境变量配置:
    变量名:JMETER_HOME 变量值:I:\apache-jmeter-5.0
    变量名:CLASSPATH
    变量值:
    %JMETER_HOME% \lib\ext\ApacheJMeter_core.jar;
    %JMETER_HOME%\lib\jorphan.jar;
    %JMETER_HOME%\lib/logkit-2.0.jar;
    创建完成之后点击“确定”即可。

  • 测试环境
    1) 服务器
    Windows10 64位操作系统
    处理器:Intel® Core™ i5-4590 CPU @ 3.30GHz 3.30GHz
    内存(RAM):8GB
    应用服务器:apache-tomcat-7.0.88 最大线程200

    2) 客户端
    Windows10 64位操作系统
    处理器:Intel® Core™ i5-4590 CPU @ 3.30GHz 3.30GHz
    内存(RAM):8GB

    3) 测试软件
    apache-jmeter-5.0

测试说明

  1. 名词定义(时间单位ms)
    Sample:本次测试场景共运行多少线程;
    Average:平均响应时间;
    Median:统计意义上的响应时间中值;
    90% line:所有线程中90%的线程响应时间都小于xx的值;
    Min:响应最小时间;
    Max:响应最大时间;
    Error:出错率;
    Throughput - 吞吐量以“requests/second、requests /minute、 requests /hour”来衡量。 时间单位已经被选取为second,所以,显示速率至少是1.0,即每秒1个请求;
    Kb/sec - 以Kilobytes/seond来衡量的吞吐量。

入门教程参考 https://www.geek-share.com/detail/2718624218.html

测试过程

启动JMeter,下载安装包解压后,进入bin/目录,点击箭头所示文件,双击打开,即可进入JMeter界面。


  • 单个服务以登录为例

    相关设置,登录请求。


    然后根据需求设置并发线程数,查看聚合报告中相关参数结果,比如10个线程并发的聚合报告如下:

  • 多个服务按比例并发执行

    如果在一个线程组中执行,设置多个服务并发比例为1:1:1:…想要按比例测试多个服务,则需要创建多个线程组,创建方法同之前创建的线程组,只不过在线程组的线程数选项中设置不同,线程组1,2…的线程数比例即为所想要的比例。在此之前需要先右键测试计划添加一个HTTP请求默认值(HTTP Request Defaults),设置访问的服务器IP地址,端口号,协议等。

    示例:八个服务同时启动,包括用户登录,查看个人信息,获得一张舰船图片,获得所有舰船
    照片,修改用户信息,获得所有国家,获取搭载关系,获取被搭载关系。
    聚合报告如下:

    当不需要多个线程组同时存在运行时,可以右键关闭(Disable)不需要的线程组。

  • 保持登录状态,多个服务并发执行

  1. 在进行多服务按比例并发执行时,需要保持登录状态,所以在跨线程组调用变量时,要先将登录后服务器返回的JSESSIONID设置为全局变量。

    1) 设置全局变量用到的函数为__setProperty(),调用全局变量的函数为__property()。首先打开函数助手,输入需要的值点击生成按钮即可生成对应的脚本代码。所以可以得到设置全局变量的脚本代码为KaTeX parse error: Expected group after '_' at position 2: {_̲_setProperty(ne…{JSESSIONID},)};调用全局变量的代码为 {__property(newjsessionid,)}。

    2) 右键登录的HTTP请求,新建正则表达式提取器,从服务器返回的响应信息头中 利用正则表达式JSESSIONID=(.*); Path=/获取JSESSIONID。

    3) 在登录所在的线程组新建BeanShell Sampler,将设置全局变量的脚本代码写进去。

    4) 在需要用到全局变量的HTTP请求所在线程组建立HTTP Cookie管理器,用来传递 JSESSIONID,使用方式如下图。其中域是要填写服务器的IP地址,表示访问该IP地址的服务都将使用此缓存。

    参考博客:
    jmeter如何设置全局变量以及调用方法 https://blog.csdn.net/r455678/article/details/53576182?utm_source=blogxgwz1

    JMeter的惯用函数使用-字符串相关 https://www.geek-share.com/detail/2687073500.html

示例:
用户登录后,对分类型查询所有设备,装备内码列表和国家列表三个服务进行压力测试。

(以上,比较乱,整合了很久之前的报告,在过程中出现的错误没有截图保存,写此博客只是想记录一下,测试也没有很深入。)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: