
# 创建JMeter测试计划
#### JMeter测试计划概述
JMeter测试计划是指基于已定义的JMeter文件、依赖的jar包和变量文件发起一次性能测试的活动。通过在不同压测点持续对系统发起压力测试，获取并分析系统运行的性能数据。
您可以在一个测试工程中添加多个测试计划。
性能测试服务的JMeter引擎支持的脚本有：
- 未使用任何第三方插件的JMeter创建的jmx脚本，其中JMeter支持5.2、5.3、5.4和5.6版本。
- 使用了第三方插件，但是插件可以以jar包形式上传，且未修改ThreadGroup实现的大部分脚本。性能测试服务不确保此类脚本可以正常使用，需要在性能测试服务平台进行调试。
性能测试服务的JMeter引擎不支持脚本中的以下操作：
- 性能测试服务不支持日志输出，仅支持请求日志。
- 性能测试服务不支持线程组配置页面使用变量。 ![](https://support.huaweicloud.com/usermanualnew-cpts/zh-cn_image_0000002348910430.png "点击放大")
  
 
#### 创建JMeter测试计划
1. [登录性能测试服务控制台](https://console.huaweicloud.com/cpts/#/home)。
2. 在左侧导航栏中选择"JMeter测试工程"。
3. 单击待操作测试工程后的![](https://support.huaweicloud.com/usermanualnew-cpts/zh-cn_image_0000002382750629.png)。
4. 在"测试计划"页签中，单击"创建测试计划"。
5. 在弹出的窗口中单击"添加文件"，选择格式为\*.jmx的文件，单击"上传文件"，导入成功后将自动关闭窗口并返回"测试计划"页签，可以看到已添加的测试计划。 
   - jmx文件的名称长度上限为64字节(含后缀)，文件大小限制为10M。
   
   - 当前支持基本的JMeter脚本，包括线程组，HTTP请求，HTTP信息头管理器，请求参数，超时时间，BeanShell等。建议您使用5.2.1以上版本的脚本进行导入，以免出现脚本解析错误。
   
   
   
   
6. （可选）在"测试计划"页签中，单击"第三方jar包"，在弹出的窗口中单击"添加文件"，选择测试计划所依赖的jar包并导入，导入成功后关闭窗口。 
   上传第三方jar包时，请注意：
   - 请确保第三方jar包在本地JMeter工作时，位于JMeter根目录/lib/ext下。
   
   - 请确保使用第三方jar包的脚本在本地可以正常运行。
   
   - 第三方jar包的名称长度上限为64字节(含后缀)，大小上限专业版为10M，企业版为80M。
   
   - Java 9及以上版本暂不支持第三方jar包上传功能。
   
   
   
   
7. 在"测试计划"页签中，可以查看新添加的测试计划。
 
#### 配置JMeter压力模式
创建测试计划后，可根据业务需求修改每个阶段的各项参数。
1. 在"测试计划"页签中，单击待压力配置的"任务名称"，进入"计划详情"页，可看到当前线程组下的各个阶段，参照[表1]设置基本信息。
   
    表1压力配置 
   | 参数   | 参数说明                                                                                                                                                                                                                        |
   |:---|:---|
   | 执行策略 | 执行策略目前支持按时长和按次数。 - 按时长：按照设定的持续时间进行压测。  - 按次数：按照设定的发送总次数进行压测。   |
   | 线程数  | 当前并发操作的虚拟用户数量。                                                                                                                                                                                                              |
   | 预热时间 | 仅"阶段1"涉及修改该参数。 对应JMeter脚本里的Ramp-Up字段，指并发用户数从0提升到设置的并发数值所需的时间。                                                                                                                                |
   | 循环次数 | 仅当"执行策略"为"按次数"时涉及修改该参数。 每个虚拟用户执行的次数。                                                                                                                                                           |
   | 时间控制 | 仅当"执行策略"为"按次数"时涉及该参数。 用于控制是否配置"最大时长"和"启动延迟"两个参数，                                                                                                                                             |
   | 最大时长 | 仅当"执行策略"为"按次数"时，开启"时间控制"才可修改该参数。 如果实际压测时长达到最大时长时，执行次数尚未达到循环次数，则线程组结束执行。                                                                                                                    |
   | 持续时间 | 仅当"执行策略"为"按时长"时，涉及该参数。 任务实际执行的时间，持续时间建议至少300s。                                                                                                                                               |
   | 启动延迟 | 虚拟用户在等待设置启动延迟的时间后，再开始执行任务。 当"执行策略"为"按次数"时，开启"时间控制"可修改该参数。 当"执行策略"为"按时长"时，可以在"阶段1"修改该参数。                                                                       |
      
   
   
2. 单击"确定"保存更新的配置信息。
 
#### 导入文件变量
如果某些参数数量较大时，可直接通过csv格式文件或者xlsx格式文件导入，在用例业务接口压测过程当中，实现接口动态传参。
1. 在"测试计划"页签中，单击待修改测试计划操作栏中的![](https://support.huaweicloud.com/usermanualnew-cpts/zh-cn_image_0000002557438383.png)，选择"变量文件"。也可以在"测试计划"页签中，单击测试计划名称进入"计划详情"页，然后单击页面右上方的"变量文件"。
2. 在弹出的对话框中单击"本地导入"。
3. 选择格式为csv或xlsx的文件，单击"上传"。 
   变量文件限制如下：
   1. 导入的文件格式：.csv（UTF-8无BOM格式）和.xlsx。
   
   2. 文件的名称长度上限：50字节(含后缀)。
   
   3. 文件大小限制：
      - xlsx：专业版10M，企业版20M。
      
      - csv：专业版10M，企业版默认80M。
       
   
   
   
   
 
#### 配置JMeter测试计划全局变量
1. 在"测试计划"页签中，单击待配置的"任务名称"，进入"计划详情"页，单击页面右上方的"全局变量"。
2. 在弹出的对话框中单击"添加变量"。
3. 输入变量名称、变量类型和变量值。 
   变量有两种类型，分别是静态变量和均分变量：
   - 静态变量：以字符串形式下发内容，当脚本分布式执行时，每个节点获取到的变量值一样，例如下发静态变量successRate=0.8，2000并发，分两个执行器执行，每个执行器中的脚本中变量successRate的值都是0.8。
   
   - 均分变量：以整数的形式下发内容，当脚本分布式执行时，每个节点获取到的变量值平均分配，平均分配时采用整数除法，余数会被分配到其中一个节点，例如：
     - 下发均分变量tps=100，分四个执行器，每个执行器中的脚本中的变量tps的值是25。
     
     - 下发均分变量tps=20，分3个执行器，每个执行器中的脚本中的变量tps的值是8，6，6。
     
     - 下发均分变量tps=1，分四个执行器，每个执行器中的脚本中的变量tps的值是1，0，0，0。
     
     
     综上，使用均分变量时需注意：
     1. 如果被分配的值对是否均分非常敏感，请手动设置执行器数，确保变量的值是执行器数的整数倍。
     
     2. 如果被分配的值对是否均分不严格敏感，建议将被分配的值尽量调大，减少整数除法余数的影响，使其基本平均分配。
     
     3. 如果被分配的值不能为0，请手动设置执行器数，并确保变量的值大于执行器数。
      
   
   
   ![](https://support.huaweicloud.com/usermanualnew-cpts/public_sys-resources/note_3.0-zh-cn.png)
   在全局变量中配置的变量，如果脚本的Test Plan - User Defined Variables中存在，则会覆盖脚本中定义的值。
   如果不存在，会在脚本的Test Plan -- User Defined Variables中新建对应变量。
   
   
 
#### 调试JMeter测试计划
新增或修改测试计划后，可通过调试快速发现语法或配置错误，确保该模型在任务中可用。
1. 在"测试计划"页签中，单击待调试的任务名称，进入"计划详情"页，单击页面上方![](https://support.huaweicloud.com/usermanualnew-cpts/zh-cn_image_0000002359100085.png)。
2. 在调试页面中选择已创建的私有资源组作为执行器，单击"启动"，启动调试，此时可以在调试页面看到调试进展。
3. 调试完成后，如果调试结果报错，可根据异常信息，修改测试计划后重新导入、调试。导入方法请参见[编辑测试计划](https://support.huaweicloud.com/usermanualnew-cpts/cpts_02_0159.html#cpts_02_0159__section0381121651217)。
4. 单击"查看日志"查看测试计划调试的具体内容。
5. 在"调试记录"页签，查看调试的历史操作记录。
 
