JMeter安装和使用(一)

apache jmeter安装和使用

image description

JMeter安装和使用

测试前的准备工作

  1. 需要java环境,所以需要安装jdk,可以参考文章Windows系统Java环境变量配置

  2. java环境配置好后,到jmeter官网下载对应的版本,传送门 http://jmeter.apache.org/download_jmeter.cgi;根据自己本地的java环境选择对应的jmeter版本。

  3. 解压后进入bin目录,Windows机上执行jmeter.bat文件即可

建测试计划

  1. 打开后,右键新建 线程组;

  2. 在线程组上添加HTTP请求;如图:

description

  1. 再右键添加结果树,可以查看测试结果。

到此一个简单的HTTP请求新建成功。

定时器

jmeter提供了很多元件,帮助我们更好的完成各种场景的性能测试,其中,定时器(timer)是很重要的一个元件,最新的3.0版本jemter提供了9种定时器(之前6种),下面一一介绍:

定时器的作用域

  1. 定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面);

  2. 当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;

  3. 如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入;

固定定时器(Constant Timer)

description

如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。

对于“java请求”这个sampler来说,定时器相当于loadrunner中的pacing(两次迭代之间的间隔时间);

对于“事务控制器”来说,定时器相当于loadrunner中的think time(思考时间:实际操作中,模拟真实用户在操作过程中的等待时间)。

这里附上一个传送门,对loadrunner中的pacing和think time有比较全面的解释:https://zhidao.baidu.com/question/1431215934913423459.html 我们通常说的响应时间,应该大部分情况下是针对某一个具体的sampler(http请求),而不是针对一组sampler组合的事务。

参数化

配置元件——CSV Data Set Config

  1. 点击线程组添加配置元件 → CSV Data Set Config:

description

  1. 说明:

Filename:F:\jmeter\csvtest.dat文件名,保存参数化数据的文件目录,可选择相对或者绝对路径(建议填写相对路径,避免脚本迁移时需要修改路径);

File encoding:UTF-8,F:\jmeter\csvtest.dat文件的编码格式,在保存时保存编码格式为UTF-8即可;

Variable Names(comma-delimited):对对应参数文件每列的变量名,类似excel文件的文件头,起到标示作用,同时也是后续引用的标识符,建议采用有意义的英文标示;

如:有几列参数,在这里面就写几个参数名称,每个名称中间用分隔符分割,这里的 user,pwd,可以被利用变量名来引用:user,{pwd};

Delimitet:参数文件分隔符,用来在“Variable Names”中分隔参数,与参数文件中的分隔符保持一致即可;

Allow quote data:是否允许引用数据,默认false,选项选为“true”的时候对全角字符的处理出现乱码;

Recycle on EOF?:是否循环读取参数文件内容;因为CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入; △ Ture:为true时,当已读取完参数文件内的测试用例数据,还需继续获取用例数据时,此时会循环读取参数文件数据(即:读取文件到结尾时,再重头读取文件); △False:为false时,若已至文件末尾,则不再继续读取测试数据;通常在“线程组线程数* 线程组循环次数>参数文件行数”时,选用false(即:读取文件到结尾时,停止读取文件);

Stop thread on EOF?:当Recycle on EOF为False时(读取文件到结尾),停止进程,当Recycle on EOF为True时,此项无意义; △若为ture,则在读取到参数文件行末尾时,终止参数文件读取线程; △若为false,此时线程继续读取,但会请求错误,因此时读取的数据为EOF;

Sharing mode:共享模式,即参数文件的作用域,有以下几种方式: △All threads:当前测试计划中的所有线程中的所有的线程都有效,默认; △Current thread group:当前线程组中的线程有效; △Current thread:当前线程有效;

完成之后,将刚才生成的参数写入参数对应的值里面:

description

HTTP属性管理器

jmeter是一个开源灵活的接口和性能测试工具,当然也能利用jmeter进行接口自动化测试。在我们利用它进行测试过程中,最常用的sampler大概就是Http Request,使用这个sampler时,一般都需要使用配置元件里的http属性管理器,其作用就是用于尽可能的模拟浏览器的行为,在http协议层上定制发送给被测应用的http请求。

jmeter提供以下五种http属性管理器: HTTP Cache Manager:Cache管理器 HTTP Cookie Manager:cookie管理器 HTTP Header Manager:信息头管理器 HTTP Authorzation Manager:授权管理器 HTTP Request Defaults:请求默认值 以HeaderManager为例:

description

通常Jmeter向服务器发送http请求的时候,后端需要一些验证信息,比如说web服务器需要带过去cookie给服务器进行验证,一般就是放在请求头(header)中,或者请求传参需要定义参数格式等;因此对于此类请求,在Jmeter中可以通过HTTP信息头管理器,在添加http请求之前,添加一个HTTP信息头管理器,发请求头中的数据通过键值对的形式放到HTTP信息头管理器中,在往后端请求的时候就可以模拟web携带header信息。

PS:可以点击添加、删除按钮等来新增和删减信息头的数据,也可通过载入按钮来将信息头数据加载进去(信息头数据较多时推荐使用)。

断言

断言就类似LoadRunner中的检查点。对上一个请求返回的信息,做字符串、数据包大小、HTML、XML、图片等做判断,确保返回的信息的准确性。

description

添加响应断言:对返回code的判断。

如果接口返回成功,则会返回0(以自己实际的返回为准,这个返回为是我的项目返回,是xml格式)

断言中可以添加多个断言一起判断,断言中也可以使用参数化方法,进行动态判断。

description

description

添加断言结果

description

断言判断正确

description

异常的断言

运行脚本,如果接口返回的code不是0则会出现断言找不到的提示信息。

description

未完待续ing