loadrunner生成随机数
loadrunner生成随机数一:
对网站注册进行压力测试时,需要对注册的用户名进行参数化,因为可以会用到大量的测试数据,所以选择通过生成随机数来进行参数化。最开始用loadrunner自带的参数随机功能,代码如下:
"Name=RegForm[name]", "Value={NewParam}", ENDITEM,
参数化选择为:random number
因系统对用户名的位数做了限制,同时为了方便统计,将代码修改为:
"Name=RegForm[name]", "Value=lr{NewParam}{NewParam1}{NewParam2}", ENDITEM,
注意参数化之后的值的最大位数不能超过系统限制,否则可能会提交错误的参数。参数化完成后加载场景运行测试,基本可以满足压力测试需求。
测试过程中发现仍会有部分失败的事务,检查日志后发现因用户名重复导致注册失败,为减少这种情况,尝试了使用另外一种随机数方法。代码如下:
int name_num,rand_num,i;
char StrTable[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
char i_name[20]="";
srand((unsigned)time(NULL));
lr_log_message("srand is %d",srand((unsigned)time(NULL)));
name_num=rand()% 20 ;
lr_log_message("rand number is %d",name_num);
for (i=0;i<=name_num;i++)
{
rand_num=rand()% 62;
strncat(i_name,StrTable+rand_num,1);
}
lr_log_message("the string is %s",i_name);
lr_save_string(i_name,"i_name_value");//保存随机数
...
"Name=RegForm[name]", "Value=lr{i_name_value}", ENDITEM,
修改完脚本后,压力测试时发现有大量的失败,调试脚本后发现会出现生成同个参数多次的情况,考虑是否是因为种子每次没有初始化的缘故,将srand((unsigned)time(NULL));放在vuser_init()里后,循环时就不会出现重复情况。后来一想干脆就将这两种方法结合起来:
vuser_init()
{
srand((unsigned)time(NULL));
return 0;
}
Action()
{
int name_num,rand_num,i;
char StrTable[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
char i_name[20]="";
name_num=rand()% 20 ;
lr_log_message("rand number is %d",name_num);
for (i=0;i<=name_num;i++)
{
rand_num=rand()% 62;
strncat(i_name,StrTable+rand_num,1);
}
lr_log_message("the string is %s",i_name);
lr_save_string(i_name,"i_name_value");//保存随机数
......
"Name=RegForm[name]", "Value=lr{NewParam}{i_name_value}", ENDITEM,
基本能满足测试需求了,有空的话希望能找到更好的方法。
方法二:
int itera_num,rand_num,i;
char
StrTable[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
char
i_name[24]="";
char i_data[50]="";
char
i_data2[24]="";
itera_num=rand()%24;
for
(i=0;i<=itera_num;i++){
rand_num=rand()%62;
strncat(i_name,StrTable+rand_num,1);}
itera_num=rand()%50;
for(i=0;i<=itera_num;i++){
rand_num=rand()%62;
strncat(i_data,StrTable+rand_num,1);}
i=rand()%strlen(i_data)+1;
strncat(i_data2,i_data,i);
lr_save_string(i_name,"i_name_value");
lr_save_string(i_data,"i_data_value");
lr_save_string(i_data2,"i_data2_value");
Loadrunner随机生成15位数字串
今天看到一个网友的问题,是想生成一个15位的数字串来进行参数化输入,要求如下:
1、前4位均是0436
2、其余的是11位的随机数
原帖地址:http://bbs.51testing.com/viewthread.php?tid=89018&page=1&extra=page%3D1
拿到问题,我思考了一下,前4位使用固定值很好办,唯一的问题就是生成随机数了;
生成随机数而且用lr实现,目前我知道2种方法:
1、使用c语言的rand()函数
2、使用lr的参数类型中的random number来生成
因为要生成固定的位数,所以我决定使用lr的random
number方法;另外也是我想到rand()函数实现起来非常麻烦,
~解决问题为主。
我的回复如下:
##############
1、在参数表(Parameter
List)中新建一个参数(Parameter),命名为"num"
2、选择参数类型(Parameter
type)为随机数(Random Number),
3、选择参数范围(Parameter
range)为最小为1,最大为99999999
4、在随机数格式(Number
format)里选择“%08lu”
然后引用类似为:
web_sumbit_data(
……
……
"card_id=0436000{num}";
LAST);
说明:随机数按照位数在c语言里不好实现,所以我选择了lr的参数化来生成。但是lr的参数化里最多只能生成8位数字(这个我还不知道能不能改),所以你要求有11位数字的时候,我就把你要求的固定的"0436"变成了"0436000",这样参数化以后就可以生成类似"043600012345678"的15位数字了。
##############
回复完毕,又仔细想想发现自己很傻,既然lr支持字符串和参数在一起被引用,那么为什么只用一个参数才解决呢?而且解决的也不彻底,还有3位数是固定值。。发现自己还真的很笨~~
~~
更好的实现方法是创建2个或者多个随机数类型的参数(Random
Number Parameter),这样,就能把随机数的参数化位数增加到11位甚至更多;
~想参数多少位就多少位,嘿嘿
还是以15位的这个问题来说吧:
如图再增加一个随机数.
然后引用方法类似:
web_sumbit_data(
……
……
"card_id=0436{num1}{num}";
LAST);
搞定!!
![]()
loadrunner
生成随机数的函数使用C代码生成随机英文+数字
int
itera_num,rand_num,i;
char
StrTable[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
char
i_name[24]="";
char i_data[50]="";
char
i_data2[24]="";
itera_num=rand()%24;
for
(i=0;i<=itera_num;i++){
rand_num=rand()%62;
strncat(i_name,StrTable+rand_num,1);}
itera_num=rand()%50;
for(i=0;i<=itera_num;i++){
rand_num=rand()%62;
strncat(i_data,StrTable+rand_num,1);}
i=rand()%strlen(i_data)+1;
strncat(i_data2,i_data,i);
lr_save_string(i_name,"i_name_value");
lr_save_string(i_data,"i_data_value");
lr_save_string(i_data2,"i_data2_value");参看:http://boyqqq.spaces.live.com/blog/cns!D6AA33352019FC3E!149.entry?wa=wsignin1.0&sa=314044507
使用loadrunner自带的函数random
number生成随机数字1、在参数表(Parameter
List)中新建一个参数(Parameter),命名为"num"
2、选择参数类型(Parameter type)为随机数(Random
Number),
3、选择参数范围(Parameter range)为最小为1,最大为99999999
4、在随机数格式(Number
format)里选择“%08lu”
然后引用类似为:
web_sumbit_data(
……
……
"card_id=0436000{num}";
LAST);当然也可以多个随机参数一并合成一个
这时候使用就变成了
web_sumbit_data(
……
……
"card_id=0436{num1}{num}";
LAST);
更详细的可以参看:
http://www.51testing.com/?uid-6343-action-viewspace-itemid-19789
选择不同的
Update value on 对应的执行效果:
方法四:
由于今天测试的一个项目,账号是已经生成--是手机号,但是密码是手机的后6位,因为这是游客登录,而且这些手机号数据库又没有,所以密码不能在数据库修改,只能自己从生成的手机号中取后六位了。
在网上找了找也没找到现成的函数,于是决定自己写一个来处理,一下就是我写的代码:
Action()
{
char *phonenum;
int k=1;
phonenum=lr_eval_string("{Phone}");//参数化获取的手机号码
for
(k=1;k<6;k++){//k=1标示从phonenum的指针第一位开始 k<6表示phonenum的坐标移到第6位
phonenum++;
lr_save_string(phonenum,"Passwd");//将移位后的phonenum保存到新的参数中作为密码来使用
lr_output_message("手机号的后6位是:%s",lr_eval_string("{Passwd}"));//验证保存的参数是否正确
return 0;
}
其实这些都是由以前参考过的guid函数启发所想:
void
guid(char * messageId)
{
int itera_num,rand_num,i,j,k=k+1;
char StrTable[]="abcdefghijklmnopqrstuvwxyz1234567890";
char string1[24]="";
char string2[24]="";
char string3[24]="";
char string4[24]="";
char string5[24]="";
char string5_temp[24]="";
char messageId[126]="";
char
* conn = "-";
for
(i=0;i<=7;i++){
rand_num=rand()%36;
strncat(string1,StrTable+rand_num,1);} //前8位的获取
for (i=0;i<=3;i++){
rand_num=rand()%36;
strncat(string2,StrTable+rand_num,1);} //中间4位的获取
for (i=0;i<=3;i++){
rand_num=rand()%36;
strncat(string3,StrTable+rand_num,1);}
for (i=0;i<=3;i++){
rand_num=rand()%36;
strncat(string4,StrTable+rand_num,1);}
for (i=0;i<=11;i++){
rand_num=rand()%36;
strncat(string5,StrTable+rand_num,1);}
strcpy(messageId, string1);
strcat(messageId, conn);
strcat(messageId, string2);
strcat(messageId, conn);
strcat(messageId, string3);
strcat(messageId, conn);
strcat(messageId, string4);
strcat(messageId, conn);
strcat(messageId, string5);
}
loadrunner生成随机数的更多相关文章
- loadrunner 生成随机参数 Radom相关
我也是刚开始进入测试行业,不过比较幸运的我之前做过开发,所以对代码比较熟悉,对loadrunner没有进行过系统的学习,也是通过自己的摸索慢慢的积累知识. 今天遇到项目中要我做一个压力测试,其中一些参 ...
- .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
.Net中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成10个随机数: ; i < ; i++) { Rando ...
- DotNet生成随机数的一些方法
在项目开发中,一般都会使用到“随机数”,但是在DotNet中的随机数并非真正的随机数,可在一些情况下生成重复的数字,现在总结一下在项目中生成随机数的方法. 1.随机布尔值: /// <summa ...
- Oracle中生成随机数的函数(转载)
在Oracle中的DBMS_RANDOM程序包中封装了一些生成随机数和随机字符串的函数,其中常用的有以下两个: DBMS_RANDOM.VALUE函数 该函数用来产生一个随机数,有两种用法: 1. 产 ...
- JAVA生成随机数
java中一般有两种随机数,一个是Math中random()方法,一个是Random类. 一.Math.random() 随即生成0<x<1的小数. 实例:如何写,生成随机生成出0~100 ...
- iOS开发-生成随机数
有时候我们需要在程序中生成随机数,但是在Objective-c中并没有提供相应的函数,好在C中提供了rand().srand().random().arc4random()几个函数.那么怎么使用呢?下 ...
- exce生成随机数
有时候数据库没有数据,造数据专用. 来源于:http://jingyan.baidu.com/article/93f9803feba1f5e0e46f55f2.html 首先介绍一下如何用RAND() ...
- 【gsl】生成随机数
来自:http://hsxqwanting.blog.163.com/blog/static/16945437201301042830815/ 使用GSL生成随机数时的三个步骤: (1)gsl_ ...
- php生成随机数的三种方法
php生成随机数的三种方法 如何用php生成1-10之间的不重复随机数? 例1,使用shuffle函数生成随机数. <?php$arr=range(1,10);shuffle($arr);for ...
随机推荐
- Python批量修改文件名-后缀
LyncLynn用途: 批量修改文件格式,文件名后缀. #Version: V1.0 #Author:lynclynn #Description:Change the filename #Create ...
- 仿知乎程序 fragment的切换以及toolbar在不同页面下显示的menu不同
我们在看知乎的时候,你会发现,首页,发现,关注,收藏,草稿这五项,你在点击之后进入到相应页面之后,侧滑菜单还在,你左侧滑一下,这个侧滑菜单还在,而提问,左滑屏幕,这个页面就没有,有点像返 ...
- HDU 5920 Ugly Problem 高精度减法大模拟 ---2016CCPC长春区域现场赛
题目链接 题意:给定一个很大的数,把他们分为数个回文数的和,分的个数不超过50个,输出个数并输出每个数,special judge. 题解:现场赛的时候很快想出来了思路,把这个数从中间分为两部分,当位 ...
- lazyload
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- qt编译mysql插件
安装MySQL,C:\Program Files (x86)\MySQL\MySQL Server 5.7,然后把include和lib文件夹拷贝到C盘,因为qmake不允许路径中有空格!!! 安装Q ...
- 2048控制台程序:一份帝国理工C++作业
#include <fstream> #include <vector> #include <iostream> #include <string> u ...
- supersr--图片轮播逻辑
// // ViewController.m // 图片轮播 // // Created by apple on 14-5-18. // Copyright (c) 2014年 All rig ...
- July 7th, Week 28th Thursday, 2016
The 79th Anniversary of Anti-Japan War Difficulties vanish when faced bodly. 勇敢面对困难,困难自会退让. The best ...
- NSOperation使用
1.继承NSOperation DownLoadImageTask.h #import <Foundation/Foundation.h> #import <UIKit/UIKit. ...
- 四、优化及调试--网站优化--Yahoo军规上
什么是Yahoo军规?即如何提高网站速度的知识. 具体如下: 1.尽量减少HTTP请求个数——须权衡 什么是http请求:从客户端到服务器端的请求消息.包括消息首行中,对资源的请求方法,资源的标识符及 ...