1.环境准备

需要的软件环境:

  1. Jmeter软件,版本5.1;
  2. JDK1.8;
  3. 后台需要测试的网站地址;

2.创建测试工程

打包jmeter之后,默认会创建一个测试工程,名称为:test plan,本次我们测试云客服系统,因此将test plan修改为:cmsc test plan。

本次测试我们不对整个系统中所有的模块进行,仅仅针对租户的一些模块功能为例,进行一次增删改查的测试示例,用于说明jmeter的核心测试功能。

Jmeter测试教程(图文)_压力测试

3.增加thread group进行压力测试

3.1增加全局变量

   由于每个请求均需要配置有后台请求的server和端口号,以及登录的用户名,我们使用全局变量来定义这些值,然后就要可以在各个请求中以变量形式使用这些参数,以达到全局使用和修改这些参数的以方便我们使用的目的。

这里我们定义server、port、username、password4个全局变量;

Jmeter测试教程(图文)_Group_02

Jmeter测试教程(图文)_压力测试_03

3.2增加setUp Thread Group

  1. setup Thead Group的作用,类似于junit测试中的setup方法,用于进行压力测试时的初始化,该thread group在启动测试时,会优先于其它thread group首先执行;
  2. 把登录的 接口请求放到本thread group中,以便首先进行登录请求,然后执行其它Thread操作;
  3. 从登录成功后的响应结果的response Header中提取JSESSIONID;用于后继请求的session信息,因此我们需要将JSESSIONID从reponse Header读取到,并设置为全局变量中,然后在全局的Cookie manager中配置对应Cookie数据,以使后继的Thread group中的请求保持会话一致;这里我们增加Post Processers处理,并使用正则表达式来获取对应的JSESSIONID值;
    提取JSESSIONID需要经过2步:
                (1)配置正式表达式提取JSESSIONID,(图2)所示;
                (2)配置Beansheel processer将第(1)中提取值放到全局变量中,脚本内容:${__setProperty(sessionId,${loginSessionId},)};(图3)所示;

    (图1)

    (图2)

    (图3)

3.3  增加全局Cookie Manager

Jmeter测试教程(图文)_Group_04

Jmeter测试教程(图文)_压力测试_05

3.4增加普通的thread group

   增加1个针对get方式的查询接口请求;
   1个新增接口请求;
   1个发送json格式的post请求:post发送json格式需要为对应的request增加一个http head manager,然后在里面定义对应的发送内容格式;

由于我们要进行压力测试,会自动进行多次新增接口请求,tenantName如果配置成固定的,后续的插入动作将会失败;为了进行批量插入的操作,我们使用counter和uuid来实现;

Jmeter测试教程(图文)_Group_06

Jmeter测试教程(图文)_Group_07

Jmeter测试教程(图文)_压力测试_08

 

3.5增加teardown thread group

测试任务完成后,需要将当前进行用户退出操作,增加一个request请求,访问后台的logout接口,进行退出;

Jmeter测试教程(图文)_压力测试_09

3.6查看测试结果

  1. 查看详细的每个request的执行结果
  2. Jmeter测试教程(图文)_Group_10


  3. 查看汇总的测试报告
  4. Jmeter测试教程(图文)_压力测试_11


4.进行test script recorder录制
  1. 增加script recorder
  2. Jmeter测试教程(图文)_全局变量_12


  3. 增加一个Thread group
  4. Jmeter测试教程(图文)_全局变量_13


  5. 启动代理服务
    在test script recorder中点击”start”按钮开始进行录制工作;
  6. 在浏览器中配置代理服务器( 以chrome为例)
    (1)打开chrome的“设置”页,然后点击高级中的“打开代理设置”页,设置本地代理为127.0.0.1,端口选择8888,与我们上一步recorder中配置的端口一致;
    (2)配置完成后,在浏览器上录入对应的网址,即可进行录制工作,我们所有访问过的地址均自动进入Test Thread Group中;
  7. Jmeter测试教程(图文)_压力测试_14


  8.  过滤不需要的js,css,png等内容
    在test script recorder中配置exclude对不需要进行 test thread group的文件类型进行过滤配置;
  9. Jmeter测试教程(图文)_Group_15


  10. 配置代理中需要变量化的参数
             我们在不配置全局变量定义时,对应的http request中server,port等值均为浏览器中的地址,如果每个request界面都改一遍非常不方便;我们可以提前在变量定义里,增加server值为221.***.***.138等;这样在代理过程中,匹配到的值,自动转为变量形式;