业务描述:
在业务系统里进行查询操作,查询的结果是通过请求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,如下代码
1 packagecom;2
3 importjava.io.InputStream;4 importjava.net.HttpURLConnection;5 importjava.net.URL;6 importjava.util.Random;7
8 public classCTLPTest9 {10 public static voidmain(String[] args)11 {12 CTLPTest lbs = newCTLPTest();13 String ltpUrl =lbs.ltpRequestUrl();14 System.out.println(ltpUrl);15 System.out.println(lbs.ltpRequest(ltpUrl));16 }17
18 public intltpRequest(String ltpRequestUrl)19 {20 int returnCount = -1;21 try
22 {23 URL url = newURL(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 = newString(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 returnreturnCount;46 }47
48 publicString 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 returnparam.toString();53 }54 }
View Code
2.将测试类导出为jar包 : LTPRequest.jar
过程略.
3.Loadrunner创建java测试类
图1:
图2:创建java协议脚本1
图3:创建java协议脚本2
图4:创建java协议脚本3
图5:设置环境变量
图6:设置安装的jdk位置目录
图7:导入jar包
图8:编写脚本内容
1 packagecom;2
3 importjava.io.InputStream;4 importjava.net.HttpURLConnection;5 importjava.net.URL;6
7 public classCTLPTest8 {9 public static voidmain(String[] args)10 {11 CTLPTest lbs = newCTLPTest();12 String ltpUrl =lbs.ltpRequestUrl();13 System.out.println(ltpUrl);14 System.out.println(lbs.ltpRequest(ltpUrl));15 }16
17 public intltpRequest(String ltpRequestUrl)18 {19 int returnCount = -1;20 try
21 {22 URL url = newURL(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 = newString(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 returnreturnCount;45 }46
47 publicString 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 returnparam.toString();52 }53 }
View Code
图9:试运行,查看结果
说明:至此,完成了java脚本的编写和基本测试,接下来我们就可以使用loadrunner的进行压力测试了。
四.压力测试
图1:选择压力测试
图2:打开步骤三中创建的java脚本目录
图3:压力测试设置界面总览
图4:设置开启并发用户数及压入频率
说明:单位时间内压入的并发用户数设置的用户数值越大,压力越大,根据测试实际需要调整。
图5:设置压力峰值持续时间
图6:设置单位时间内减少并发用户数(根据实际需要,也可以选择Simultaneously,达到时间后直接停止)
图7:点击"Start Scenario"按钮开始运行测试
图8:运行结果:
图9:分析结果(可以保存各项性能指标数据到文件)