使用Jmeter执行web系统的测试,在向服务器发送请求时,附在请求上面的参数类型有很多种。比如说数值型(包括整数、小数)、字串类型等等。如果说系统没有规定参数值的取值范围,那么作为测试人员,我们一般都会在考虑实际业务场景的情况下可以利用jmeter的函数助手予以解决。比如用户在前端页面操作一个发表帖子的场景,其中帖子标题、帖子内容这些都可以通过函数助手使用随机字串来完成,测试人员只需要考虑参数值长度就可以了。特殊的情况是,一些参数值同样是数值型或者字串,但是系统已经明确指定了只能从某几个值之中选择(前端表现为下拉列表形式),并且,一个请求需要附加多个这样类型的参数,从测试用例设计的角度考虑,此时需要对这样的参数值随机组合,对于这种需求,jemeter中能满足要求的只有Beanshell。
如下,是本人这次使用jmeter时,通过Beanshell处理多个枚举参数的例子:
图中总共有7个下拉列表,在点击保存的时候会将选择的值附在请求上发送到服务器。
一开始并没有考虑Beanshell,因为之前对Beanshell不熟悉。首先是尝试了CVS文件的方式,但是实际使用时才发现,由于各个枚举值数量时不一样的,在测试计划执行的时候,数量少的枚举值超出范围后取的就是空值了,明显不能达到各个参数值随机组合的要求。
接下来又尝试了用户定义变量、函数助手都无法满足要求。最后就考虑到了Beanshell,对于Beanshell基本上是一点都不了解,幸运的是,从网上搜索的信息来看Beanshell中可以使用java代码,还好,java还没忘干净。
接下来就是如何在Beanshell中实现多个参数值随机组合了。主要的过程分以下几步:
1:将每个下拉列表当做一个数组来处理,比如:
String[] aaa = {
"ad","de","wd"};
int[] bbb = {
240,