基于 WSDL 或 SOAP 的 WebService 测试方法--对原理的思考

截止至今,我们已经总结了两种WebService测试方法,分别对应了两种应用场景:

  • 在只获知WSDL的情况下,如何采用LoadRunner测试WebService
  • 在具有SOAP报文的情况下,如何采用LoadRunner测试WebService

在文章《LoadRunner基于WSDL的WebService测试方法》和《LoadRunner基于SOAP的WebService测试方法》中,已经详细地描述了两种测试方法的具体实现方式,即使对于一个新接触WebService的测试人员,按照文章中的方法也基本都能完成测试任务。

HTML 字符实体(Character Entity)

字符实体的由来

在HTML源文件中,有些字符(如<,>,&等)作为特殊字符不能直接使用,如果直接使用的话HTML将不能被正确解析。但如果HTML内容中需要展示这些特殊字符时该怎么处理呢?这就需要使用转义字符串来对其进行转义。

测试最大在线用户数

背景介绍

在性能测试工作中,有时需要对业务系统所能支持的最大在线用户数目进行评估。这与我们接触最多的压力测试不一样,因为用户在线时只是与服务器保持连接,并不一定对服务器有业务请求,从而对服务器不一定会产生压力。然而,在线用户数目并非可以无限增长,当在线用户数目达到应用服务器(或者WebLogic等中间件,或者数据库连接池等)的连接数设置的极限时,业务系统同样可能会发生异常,出现新用户无法登录,或者老用户被挤出系统,甚至业务系统宕机的情况。因此,对业务系统的最大在线用户数指标进行测试是极其必要的。

LoadRuner 中的参数与变量

在LoadRunner脚本开发中,经常会遇到参数与变量相互转换的情况,本文对常见的转换情形进行了方法总结。

变量的赋值

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
//将字符串赋值给变量
char strTemp[30];
strcpy(strTemp, "Hello World!!");

//错误的字符串赋值方式
strTemp = "Hello World!!";
/* 注:
 * 在LR中若直接将字符串赋值给变量,编译时将会报错
 * 报错信息:operands of = have illegal types `char' and `pointer to char'
 */

//将数值赋值给变量
int x = 10;
/* 注:
 * 在LR中,变量的声明一定要放在脚本的最前面,且声明的语句中不要有其他的脚本代码
 * 若将以上申明放置在脚本中部,将会产生如下形式的报错信息
 * illegal statement termination
 * skipping 'int'
 * undeclared identifier 'x'
 */

参数的赋值

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
//将字符串赋值给参数
lr_save_string("Hello World!!","paraStr");

//将变量中的值赋值给参数
char strTemp[30];
strcpy(strTemp, "Hello World") ;
lr_save_string(strTemp, "paraStr");

//将数值直接赋值给参数
lr_save_int(123, "paraNum");

//将变量中的数值赋值给参数
int num = 10;
lr_save_int(num*2, "paraNum");

参数的取值

1
2
3
4
5
//从参数中进行取值,不管参数是字符串还是数值
lr_eval_string("{paraStr}");
lr_eval_string("{paraNum}");
//取出的值均为字符串类型,因此输出时格式需为"%s"
lr_output_message("%s", lr_eval_string("{paraNum}"));

参数=>变量

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
//将参数转换为字符串变量,参数paraStr中的值为"Hello World!!"
char strTemp[30];
strcpy(strTemp, lr_eval_string("{paraStr}"));
lr_output_message("%s", strTemp);

//将参数转换为数值变量,参数paraNum中的值为"246"
int num;
num = atoi(lr_eval_string("{paraNum}"));    //将字符串转换为数值
lr_output_message("%d", num);

//将参数格式化输出到变量
SeatPrefListCount = atoi( lr_eval_string("{SeatPrefList_count}") );
sprintf(varRandomSeatPref, "{SeatPrefList_%d}", 1+rand()%SeatPrefListCount);
//将格式化的随机日期写入变量varRandomDepartDate
sprintf(varRandomDepartDate, "%d/%d/%d", 1+rand()%12, 1+rand()%28, 2009+rand()%6);

参数=>参数

1
2
//参数的复制:将参数paraStr_1的值复制到参数paraStr_2
lr_save_string(lr_eval_string("{paraStr_1}"),"paraStr_2");

性能指标--并发用户数(Concurrent Users)

并发用户数是指:在某一时间点,与被测目标系统同时进行交互的客户端用户的数量。

并发用户数有以下几种含义:

并发虚拟用户数(Concurrent Virtual Users,Users_CVU)

在使用专用的测试工具(如Loadrunner、Jmeter)时用于模拟客户端用户的进程或线程的数量;该参数是针对客户端(generator)而言的。