如何巧用自动化软件测试工具具LoadRunner中的随机函数

后使用快捷导航没有帐号?
查看: 1638|回复: 2
LoadRunner脚本开发和常用函数
金牌会员, 积分 1387, 距离下一级还需 1613 积分
论坛徽章:9
From: 脚本开发的原则:简单、正确、高效LoadRunner实现机制
#include&globals.h&
& & & & vuser_init();
& & & & Action();
& & & & vuser_end();
解释执行C代码,不需要像等一样需要编译。
关于解释型语言和编译型语言的概念和区别:
概念:编译型语言:把源程序全部编译成二进制代码的可运行程序。之后,可直接运行这个程序无需再次编译。
解释型语言:把源程序交给翻译器翻译一句就提交给计算机,然后计算机执行一句并不行程目标程序,直到运行结束。
区别:编译型语言,编译完成之后执行速度快,效率高;依赖编译器 如C,C++,Delphi,Fortran.解释型语言,执行速度慢,效率低;依赖解释器;如java、Basic.
总结:编译型语言在编译成目标程序后是可以通过操作系统直接运行,而解释语言的执行则需要一个解释环境(相当于一台虚拟机),解释器在程序执行期间一直随之运行,在这里LoadRunner充当了解释器的角色,一般来说,解释器比编译有更好的灵活性,而编译有着很好的性能。
其中java是特殊的,java程序也需要编译,但是没有直接编译成为机器语言,而是编译成字节码。
java字节码的执行有两种方式:
1.即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。
2.解释执行方式:解释器通过每次解释并执行一段代码来完成java字节码程序的所有操作。
通常采用的是第二种党法,由于JVM具有较好的灵活性,使字节码翻译为机器码效率较高。对于那些对于执行速度要求较高的应用程序,解释器可将java字节码即时编译为机器码,从而很好的保证了java代码的可移植性和高性能。
局部变量和全局变量局部变量
& & int a=10;
& & & & printf(&%d&,a);
& & int b=2;
& & & & lr_output_message(&%d&,a);
& & & & lr_output_message(&%d&,a);
& & & & lr_output_message(&%d&,a);
& & & & return 0;
Action.c (6): illegal statement termination
Action.c (6): skipping `int'
Action.c (6): undeclared identifier `b'
e:\\hp\\mytest\\bian\\\\combined_bian.c (5): 3 errors, not writing pre_cci.ci
以上例子可以看出LoadRunner虽然基本完全支持C,但是和C还有一点细微的差别。这里定义变量要提到前面去。int a=10;
printf(&%d&,a);
实例二在函数外面定义,int a=100;
& &// int a=10;
& & & & printf(&%d&,a);
& & & & lr_output_message(&%d&,a);
& & & & lr_output_message(&%d&,a);
& & & & lr_output_message(&%d&,a);
& & & & return 0;
输出结果Starting iteration 1.
Starting action Action.
Action.c(7): 100
Action.c(8): 100
Action.c(9): 100
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.
去掉注释,输出,可以看出,局部变量会覆盖文件级变量(即在函数外面定义的变量)Starting iteration 1.
Starting action Action.
Action.c(7): 10
Action.c(8): 10
Action.c(9): 10
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.
全局变量在globals.h定义
//--------------------------------------------------------------------
// Include Files
#include &lrun.h&
#include &web_api.h&
#include &lrw_custom_body.h&
//--------------------------------------------------------------------
// Global Variables
总结,在init、action、end中定义的变量就是局部变量在globals.h中定义的变量是全局变量什么时候定义全局变量?
整个过程中固定不变的,例如URL地址、KEY、其他支持指针、数组、控制流等
函数LoadRunner中的几种类型的函数:通用函数lr开头的(例如日志函数,思考时间函数…)与编程语言相关的函数与协议相关的函数自定义函数
(F1查看帮助文档)通用函数lr开头的①lr_think_time()、lr_get_host_name()、lr_whoami()、lr_get_attrib_string()
②LoadRunner错误处理机制/lr_continue_on _error函数
③日志函数解析/lr_output_message、lr_log_message 、lr_message 、lr_error_message
④lr_load_dll与编程语言相关的函数strcpy与strcat、strcmp、atoi、sprinf、time、文件操作..略与协议相关的函数web_link与web_url(get)、web_submit_form与web_submit_data(POST)、web_submit_form中的hidden自动发送、web_custom_request、web_add_header、web_get_int_property关于DLL在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
LoadRunner也支持dlllr_load_dll(&user32.dll&)
注册会员, 积分 192, 距离下一级还需 8 积分
论坛徽章:1
高级会员, 积分 714, 距离下一级还需 286 积分
论坛徽章:13
lz贴得比较详细了。
其实LR应该是C实现的,脚本使用C语言肯定有天然的优势,但是毕竟不是独立C语言程序,是需要运行在LR这个“框架”里面的,所以有一些差异和限制是很正常的,后使用快捷导航没有帐号?
查看: 11159|回复: 26
最后登录注册时间阅读权限30在线时间3 小时金币1698 (金)贡献0 (度)步币0 (步)积分335精华0日志记录相册帖子分享主题好友
助教, 积分 335, 距离下一级还需 165 积分
贡献0 (度)步币0 (步)金币1698 (金)积分335帖子
场景介绍& && &&&
& && &&&最近在做类似于QQ的通信的性能测试时发现了一些问题,现总结出来与大家分享一下。希望大家在使用LoadRunner时不仅仅停在只是录制/播放角本,而全面提升角本的编程技术,解决复杂场景。
& && &&&本次测试中碰到的问题是这样的,在消息的传送过程中遇到了DEC加密的过程,LoadRunner录制到的全是加密的消息,比如我录制了某一个用户的登陆,发送消息,退出,但由于是加密的,只能单个用户使用,但如果我想并发多少个用户就存在很多问题,最直接的一个问题就是用户名是加密的,密码是加密的,当然你可以说让程序那里注掉加密的代码进行明码的测试,当然也是一种办法。但程序组提出了要使用更真实的方法来模拟,这时就必需使用下面介绍的方法。
& && &&&一开始是直接把API移植到LoadRunner中来,不过由于加密算法异常复杂,有几层循环,而角本是解释执行的,进行一次加密运算可能需要好几分钟,当然在角本里可以把角本本身运行的时间去掉,但这样做显然没有直接调用DLL来的效率高。由于程序组比较忙,所以无法提供DLL给测试,所以测试完成了DLL的编写,并在LoadRunner中调用成功,高效的完成了用户信息加密,参数关联,成功的完成了测试。
动态链接库的编写
  在Visual C++6.0开发环境下,打开FileNewProject选项,可以选择Win32 Dynamic-Link Library建立一个空的DLL工程。
  1. Win32 Dynamic-Link Library方式创建Non-MFC DLL动态链接库
  每一个DLL必须有一个入口点,这就象我们用C编写的应用程序一样,必须有一个WINMAIN函数一样。在Non-MFC DLL中DllMain是一个缺省的入口函数,你不需要编写自己的DLL入口函数,用这个缺省的入口函数就能使动态链接库被调用时得到正确的初始化。如果应用程序的DLL需要分配额外的内存或资源时,或者说需要对每个进程或线程初始化和清除操作时,需要在相应的DLL工程的.CPP文件中对DllMain()函数按照下面的格式书写。
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
switch( ul_reason_for_call )
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
return TRUE;
& && &&&参数中,hMoudle是动态库被调用时所传递来的一个指向自己的句柄(实际上,它是指向_DGROUP段的一个选择符);ul_reason_for_call是一个说明动态库被调原因的标志,当进程或线程装入或卸载动态链接库的时候,操作系统调用入口函数,并说明动态链接库被调用的原因,它所有的可能值为:DLL_PROCESS_ATTACH: 进程被调用、DLL_THREAD_ATTACH: 线程被调用、DLL_PROCESS_DETACH: 进程被停止、DLL_THREAD_DETACH: 线程被停止;lpReserved为保留参数。到此为止,DLL的入口函数已经写了,剩下部分的实现也不难,你可以在DLL工程中加入你所想要输出的函数或变量了。
  我们已经知道DLL是包含若干个函数的库文件,应用程序使用DLL中的函数之前,应该先导出这些函数,以便供给应用程序使用。要导出这些函数有两种方法,一是在定义函数时使用导出关键字_declspec(dllexport),另外一种方法是在创建DLL文件时使用模块定义文件.Def。需要读者注意的是在使用第一种方法的时候,不能使用DEF文件。下面通过两个例子来说明如何使用这两种方法创建DLL文件。
  1)使用导出函数关键字_declspec(dllexport)创建MyDll.dll,该动态链接库中有两个函数,分别用来实现得到两个数的最大和最小数。在MyDll.h和MyDLL.cpp文件中分别输入如下原代码:
