• Apache Jmeter(1)


    Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java 对象、数据库, FTP服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

    1. 下载JMeter

    官方网站下载最新版本: http://jmeter.apache.org/download_jmeter.cgi ,目前最新版是Apache JMeter 2.9
    使用JMeter依赖jdk,建议安装jdk 1.6版本
    Linux下安装jdk参考文章:http://www.linuxeye.com/Linux/Linux-install-JDK.html
    Windowns下安装jdk同Linux下安装类似,这里就不介绍了。

    2. 启动JMeter

    这里就在win下进行,图形界面较为方便
    在目录apache-jmeter-2.9in 下可以见到一个jmeter.bat文件,双击此文件,即看到JMeter控制面板。

    3. 运行预准备

    现在来对LinuxEye进行压力测试,压力测试对象为随机的几个网页链接,这几个链接是写在一个文本文件中的,在压力测试的时候会随机读取。
    1) 建立一个线程组,如下图

    为什么要建立线程组?原因很简单,因为我们要模拟多个线程(用户)来访问LinuxEye
    线程属性部分中,线程数是启动多少个线程,我这里填写的是10,Ramp-Up Period (in seconds)表示线程之间间隔多少时间允许,单位是秒,比如如果填写10,那么10/10=1表示10个线程间每隔1秒钟请求网站。
    循环次数:60个线程运行完毕算是一次,循环次数就是这样的一个请求过程运行多少次,我这里测试就填写的是2.
    每次修改一个设置后,别忘记了保存一下。

    2) 设置请求服务器、压力链接等信息
    接下来很自然的是,我们要测试的网站地址是什么?链接是什么?所以现在我们就来设置这些信息。
    右键点击我们刚创建的线程组,在弹出的菜单中,选择添加->Sampler->Http请求,弹出如下图界面:

    路径:
    假如你只是对一个链接进行压力测试,直接填写一个链接就ok,比如 http://www.linuxeye.com,但是大多数情况下都不是这样的,我们这里需要多个链接,就如同刚开始讲到的那样,我们要将多个链接保存到一个文本文件中,然后随机读取进行压力测试。我们可以这么做,如图:

    在选择一个功能下拉列表中选择_StringFromFile,然后在本机新建一个测试文件C:Users ootDesktopapache-jmeter-2.9 est.txt,在第一行(你也可以不在第一行)的值中填写测试文件的路径,如下图:

    然后点击“生成”按钮,在生成按钮的左边文本框中将生成一个字符串如:
    ${__StringFromFile(C:Users ootDesktopapache-jmeter-2.9 est.txt,,,)}
    在test.txt测试文件中,我们每行写一个URL链接,如下格式:

    /command
    /linuxrumen
    /program
    /jianzhan
    /command/cat.html
    /command/chmod.html
    /command/lsattr.html

    注意,每行前面并没有http://www.linuxeye.com这样的信息,因为我们在前面已经填写了服务器地址为www.linuxeye.com,这里就没必要再为每个url填写这个相同前缀了;另外,上面的url格式也只是个例子,表示域名后的部分。

    这样一来,当我们并非请求的时候,就会从test.txt中随机选择url来进行压力测试。
    另外值得注意的一个地方是,如果参数中有中文的情况,运行的时候可能会出现乱码,这个时候就需要注意你在Jmeter中的编码设置与你要请求的网页编码是一致的。

    路径文本框下面的选项,可以按默认的就成,Use multipart/form-data for HTTP POST是当请求中有附件的情况,一般情况下都不用选中的。

    3) 查看运行结果
    鼠标右键点击线程组,在弹出的菜单中选择添加->监听器->用表格查询结果,如下图:

    4. 运行

    当然,在运行前,请把所有修改都保存好
    运行后的结果表格如下:

    各属性如下:
    Sample:每个请求的序号
    Start Time:每个请求开始时间
    Thread Name:每个线程的名称
    Label:Http请求名称
    Sample Time:每个请求所花时间,单位毫秒
    Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
    Bytes:请求的字节数
    如果Status为叉,那很显然请求是失败了,但如果是勾,也并不能认为请求就一定完全成功了,因为还得看Bytes的字节数是否是所请求网页的正常大小值,如果不是则说明发生了丢包现象,也不是完全成功。

    在下面还有几个参数:
    样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数。
    平均:每个线程请求的平均时间
    最新样本:表示服务器响应最后一个请求的时间
    偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布(这个我不是很理解)。

    术语:
    1、线程组:测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。可以在“Test Plan(鼠标右击) -> 添加  ->Threads(Users) -> 线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。
    2、取样器(Sampler):可以认为所有的测试任务都由取样器承担,有很多种,如:HTTP请求。
    3、断言:对取样器返回的请求结果给出判断是否正确。
    4、monitor:它的功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等

  • 相关阅读:
    Fidder4 顶部提示 “The system proxy was changed,click to reenable fiddler capture”。
    redis 哨兵 sentinel master slave 连接建立过程
    虚拟点赞浏览功能的大数据量测试
    python基础练习题(题目 字母识词)
    python基础练习题(题目 回文数)
    python基础练习题(题目 递归求等差数列)
    python基础练习题(题目 递归输出)
    python基础练习题(题目 递归求阶乘)
    python基础练习题(题目 阶乘求和)
    python基础练习题(题目 斐波那契数列II)
  • 原文地址:https://www.cnblogs.com/myc618/p/4602639.html
Copyright © 2020-2023  润新知