使用Loadrunner进行http接口压力测试

时间:2022-11-21 23:20:07

业务描述:

在业务系统里进行查询操作,查询的结果是通过请求http接口,从系统中处理并将结果以json字符串返回。

使用Loadrunner对此类接口进行压力测试并记录相关的性能指标数据:

一.安装Loadrunner

本次测试过程使用Loadrunner 11.0版本。安装Loadrunner过程详见......

二.部署环境

1.接口服务器一台;

2.用于运行Loadrunner的压力测试机1台或N台 ,在条件允许下,尽可能提供高配置的CPU 和内存。

3.接口服务器和压力测试机建议应部署于同一个局域网内,否则测试过程和结果将受到网络带宽因素的影响无法顺利进行。

 三.编写测试脚本

方法一. 通过java编写测试类,以jar包的方式引入Loadrunner进行测试。

优点:便于解析接口响应结果,同时避免由于LR脚本编写不规范或配置问题,导致测试过程引发的未知错误。

条件:运行loadrunner的机器需要安装jdk1.6的版本。

1.编写java测试类: CTLPTest.java,如下代码

使用Loadrunner进行http接口压力测试使用Loadrunner进行http接口压力测试
 1 package com;
 2 
 3 import java.io.InputStream;
 4 import java.net.HttpURLConnection;
 5 import java.net.URL;
 6 import java.util.Random;
 7 
 8 public class CTLPTest
 9 {
10   public static void main(String[] args)
11   {
12     CTLPTest lbs = new CTLPTest();
13     String ltpUrl = lbs.ltpRequestUrl();
14     System.out.println(ltpUrl);
15     System.out.println(lbs.ltpRequest(ltpUrl));
16   }
17 
18   public int ltpRequest(String ltpRequestUrl)
19   {
20     int returnCount = -1;
21     try
22     {
23       URL url = new URL(ltpRequestUrl);
24       //http连接
25       HttpURLConnection http = (HttpURLConnection)url.openConnection();
26       http.setUseCaches(false);
27       http.connect();
28       //获取http响应流
29       InputStream in = http.getInputStream();
30       //解析响应流
31       byte[] b = new byte[in.available()];
32       in.read(b);
33       //将响应流转换成字符串
34       String res = new String(b);
35       //根据实际情况,判断响应结果,并设置返回值
36       int of = res.indexOf("sucess");
37       if (of < 0) {
38         returnCount = -1;
39       } else {
40          returnCount = 1;
41       }
42     } catch (Exception e) {
43       returnCount = -1;
44     }
45     return returnCount;
46   }
47 
48   public String ltpRequestUrl() {
49     StringBuilder param = new StringBuilder("http://192.168.100.205:8055/CTLP/LtpRequest.json?Imsi=");
50     param.append("userid-1");
51     param.append("&appName=LBS&Apikey=D39hr1FgplZSjV2eNVW71wvbYbl8Mip4");
52     return param.toString();
53   }
54 }
View Code

2.将测试类导出为jar包 : LTPRequest.jar
过程略.

3.Loadrunner创建java测试类

图1:

使用Loadrunner进行http接口压力测试

                                                                                  

 图2:创建java协议脚本1

使用Loadrunner进行http接口压力测试

 

 图3:创建java协议脚本2

 使用Loadrunner进行http接口压力测试

 

图4:创建java协议脚本3

使用Loadrunner进行http接口压力测试

 

图5:设置环境变量

使用Loadrunner进行http接口压力测试

 

图6:设置安装的jdk位置目录

使用Loadrunner进行http接口压力测试

 

图7:导入jar包

使用Loadrunner进行http接口压力测试

 

图8:编写脚本内容

使用Loadrunner进行http接口压力测试 使用Loadrunner进行http接口压力测试
 1 package com;
 2 
 3 import java.io.InputStream;
 4 import java.net.HttpURLConnection;
 5 import java.net.URL;
 6 
 7 public class CTLPTest
 8 {
 9   public static void main(String[] args)
10   {
11     CTLPTest lbs = new CTLPTest();
12     String ltpUrl = lbs.ltpRequestUrl();
13     System.out.println(ltpUrl);
14     System.out.println(lbs.ltpRequest(ltpUrl));
15   }
16 
17   public int ltpRequest(String ltpRequestUrl)
18   {
19     int returnCount = -1;
20     try
21     {
22       URL url = new URL(ltpRequestUrl);
23       //http连接
24       HttpURLConnection http = (HttpURLConnection)url.openConnection();
25       http.setUseCaches(false);
26       http.connect();
27       //获取http响应流
28       InputStream in = http.getInputStream();
29       //解析响应流
30       byte[] b = new byte[in.available()];
31       in.read(b);
32       //将响应流转换成字符串
33       String res = new String(b);
34       //根据实际情况,判断响应结果,并设置返回值
35       boolean of = res.contains("\"state\":1");
36       if (of) {
37         returnCount = 1;
38       } else {
39          returnCount = 0;
40       }
41     } catch (Exception e) {
42       returnCount = -1;
43     }
44     return returnCount;
45   }
46 
47   public String ltpRequestUrl() {
48     StringBuilder param = new StringBuilder("http://192.168.100.205:8055/CTLP/LtpRequest.json?Imsi=");
49     param.append("userid-1");
50     param.append("&appName=LBS&Apikey=D39hr1FgplZSjV2eNVW71wvbYbl8Mip4");
51     return param.toString();
52   }
53 }
View Code

 

图9:试运行,查看结果

使用Loadrunner进行http接口压力测试

使用Loadrunner进行http接口压力测试

 说明:至此,完成了java脚本的编写和基本测试,接下来我们就可以使用loadrunner的进行压力测试了。

 

 四.压力测试

图1:选择压力测试

使用Loadrunner进行http接口压力测试

 

图2:打开步骤三中创建的java脚本目录

使用Loadrunner进行http接口压力测试

 

使用Loadrunner进行http接口压力测试

图3:压力测试设置界面总览

使用Loadrunner进行http接口压力测试

图4:设置开启并发用户数及压入频率

使用Loadrunner进行http接口压力测试

说明:单位时间内压入的并发用户数设置的用户数值越大,压力越大,根据测试实际需要调整。

 

图5:设置压力峰值持续时间

使用Loadrunner进行http接口压力测试

 

图6:设置单位时间内减少并发用户数(根据实际需要,也可以选择Simultaneously,达到时间后直接停止)

使用Loadrunner进行http接口压力测试

 

图7:点击"Start Scenario"按钮开始运行测试

使用Loadrunner进行http接口压力测试

 

图8:运行结果:

使用Loadrunner进行http接口压力测试

 

 图9:分析结果(可以保存各项性能指标数据到文件)

使用Loadrunner进行http接口压力测试