extern &C& _declspec(dllexport) int desinit(int mode);
extern &C& _declspec(dllexport) void desdone(void);
extern &C& _declspec(dllexport) void des_setkey(char *subkey, char *key);
extern &C& _declspec(dllexport) void endes(char *block, char *subkey);
extern &C& _declspec(dllexport) void dedes(char *block, char *subkey);
//MyDll.cpp
#include&MyDll.h&
//这里我用了比较大小的函数代替了我要实现的函数
int desinit(int a, int b)
int desdone(int a, int b)
该动态链接库编译成功后,打开MyDll工程中的debug目录,可以看到MyDll.dll、MyDll.lib两个文件。LIB文件中包含DLL文件名和DLL文件中的函数名等,该LIB文件只是对应该DLL文件的&映像文件&,与DLL文件中,LIB文件的长度要小的多,在进行隐式链接DLL时要用到它。读者可能已经注意到在MyDll.h中有关键字&extern C&,它可以使其他编程语言访问你编写的DLL中的函数。
LoadRunner调用动态链接库
& && &&&上面完成动态链接库开发后,下面就介绍动态链接库如何被LoadRunner进行调用,其实也是很简单的。在LoadRunner中的DLL调用有局部调用与全局调用,下面介绍局部调用。
首先把你编译的DLL放在角本路径下面,这里是MyDll.dll,MyDll.lib.然后在Action中使用
lr_load_dll(&MYDll.dll&),此函数可以把DLL加载进来,让你调用DLL里面的函数,而DLL中的运算是编译级的,所以效率极高,代码样例如下:
#include &lrs.h&
& && &&&//
& && &&&int nRet = 6;
& && &&&char srckey[129];
& && &&&memset(srckey, 'a', 128);
& && &&&lr_message(lr_eval_string(srckey));
& && &&&lr_load_dll(&MyDLL.dll&);
& && &&&nRet = desinit(5,8);
& && &&&lr_message(&比较的结果为%d&,nRet);
& & return 0;
& && &&&比较的结果为8
& && &&&全局的动态链接库的调用则需要修改mdrv.dat,路径在LoadRunner的安装目录下面(LoadRunner/dat directory);在里面修改如例:
& && &&&[WinSock]
ExtPriorityType=protocol
WINNT_EXT_LIBS=wsrun32.dll
WIN95_EXT_LIBS=wsrun32.dll
LINUX_EXT_LIBS=liblrs.so
SOLARIS_EXT_LIBS=liblrs.so
HPUX_EXT_LIBS=liblrs.sl
AIX_EXT_LIBS=liblrs.so
LibCfgFunc=winsock_exten_conf
UtilityExt=lrun_api
ExtMessageQueue=0
ExtCmdLineOverwrite=-WinInet No
ExtCmdLineConc=-UsingWinInet No
WINNT_DLLS=user_dll1.dll, user_dll2.dll, ...
//最后一行是加载你需要的DLL
& && &&&这样你就可以在LR中随意的调用程序员写的API函数,进行一些复杂的数据加密,准备的一些操作,进行复杂的测试。同时如果你觉的有大量高复杂的运算也可以放在DLL中进行封装,以提高效率。
有事请联系我
最后登录注册时间阅读权限20在线时间18 小时金币146 (金)贡献0 (度)步币0 (步)积分26精华0日志记录相册帖子分享主题好友
学生, 积分 26, 距离下一级还需 74 积分
贡献0 (度)步币0 (步)金币146 (金)积分26帖子
补充一点,在VS2003下建标准DLL,可以这样:
文件-新建-项目-Win32-Win32项目,然后Next,在应用程序设置处,勾上“DLL”
今天刚好在DLL里简单的写了个add(),然后用lR做了个加法。
&-sina_sign,,c-&
最后登录注册时间阅读权限0在线时间0 小时金币5 (金)贡献0 (度)步币0 (步)积分15精华0日志记录相册帖子分享主题好友
贡献0 (度)步币0 (步)金币5 (金)积分15帖子
LZ帖子不给力,勉强给回复下吧
最后登录注册时间阅读权限0在线时间0 小时金币9 (金)贡献0 (度)步币0 (步)积分16精华0日志记录相册帖子分享主题好友
贡献0 (度)步币0 (步)金币9 (金)积分16帖子
向楼主学习
最后登录注册时间阅读权限20在线时间4 小时金币4 (金)贡献0 (度)步币0 (步)积分30精华0日志记录相册帖子分享主题好友
学生, 积分 30, 距离下一级还需 70 积分
贡献0 (度)步币0 (步)金币4 (金)积分30帖子
确实不错,顶先
最后登录注册时间阅读权限20在线时间3 小时金币19 (金)贡献0 (度)步币0 (步)积分32精华0日志记录相册帖子分享主题好友
学生, 积分 32, 距离下一级还需 68 积分
贡献0 (度)步币0 (步)金币19 (金)积分32帖子
看了LZ的帖子,我只想说一句很好很强大!
最后登录注册时间阅读权限20在线时间9 小时金币23 (金)贡献0 (度)步币0 (步)积分64精华0日志记录相册帖子分享主题好友
学生, 积分 64, 距离下一级还需 36 积分
贡献0 (度)步币0 (步)金币23 (金)积分64帖子
顶不错 支持下
最后登录注册时间阅读权限20在线时间10 小时金币6 (金)贡献0 (度)步币0 (步)积分17精华0日志记录相册帖子分享主题好友
学生, 积分 17, 距离下一级还需 83 积分
贡献0 (度)步币0 (步)金币6 (金)积分17帖子
其实,很多情况下都是这样的,习惯就好。
最后登录注册时间阅读权限20在线时间5 小时金币20 (金)贡献0 (度)步币0 (步)积分38精华0日志记录相册帖子分享主题好友
学生, 积分 38, 距离下一级还需 62 积分
贡献0 (度)步币0 (步)金币20 (金)积分38帖子
还不错哦,如果再能多分享一些就perfect了!
最后登录注册时间阅读权限20在线时间10 小时金币11 (金)贡献0 (度)步币0 (步)积分14精华0日志记录相册帖子分享主题好友
学生, 积分 14, 距离下一级还需 86 积分
贡献0 (度)步币0 (步)金币11 (金)积分14帖子
路过的帮顶
最后登录注册时间阅读权限20在线时间7 小时金币15 (金)贡献0 (度)步币0 (步)积分16精华0日志记录相册帖子分享主题好友
学生, 积分 16, 距离下一级还需 84 积分
贡献0 (度)步币0 (步)金币15 (金)积分16帖子
顶不错 支持下
最后登录注册时间阅读权限20在线时间2 小时金币16 (金)贡献0 (度)步币0 (步)积分38精华0日志记录相册帖子分享主题好友
学生, 积分 38, 距离下一级还需 62 积分
贡献0 (度)步币0 (步)金币16 (金)积分38帖子
顶不错 支持下
最后登录注册时间阅读权限20在线时间5 小时金币37 (金)贡献0 (度)步币0 (步)积分48精华0日志记录相册帖子分享主题好友
学生, 积分 48, 距离下一级还需 52 积分
贡献0 (度)步币0 (步)金币37 (金)积分48帖子
very good.
最后登录注册时间阅读权限20在线时间7 小时金币42 (金)贡献0 (度)步币0 (步)积分55精华0日志记录相册帖子分享主题好友
学生, 积分 55, 距离下一级还需 45 积分
贡献0 (度)步币0 (步)金币42 (金)积分55帖子
确实不错,顶先
最后登录注册时间阅读权限20在线时间10 小时金币31 (金)贡献0 (度)步币0 (步)积分68精华0日志记录相册帖子分享主题好友
学生, 积分 68, 距离下一级还需 32 积分
贡献0 (度)步币0 (步)金币31 (金)积分68帖子
我了个去,顶了
经常登录网站的会员
经常发表主题的会员
逛了这许久,何不进去瞧瞧?
&下次自动登录
用其他账号登录:
思步组织:||||||
(首次备案号:浙ICP备号)|邮箱:(将#换成@)|服务热线:0
||||||||||||&&
思步 过程改进 CMMI中文 质量保证 SQA 流程体系 需求跟踪矩阵 敏捷开发 agile Scrum 软件度量 项目评审 全员改进 流程管理 IPD 质量管理 6sigma 人力资源 信息安全 ISO27001认证 IT服务管理 ISO20000认证 ISO9000认证 软件测试 配置管理 软件工程 PMP认证 PMP试题 PMBOK中文 精益研发 顾问式管理培训         
| 、、、、 |
您现在的位置:&&>&&>&&>&正文
软件测试工具LoadRunner常用函数
来源:()  【】  
  lr_end_sub_transaction/标记子事务的结束以便进行性能分析  lr_end_transaction/标记LoadRunner事务的结束  lr_end_transaction_instance/标记事务实例的结束以便进行性能分析  lr_fail_trans_with_error/将打开事务的状态设置为LR_FAIL并发送错误消息  lr_get_trans_instance_duration/获取事务实例的持续时间(由它的句柄指定)  lr_get_trans_instance_wasted_time/获取事务实例浪费的时间(由它的句柄指定)  lr_get_transaction_duration/获取事务的持续时间(按事务的名称)  lr_get_transaction_think_time/获取事务的思考时间(按事务的名称)  lr_get_transaction_wasted_time/获取事务浪费的时间(按事务的名称)  lr_resume_transaction/继续收集事务数据以便进行性能分析  lr_resume_transaction_instance/继续收集事务实例数据以便进行性能分析  lr_set_transaction_instance_status/设置事务实例的状态  lr_set_transaction_status/设置打开事务的状态  lr_set_transaction_status_by_name/设置事务的状态  lr_start_sub_transaction/标记子事务的开始  lr_start_transaction/标记事务的开始  lr_start_transaction_instance/启动嵌套事务(由它的父事务的句柄指定)  lr_stop_transaction/停止事务数据的收集&&&2&&&
交流: 模考:
看了本文的网友还看了:
?&&( 11:39:56)?&&( 11:33:56)?&&( 18:15:18)?&&( 18:07:54)?&&( 17:36:30)?&&( 15:25:30)
 订书电话:010-  
版权声明 --------------------------------------------------------------------------------------
&&& 如果网所转载内容不慎侵犯了您的权益,请与我们联系,我们将会及时处理。如转载本内容,请注明出处。
 gaoxiaoliang 
Copyright & 2004-
 网 All Rights Reserved 
中国科学院研究生院权威支持(北京) 电 话:010- 传 真:010-测试工具LoadRunner和OpenSTA比较分析 - touchinsert - ITeye博客
LoadRunner
测试工具可以捕捉、处理及回放通信协议
支持多种协议。按照协议数量收费,支持多种协议录制功能。
仅支持HTTP 1.0 /
1.1 / HTTPS (SSL)。
回放脚本及脚本调试工具
扩展的记录功能支持参数和服务器信息的浏览,还可浏览及比较已录制网页版本与客户端返回的信息,脚本生成器包括了调试工具、支持断点调试和单步跟踪。
类似的回放功能,但没有综合比较功能。有调试功能,包括控制器、断点设定和单步跟踪。
使用中间介质来代表被捕获的协议数据和操作回放数据窗体底端
称为TSL,使用标准C语言语法而且允许添加C函数库,对工具支持的不同协议有广泛的定制功能。
使用专有的类似“BASIC”语言的自动化脚本语言SCL。在已有的功能上有些限制,例如字符串操作、支持文档对象模型(DOM)直接处理。
工具功能性扩展
附加的TSL或者C函数库, 受限与工具的功能性。
SCL脚本模块可以定义到Include文件里,开源使得功能可以用C++进行扩展。
编辑脚本的应用程序工具的界面
多种捕捉模式, 支持高级的文本浏览和低级的HTTP浏览,并且支持图形化的树形结构和脚本浏览方式,脚本浏览方式支持功能区分入口。
低级的HTTP浏览并且提供图形树表示的DOM结构。可视化的被捕获的HTML渲染与寻址服务器头表。有语言敏感、语法颜色凸显的编程功能。
从动态数据中替换数值从而能够成功回放的任务。
自动关联功能,包括在录制中录制后,比较录制与重放效果。但是不支持所有的模式捕获。
手动关联使用互动的DOM架构。自动生成脚本代码的功能用来辅助变量代换。
cookies的检测、录制和回放,并需要额外的代码来管理javascript生成的cookies
HTTP头存根自动管理,如果需要可以手动操纵。
HTTP头存根自动管理,如果需要可以手动操纵。
自动地调整动态数据参数从而更准确模拟真实用户。往往是对话(session)管理所必须的
可扩充的数据输入接口,包括数据库查询的向导界面。没有标准的函数来锁定数据源保持分布式测试中被并发访问数据的唯一性。
可扩充的数据输入接口,包括自动生成测试数据的向导界面。标准功能包括了对数据文件的顺序、随机、伪随机访问。分布式测试中,有标准的通用函数来维护单个或多个负载注入器(injector)的参数的唯一性。
管理和实施测试
实时监控功能。情景自动生成。对虚拟用户、脚本、脚本组的单独控制。脚本的运行安排,执行进度显示及循环控制
实时监控功能。简单拖放多情景测试配置,支持模块化脚本,并允许在在运行时加入新的情景/虚拟用户。没有情景自动生成。允许在多用户负载测试过程中对整个测试或者特定用户进行http监测和调试。
在执行期间捕获资源使用信息,包括显示并用于建立性能测试报告。
支持多种模式。 支持在线图形显示、Apache/Netscape/IIS。其他监视器需另外支付费用。新的机制允许远程用户通过浏览器界面实时监控结果。注意:通过防火墙监控需要制定TCP/IP端口。未来版本的LoadRunner应使用HTTP消息避免此类问题。
支持Windows
NT/2000中集成的性能图形显示以及SNMP信息收集。各种测试信息包括虚拟用户状特性、自定义状态和活动信息。 基于Web的监视器可以穿过防火墙运行在远程机器上。 执行过程中的联机图形以及监视结果会用于最后的报告。
分布式测试
把压力生成分布到多个产生压力的机器的能力
支持由单一控制器管理多个负载生成器。
支持由单一控制器管理多个负载生成器。同一网络使用TCP/IP或基于Web的HTTP远程控制负载生成器。
虚拟IP地址
模拟不同IP地址访问系统的能力。尤其对负载平衡系统非常有用
支持虚拟IP包括IP转发时的路由自动更新。
没有嵌入虚拟IP功能。
广域网/局域网仿真
在测试中模拟不同网络结构的能力
7.6版本新加入的功能。允许在局域网测试时仿真延时、丢包、连接故障及动态路由效果。需要专门的许可证书。
没有嵌入广域网/局域网仿真功能。
模拟网络浏览器缓存页面的能力
可以控制浏览器回放时的缓存仿真以及每个虚拟用户的设置。
没有特别的功能,虽然可以效仿简单的脚本代码。
用户网速模拟
模拟真实用户不同网络速度的能力
可以回放时仿真不同的网络速度
没有嵌入模拟真实用户不同网络速度的功能
分布式/远程压力生成
为了产生大量负载需要额外的负载生成器,并需要集中控制
可以控制多个负载生成器及收集结果。使用HTTP端口可穿过防火墙控制远程的负载发生器。
可以控制多个负载生成器及收集结果。使用HTTP端口可穿过防火墙控制远程的负载发生器.
检查和分析测试的结果,包括定时器、监控的资源和以图形方式显示的结果。
大范围的混合式图表功能——在Word中自动生成报告。分析器可以作为单独的应用程序分发给用户
工具生成多少虚拟用户及相应的资源使用的能力。 实际可利用资源取决于数量、规模和脚本的复杂度。
资源的限制主要是线程数量及内存大小。在NT/2K操作系统上每个虚拟用户会占到1
Windows 95, 98 & Unix的效率更低些。每台PC的最大虚拟用户数大约为1500。
主要使用的资源是内存。在一个单核P4处理器及Windows
2k上测试一个简单的ASP页面,如果达到3000用户的负载需要1GB内存。 未经证实的报告说明Win2k机器上对于复杂的脚本最多可以支持1664个虚拟用户。可能有线程限制。没有许可证书限制。
购买软机及证书的费用,不包括升级或支持。
没有虚拟用户的软件基本价为16,000美元。额外的费用是通过每种协议、监控资源和虚拟用户来收取。
免费并可以通过www.OpenSTA.org下载。可供下载的有: 先前版本; 自动安装包和当前源代码(附有MS C++ Visual
Studio 6简单build指令)。
虚拟用户成本
大多数商业工具按照虚拟用户的数量收费。额外的硬件也需要额外费用。
价格范围大:虚拟用户的费用从25个10000美元到1000个66000美元。临时的虚拟用户大约是每天3.50美元(1000分钟)。 这不是正式的报价。
免费,无许可证书限制
& 专家咨询
该工具支持的可用服务和费用。
根据M.I., 此项费用每年大约为初始成本的1/5, 包括升级。
MI和其合伙公司还提供咨询服务(包括etest协会)。
众多的独立资源。
Etest协会对每次远程技术支持收取美元50,也提供收费的专家咨询。网上资源包括网页和电子邮件论坛。升级是免费的(大约每3-6个月)。
工具的培训服务
有大量的培训课程,费用为大约每人每天400美元。许多合作伙伴也提供培训课程
专业公司,提供有针对性的培训,价格也不尽相同。
使用工具需要的操作系统。(不是指测试的操作系统)。
windows 2000, NT4 (sp&chmetcnv unitname="a" sourcevalue="6" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"&6a&/chmetcnv&),XP-Pro - 在Unix: HP, Solaris, Linux负载发生器仅支持部分功能
windows 2000, NT4 (sp5+), XP-Pro。
使用工具的硬件需求。(不是测试的硬件系统需求)。
Pentium 350 & 128M;
负载发生器:
Pentium 1GHz以及每个虚拟用户1
Pentium 200 & 80MB 内存。 专业版:
Pentium 500MHz+ & 128MB+ 内存。
代码开放性
工具本身源代码的可用性
开放源码GNU的公共许可证-
网络测试工程师对两种工具的体验
有一个非常友好的用户界面,强大的监测及结果分析。自动关联和改进的脚本记录设施能提高效能。非常灵活的脚本功能及周详的帮助文件,另一个亮点是支持很多协议。缺点是复杂的选项和控制器布局。
易于使用的界面和优秀的延展性。内建的结果分析功能稍许逊色。被捕获的数据是开放的、直接输出到Excel。情景设置和控制的拖放,非常直观和容易互动,模块化脚本简化了情景的制作。手动关联令人头痛,但可以用第三方的‘diff’工具和GUI DOM提供的功能使关联容易。相对不足的是标准脚本语言的功能,但足够完成大多数http负载测试工作。如果没有,就使用"Include"支持功能和提供的源代码,具有很强的可扩展性。
touchinsert
浏览: 508971 次
来自: 北京
他山界面开发框架 v22是一套基于Gecko v22 的开源收 ...
感谢博主的分享,好东西啊,哈哈哈,收走了一些,谢谢啊哦,对了, ...
最近有个对于DXperience 2013新功能发布、重难点技 ...
我自己把问价加密,密码为为123456,是rar文件。然后用各 ...
这次暴露也许是一件好事,让某些公司重视安全,提个醒。}

我要回帖

更多关于 常用软件测试工具 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信