Q15.你在哪里设置自动关联选项?
A15:录制选项中进行设置,如下图所示:
Q16.哪个函数是用来截取虚拟用户脚本中的动态值?(手工关联)
A16:Web_reg_save_param函数主要根据需要做关联的动态数据前面和后面的固定字符串来识别、提取动态数据,所以在做关联时,需要找出动态数据的左、右边界字符串。
1.函数原型:
int web_reg_save_param (const char *ParamName, , LAST);
2.参数说明:
ParamNam:存放动态数据的参数名称
List of Attributes:其它属性,包含Notfound、LB、RB、RelFrameID、Search、ORD、SaveOffset、Convert、SaveLen。
Notfound:指当找不到要找的动态数据时,怎么处理。
Notfound=error,当找不到动态数据时,发出一个错误信息,为LoadRunner的默认值。
Notfound=warning,当找不到动态数据时,不发出错误信息,只发出警告,脚本会继续执行下去不会中断。
LB:动态数据的左边界字符串,该参数为必选参数,并区分大小写。
RB:动态数据的右边界字符串,该参数为必选参数,并区分大小写。
ORD:指提取第几次出现的左边界的数据,该参数为可选参数,默认值是1。假如值为All,则查找所有符合条件的数据并把这些数据存储在数组中。
Search:搜寻的范围。可以是Headers(只搜寻Headers)、Body(只搜寻Body部分,不搜寻Headers)、Noresources(只搜寻Body部分,不搜寻Header与Resource)或是All(搜寻全部范围,此为默认值),该参数为可选参数。
RelFrameID:相对于URL而言,欲搜寻的网页的Frame,此属性可以是All或是具体的数字,该参数为可选参数。
SaveOffset:当找到符合的动态数据时,从第几个字符开始才存储到参数中,该参数为可选参数,此属性值不可为负数,其默认值是0.
Convert:可能的值有两种:
HTML_TO_URL:将HTML-encoded数据转成URL-encoded数据格式。
HTML_TO_TEXT:将HTML-encoded数据转成纯文字数据格式。
SaveLen:从Offset开始算起,到指定长度内的字符串,才储存到参数中,该参数为可选参数,默认值为-1,表示储存到结尾整个字符串。
Q17.你在VUGen中何时选择关闭日志?何时选择标准和扩展日志?
A17:在测试场景执行时,关闭日志,因为日志信息过多,也会影响性能测试结果;在调试测试脚本时,可以选择标准或扩展日志,用于输出调试信息。
可以在运行时设置中,进行日志设置,如下图所示:
Q18.你如何调试LoadRunner脚本?
A18: 通常采用以下方法调试LoadRunner测试脚本
断点
【方法】在脚本的任意一行上按右键菜单或F9增加断点。
单步跟踪
【方法】通过菜单命令VUser—>Run Step by Step或F10,可以控制脚本以语句为单位执行。
日志输出
【方法】通过日志输出函数lr_message、lr_log_message、lr_output_message输出。
对话框输出
综上,在实际测试工作中,基本上使用前三种方法,对话框输出基本上没用过。
Q19、你在LR中如何编写自定义函数?请给出一些你在以前进行的项目中编写的函数。
A19:在编写用户自定义函数之前,需要首先为函数创建外部库(DLL)文件,将这些库文件放在bin目录下,一旦库文件已经被添加并且将用户自定义函数作为参数,函数应该为以下格式:__declspec (dllexport) char* (char*, char*)
Q20.在运行设置下你能更改那些设置?
A20:可以修改Run Logic、pacing、Log、Think Time等,见下图;可以测试实际需要,修改相关选项。
Q21.你在不同的环境下如何设置迭代?
A21:在“运行时设置”中设置,如下图所示:
Q22.你如何在负载测试模式下执行功能测试?
A22:在负载测试模式下,可以通过同时运行数个虚拟用户,通过增加虚拟用户数,确定服务器在多大的负载量下,仍然可以正常运行,我一般进行核心功能操作,验证核心功能运行是否正常。
Q23.什么是逐步递增?你如何来设置?
A23:虚拟用户数随着负载时间逐渐增加,可以帮助确定系统响应时间减慢的准确时间点。
可以在“加压”选项卡中进行设置:如下图所示,将设置更改为:“每 30 秒启动 2 个 Vuser”
Q24.以线程方式运行的虚拟用户有哪些优点?
A24:以线程方式运行的虚拟用户,在默认情况下,Controller为每50个用户仅启动一个mmdrv进程,而每个用户都按线程方式来运行,这些线程用户将共享父进程的内存,这就节省了大量内存空间,从而可以在一个负载生成器上运行更多的用户。