软件测试技术博客,希望大家多提意见

发布新日志

  • (转载)lr回放脚本时,出现 Uable to connect to proxy...

    2011-04-11 12:46:50

    分析:出现这个问题的原因是,在用LR录制脚本时,LR会自动修改IE的代理服务器设置,使之自动选择“为LAN使用代理服务器”而使系统不能进行访问,可以参考下面的方法去除LR自动修改IEProxy
  • (转载)LoadRunner出现error问题及解决方法总结

    2011-04-11 12:45:15

    一、Step download timeout (120 seconds)

    这是一个经常会遇到的问题,解决得办法走以下步骤:

    1、修改run time setting中的请求超时时间,增加到600s,其中有三项的参数可以一次都修改了,HTTP-request connect timeoutHTTP-request receieve timeoutStep download timeout,分别建议修改为6006005000run time setting设置完了后记住还需要在control组件的optionrun time setting中设置相应的参数。

    2、办法一不能解决的情况下,解决办法如下:

    设置runt time setting中的internet protocol-preferences中的advaced区域有一个winlnet replay instead of sockets选项,选项后再回放就成功了。切记此法只对windows系统起作用,此法来自zee的资料。

    二、问题描述Connection reset by peer.

    这个问题不多遇见,一般是由于下载的速度慢,导致超时,所以,需要调整一下超时时间。

    解决办法:Run-time setting窗口中的Internet ProtocolPreferences设置set advanced options(设置高级选项),重新设置一下HTTP-request connect timeoutsec),可以稍微设大一些

    三、问题描述connection refused

    这个的错误的原因比较复杂,也可能很简单也可能需要查看好几个地方,解决起来不同的操作系统方式也不同。

    1、首先检查是不是连接weblogic服务过大部分被拒绝,需要监控weblogic的连接等待情况,此时需要增加acceptBacklog,每次增加25%来提高看是否解决,同时还需要增加连接池和调整执行线程数,(连接池数*Statement Cache Size)的值应该小于等于oracle数据库连接数最大值。

    2、如果方法一操作后没有变化,此时需要去查看服务器操作系统中是否对连接数做了限制,AIX下可以直接vi文件limits修改其中的连接限制数、端口数,还有tcp连接等待时间间隔大小,wiodows类似,只不过windows修改注册表,具体修改注册表中有TcpTimedWaitDelayMaxUserPort项,键值在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\]。因为负载生成器的性能太好,发数据包特别快,服务器也响应特别快,从而导致负载生成器的机器的端口在没有timeout之前就全部占满了。在全部占满后,就会出现上面的错误。执行netstat –na命令,可以看到打开了很多端口。所以就调整TCPtime out。即在最后一个端口还没有用到时,前面已经有端口在释放了。

    1,这里的TcpTimedWaitDelay默认值应该中是30s,所以这里,把这个值调小为5s(按需要调整)。
    2,
    也可以把MaxUserPort调大(如果这个值不是最大值的话)。

    四、问题描述open many files

    问题一般都在压力较大的时候出现,由于服务器或者应用中间件本身对于打开的文件数有最大值限制造成,解决办法:

    1、修改操作系统的文件数限制,aix下面修改limits下的nofiles限制条件,增大或者设置为没有限制,尽量对涉及到的服务器都作修改。

    2、方法一解决不了情况下再去查看应用服务器weblogiccommonEnv.sh文件,修改其中的nofiles文件max-nofiles数增大,应该就可以通过了,具体就是查找到nofiles方法,修改其中else条件的执行体,把文件打开数调大。修改前记住备份此文件,防止修改出错。

    3linux上可以通过ulimit –HSn 4096来修改文件打开数限制,也可以通过ulimit -a 来查看。

    4linux上可以通过lsof -p pid | wc -l 来查看进程打开的句柄数。

    五、问题描述has shut down the connection prematurely

    一般是在访问应用服务器时出现,大用户量和小用户量均会出现。

    来自网上的解释:

    1>应用访问死掉

    小用户时:程序上的问题。程序上存在数据库的问题

    2>应用服务没有死

    应用服务参数设置问题

    例如:

    在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25

    Java连接池的大小设置,或JVM的设置等

    3>数据库的连接

    在应用服务的性能参数可能太小了

    数据库启动的最大连接数(跟硬件的内存有关)

    以上信息有一定的参考价值,实际情况可以参考此类调试。

    如果是以上所说的小用户时:程序上的问题。程序上存在数据库的问题,那就必须采用更加专业的工具来抓取出现问题的程序,主要是程序中执行效率很低的sql语句,weblogic可以采用introscope定位,期间可以注意观察一下jvm的垃圾回收情况看是否正常,我在实践中并发500用户和600用户时曾出现过jvm锯齿型的变化,上升下降都很快,这应该是不太正常的。

    ---------------------------------------

    实际测试中,可以用telent 站点看看是否可以连接进去,可以通过修改连接池中的连接数和适当增加应用内存值,问题可以解决。

    六、问题描述Failed to connect to server

    这个问题一般是客户端链接到服务失败,原因有两个客户端连接限制(也就是压力负载机器),一个网络延迟严重,解决办法:

    1、修改负载机器注册表中的TcpTimedWaitDelay减小延时和MaxUserPort增加端口数。注:这将增加机器的负荷。

    2、检查网络延迟情况,看问题出在什么环节。

    建议为了减少这种情况,办法一最好测试前就完成了,保证干净的网络环境,每个负载机器的压力测试用户数不易过大,尽量平均每台负载器的用户数,这样以上问题出现的概率就很小了。

    七、问题描述Overlapped transmission of request to ... WSA_IO_PENDING

    这个问题,解决方法:

    1、方法一,在脚本前加入web_set_sockets_option("OVERLAPPED_SEND", "0"),禁用TTFB细分,问题即可解决,但是TTFB细分图将不能再使用,附图。

    来源:(http://blog.sina.com.cn/s/blog_5a06b52a0100ib2u.html) - LoadRunner出现error问题及解决方法总结_海棠烟雨1002_新浪博客

    2、方法二,可以通过增加连接池和应用系统的内存,每次增加25%

    八、问题描述Deleted the current transaction ... since response time is not accurate

    这个问题不多遇见,一般出现在压力机器上发生ping值为负数(AMD双核CPU),可以重新启动pc机或者打补丁,附图。

    九、问题描述HTTP Status-Code=500 (Internal Server Error) for

    1、应用服务当掉,重新启动应用服务。

    2、当应用系统处于的可用内存处于阀值以下时,出现HTTP Status-Code=500的概率非常高,此时只要增加应用系统的内存,问题即可解决。

    十、问题描述Failed to transmit data to network: [10057]Socket is not connected

    这个错误是由网络原因造成的,PC1PC2上面都装了相同的loadrunner 9.0,且以相同数量的虚拟用户数运行相同的业务(机器上的其他条件都相同),PC1上面有少部分用户报错,PC2上的用户全部执行通过。

    十一、问题描述 Error -27257: Pending web_reg_save_param/reg_find/create_html_param[_ex] request(s) detected and reset at the end of iteration number 1
    解决方法:web_reg_save_param位置放错了,应该放到请求页面前面。
    十二、问题描述 通过Controler调用远程代理时报错,Error: CCI security error:You are running under secure mode and the function system is not allowed in this mode.
    解决方法:在代理开启的时候,去掉勾选防火墙选项。

    1LoadRunner超时错误:在录制Web协议脚本回放时超时情况经常出现,产生错误的原因也有很多,解决的方法也不同。

    错误现象1Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)

    错误分析:对于HTTP协议,默认的超时时间是120秒(可以在LoadRunner中修改),客户端发送一个请求到服务器端,如果超过120秒服务器端还没有返回结果,则出现超时错误。

    解决办法:首先在运行环境中对超时进行设置,默认的超时时间可以设置长一些,再设置多次迭代运行,如果还有超时现象,需要在“Runtime Setting”>“Internet ProtocolPreferences”>“Advanced”区域中设置一个“winlnet replay instead of sockets”选项,再回放是否成功。

    错误现象2Action.c(81):Continuing after Error -27498: Timed out while processing URL=http://172.18.20.70:7001/workflow/bjtel/leasedline/ querystat/ subOrderQuery.do

    错误分析:这种错误常常是因为并发压力过大,服务器端太繁忙,无法及时响应客户端的请求而造成的,所以这个错误是正常现象,是压力过大造成的。

    如果压力很小就出现这个问题,可能是脚本某个地方有错误,要仔细查看脚本,提示的错误信息会定位某个具体问题发生的位置。

    解决办法:例如上面的错误现象问题定位在某个URL上,需要再次运行一下场景,同时在其他机器上访问此URL。如果不能访问或时间过长,可能是服务器或者此应用不能支撑如此之大的负载。分析一下服务器,最好对其性能进行优化。

    如果再次运行场景后还有超时现象,就要在各种图形中分析一下原因,例如可以查看是否服务器、DNS、网络等方面存在问题。

    最后,增加一下运行时的超时设置,在“Run-Time Settings”>“Internet Protocol:Preferences”中,单击“options”,增加“HTTP-request connect timeout”或者“HTTP-request receive”的值。

    2LoadRunner脚本中出现乱码:在录制Web协议脚本时出现中文乱码,在回放脚本时会使回放停止在乱码位置,脚本无法运行。

    错误现象:某个链接或者图片名称为中文乱码,脚本运行无法通过。

    错误分析:脚本录制可能采用的是URL-based script方式,如果程序定义的字符集合采用的是国际标准,脚本就会出现乱码现象。

    解决办法:重新录制脚本,在录制脚本前,打开录制选项配置对话框进行设置,在“Recording Options”“Advanced”选项里先将“Surport Charset”选中,然后选中支持“UTF-8”的选项。

    3LoadRunner HTTP服务器状态代码:在录制Web协议脚本回放脚本的过程中,会出现HTTP服务器状态代码,例如常见的页面-404错误提示、-500错误提示。

    错误现象1-404 Not Found服务器没有找到与请求URI相符的资源,但还可以继续运行直到结束。

    错误分析:此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再重复提交同样的资源,而需要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,保证模拟实际环境,造成一定的负载压力。

    解决办法:在出现错误的位置进行脚本关联,在必要时插入相应的函数。

    错误现象2-500 Internal Server Error服务器内部错误,脚本运行停止。

    错误分析:服务器碰到了意外情况,使其无法继续回应请求。

    解决办法:出现此错误是致命的,说明问题很严重,需要从问题的出现位置进行检查,此时需要此程序的开发人员配合来解决,而且产生的原因根据实际情况来定,测试人员无法单独解决问题,而且应该尽快解决,以便于后面的测试。

    4LoadRunner请求无法找到:在录制Web协议脚本回放脚本的过程中,会出现请求无法找到的现象,而导致脚本运行停止。

    错误现象:Action.c(41): Error -27979: Requested form. not found [MsgId: MERR-27979]

    Action.c(41): web_submit_form. highest severity level was “ERROR”,0 body bytes, 0 header bytes [MsgId: MMSG-27178]”

    这时在tree view中看不到此组件的相关URL

    错误分析:所选择的录制脚本模式不正确,通常情况下,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用HTTPS安全协议,这时则使用“URL-based script”模式进行录制。

    解决办法:打开录制选项配置对话框进行设置,在“Recording Options”“Internet Protocol”选项里的“Recording”中选择“Recording Level”“HTML-based script”,单击“HTML Advanced”,选择“Script. Type”“A script. containing explicit”。然后再选择使用“URL-based script”模式来录制脚本。

    5LoadRunner不执行检查方法:在录制Web协议脚本中添加了检查方法Web_find,但是在脚本回放的过程中并没有执行。

    错误现象:在脚本中插入函数Web_find,在脚本中设置文本以及图像的检查点,但是在回放过程中并没有对设置的检查点进行检查,即Web_find失效。

    错误分析:由于检查功能会消耗一定的资源,因此LoadRunner默认关闭了对文本以及图像的检查,所以在设置检查点后,需要开启检查功能。

    解决办法:打开运行环境设置对话框进行设置,在“Run-time Settings”

  • Loadrunner-网页细分图

    2011-03-13 17:12:19

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://sqa.blogbus.com/logs/4237848.html

    关于网页细分图

    网页细分图为您提供脚本中各个受监视的网页的性能信息。您可以在脚本及其组件中查看每个页面的下载时间,并标识下载期间出现问题的时间点。此外,还可以查看每个页面及其组件的相关下载时间以及大小。Analysis将显示平均下载时间和动态下载时间数据。

    您可以将网页细分图中的数据与事务性能摘要图和平均事务响应时间图中的数据关联起来,分析问题的原因和问题的所在,是网络问题还是服务器问题。

    注意:由于要从客户端测定服务器时间,因此,如果发送初始HTTP请求到发送第一次缓冲这一段时间内网络性能发生变化,则网络时间可能会影响此测定。因此,所显示的服务器时间是一个估计值,可能不太精确。

    启用组件细分功能

    1.Controller菜单中,选择[工具>选项]
    2.
    选择[网页细分]选项卡。选中启用网页细分复选框。

    1.激活网页细分图

    网页细分图多用于分析在事务性能摘要图和平均事务响应时间图中检测到的问题。例如,下面的平均事务响应时间显示trans1事务处于繁忙时的平均事务响应时间。

    使用网页细分图可以精确测定trans1事务响应时间的延迟原因。

    2.页面组件细分图

    页面组件细分图显示每个网页及其组件的平均下载时间(以秒为单位)。根据下载组件所用的平均秒数对图例进行排序,该方法可能有助于隔离有问题的组件。要按平均秒数对图例排序,请单击图的平均值列。

    此图仅可以饼形图的形式查看。要确定哪些组件导致了下载时间延迟,可以通过在网页细分树中双击有问题的URL,对其进行细分。

    3.页面组件细分(随时间变化)图

    页面组件细分(随时间变化)图显示在方案运行期间的每一秒内每个网页及其组件的平均响应时间(以秒为单位)。X轴表示从方案开始运行以来已用的时间。Y轴表示每个组件的平均响应时间(以秒为单位)。

    使用上面的图,可以跟踪主要组件中的哪些组件问题最严重,以及在方案运行期间出现问题的时间点。根据下载组件所用的平均秒数对图例选项卡进行排序,该方法可能有助于隔离有问题的组件。要按平均秒数对图例排序,请双击平均值列标题。

    4.页面下载时间细分图

    页面下载时间细分图显示每个页面组件的下载时间的细分,您可以据此确定在网页下载期间,响应时间缓慢是由网络错误引起还是由服务器错误引起。

    页面下载时间细分图根据DNS解析时间、连接时间、第一次缓冲时间、SSL握手时间、接收时间、FTP验证时间、客户端时间和错误时间对每个组件进行细分。

    5.页面下载时间细分(随时间变化)图

    页面下载时间细分(随时间变化)图显示方案运行期间,每一秒内每个页面组件下载时间的细分。X轴表示从方案开始运行以来已用的时间。Y轴表示下载过程的每个步骤所用的时间(以秒为单位)。

    要隔离问题最严重的组件,可以根据下载组件所用的平均秒数对图例选项卡进行排序。要按平均秒数对图例排序,请双击平均值列标题。要表示图中的组件,请选中该组件。

    6.第一次缓冲细分时间图

    第一次缓冲时间细分图显示成功收到从Web服务器返回的第一次缓冲之前的这一段时间内,每个网页组件的相关服务器/网络时间。如果组件的下载时间很长,则可以使用此图确定产生的问题与服务器有关还是与网路有关。

    网络时间定义为从发送第一个HTTP请求那一刻直到收到确认为止,所经过的平均时间。服务器时间定义为从收到初始HTTP请求(通常为GET)确认直到成功收到来自Web服务器的第一次缓冲为止,所经过的平均时间。

    7.第一次缓冲时间细分(随时间变化)图

    第一次缓冲时间细分(随时间变化)图显示成功收到从Web服务器返回的第一次缓冲之前的这段时间内,方案运行的每一秒中每个网页组件的服务器时间和网络时间。您可以使用此图确定方案运行期间服务器或网络出现问题的时间。

    8.已下载组件大小图

    显示每个网页组件的大小。

  • LoadRunner常见问题(一)

    2011-03-09 13:33:12

    问题:Controller中运行多个vuser,报错:27796 Action.c(4): Error -27796: Failed to connect to server "XXXXXX": [10060] Connection timed out

    症结:IP spoofer被勾选

    解决:去掉IP spoofer前面的勾

  • HTML-based script和URL-based Script模式

    2011-02-04 13:14:11

    选择Tools-Recording Options,打开设置页面

     

     

    针对WebHTTP/HTML)协议,Loadrunner提供两种录制方式,HTML-based scriptURL-based Script模式。默认情况下,Loadrunner选择的是“HTML-based script

    HTML-based script:为每个用户请求生成单独的函数

    URL-based Script:捕获所有作为用户操作的结果发送给服务器的HTTP请求,并一一记录

     

    测试用例:

     

     

    步骤

    步骤描述

    预期结果

    1

    打开飞机订票系统登录页面

     

    2

    输入用户名“jojo”,密码“bean”点击“Login

     

    3

    点击“Sign Off

     

    4

    关闭页面

     

     使用两种录制方式录制的脚本分别如下:

    HTML-Based script

    /*HTML_Based*/

     

             web_url("WebTours",

                       "URL=http://127.0.0.1:1080/WebTours/",

                       "Resource=0",

                       "RecContentType=text/html",

                       "Referer=",

                       "Snapshot=t1.inf",

                       "Mode=HTML",

                       LAST);

     

             lr_think_time(9);

     

             web_submit_form("login.pl",

                       "Snapshot=t2.inf",

                       ITEMDATA,

                       "Name=username", "Value=jojo", ENDITEM,

                       "Name=password", "Value=bean", ENDITEM,

                       "Name=login.x", "Value=60", ENDITEM,

                       "Name=login.y", "Value=7", ENDITEM,

                       LAST);

     

             web_image("SignOff Button",

                       "Alt=SignOff Button",

                       "Snapshot=t3.inf",

                       LAST);

     

             return 0;

     

     


     

    URL-Based Script

    /*URL_Based*/

     

             web_url("WebTours",

                       "URL=http://127.0.0.1:1080/WebTours/",

                       "Resource=0",

                       "RecContentType=text/html",

                       "Referer=",

                       "Snapshot=t4.inf",

                       "Mode=HTTP",

                       LAST);

     

             web_concurrent_start(NULL);

     

             web_url("header.html",

                       "URL=http://127.0.0.1:1080/WebTours/header.html",

                       "Resource=0",

                       "RecContentType=text/html",

                       "Referer=http://127.0.0.1:1080/WebTours/",

                       "Snapshot=t5.inf",

                       "Mode=HTTP",

                       LAST);

     

             web_url("welcome.pl",

                       "URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true",

                       "Resource=0",

                       "RecContentType=text/html",

                       "Referer=http://127.0.0.1:1080/WebTours/",

                       "Snapshot=t8.inf",

                       "Mode=HTTP",

                       LAST);

     

             web_concurrent_end(NULL);

     

             web_concurrent_start(NULL);

     

             web_url("hp_logo.png",

                       "URL=http://127.0.0.1:1080/WebTours/images/hp_logo.png",

                       "Resource=1",

                       "RecContentType=image/png",

                       "Referer=http://127.0.0.1:1080/WebTours/header.html",

                       "Snapshot=t6.inf",

                       LAST);

     

             web_url("webtours.png",

                       "URL=http://127.0.0.1:1080/WebTours/images/webtours.png",

                       "Resource=1",

                       "RecContentType=image/png",

                       "Referer=http://127.0.0.1:1080/WebTours/header.html",

                       "Snapshot=t7.inf",

                       LAST);

     

             web_concurrent_end(NULL);

     

             web_concurrent_start(NULL);

     

             web_url("home.html",

                       "URL=http://127.0.0.1:1080/WebTours/home.html",

                       "Resource=0",

                       "RecContentType=text/html",

                       "Referer=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true",

                       "Snapshot=t9.inf",

                       "Mode=HTTP",

                       LAST);

     

             web_url("nav.pl",

                       "URL=http://127.0.0.1:1080/WebTours/nav.pl?in=home",

                       "Resource=0",

                       "RecContentType=text/html",

                       "Referer=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true",

                       "Snapshot=t10.inf",

                       "Mode=HTTP",

                       LAST);

     

             web_concurrent_end(NULL);

     

             web_url("mer_login.gif",

                       "URL=http://127.0.0.1:1080/WebTours/images/mer_login.gif",

                       "Resource=1",

                       "RecContentType=image/gif",

                       "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",

                       "Snapshot=t11.inf",

                       LAST);

     

             lr_think_time(8);

     

             web_submit_data("login.pl",

                       "Action=http://127.0.0.1:1080/WebTours/login.pl",

                       "Method=POST",

                       "RecContentType=text/html",

                       "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",

                       "Snapshot=t12.inf",

                       "Mode=HTTP",

                       ITEMDATA,

                       "Name=userSession", "Value=104960.867557716fDQiQctpzcfDcDQDpftHHf", ENDITEM,

                       "Name=username", "Value=jojo", ENDITEM,

                       "Name=password", "Value=bean", ENDITEM,

                       "Name=JSFormSubmit", "Value=off", ENDITEM,

                       "Name=login.x", "Value=54", ENDITEM,

                       "Name=login.y", "Value=9", ENDITEM,

                       LAST);

     

             web_concurrent_start(NULL);

     

             web_url("login.pl_2",

                       "URL=http://127.0.0.1:1080/WebTours/login.pl?intro=true",

                       "Resource=0",

                       "RecContentType=text/html",

                       "Referer=http://127.0.0.1:1080/WebTours/login.pl",

                       "Snapshot=t13.inf",

                       "Mode=HTTP",

                       LAST);

     

             web_url("nav.pl_2",

                       "URL=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home",

                       "Resource=0",

                       "RecContentType=text/html",

                       "Referer=http://127.0.0.1:1080/WebTours/login.pl",

  • LoadRunner脚本参数化

    2011-02-04 13:12:44

    Loadrunner脚本参数设置

    l  数据分配方式

    “Select next row”列表中选择一个数据分配方法,以指示在Vuser脚本执行期间,如何从参数文件中取得数据。包括“Sequential”“Random”“Unique”

    分配方法

    描述

    Sequential(顺序)

    顺序方法是顺序地向Vuser分配数据。当正在运行的Vuser访问数据表时,它将会提取下一个可用的数据行。如果在数据表中没有足够的值,则VuGen返回到表中的第一个值,循环继续直到测试结束。

    Random(随机)

    随机方法是为每个Vuser分配一个数据表中的随机值。当运行一个场景、会话步骤或业务流程监控器配置文件时,可以指定随即顺序的种子数。每个种子值代表用于测试执行的一个随机值顺序。每当使用该种子值时,会将相同顺序的值分配给场景或会话步骤中的Vuser。如果在测试执行中发现问题,并且要使用相同的随机值顺序重复该测试,请启用该选项。

    Unique(惟一)

    惟一方法是为每一个Vuser的参数分配一个惟一的顺序值。在这种情况下,必须确保表中的数据对所有的Vuser和它们的迭代来说是充足的。如果拥有20Vuser,并且要运行5次迭代,则表格中至少包含有100个惟一值。

     

    l  数据更新方式

    “Update value on”列表中选择一个数据更新方式,以指示在Vuser脚本执行期间,如何更新参数值。包括“Each occurence”“Each interation”“Once”

    分配方法

    描述

    Each occurence(每次出现)

    每次出现方法指示Vuser在每次参数出现时使用新值。当使用同一个参数的语句不相关时,该方法非常有用。例如,对于随即数据,在该参数每次出现时都使用新值可能是非常有用的。

    Each interation(每次迭代)

    每次迭代方法是指示Vuser在每次脚本迭代时使用新值。如果一个参数在脚本中出现了若干次,则Vuser为整个迭代中该参数的所有出现使用同一个值。当使用同一个参数的几个语句相关时,该方法非常有用。

    Once(一次)

    一次方法指示Vuser在场景或会话步骤运行期间仅对参数值更新一次。Vuser为该参数的所有 和所有迭代使用同一个参数值。当使用日期和时间时,该类型可能会非常有用。

     


     

    l  数据分配和更新方式组合表

    更新方法

    数据分配方法

    Sequential

    Random

    Unique

    Each interation

    对于每次迭代,Vuser会从数据表中提取下一个值

    对于每次迭代,Vuser会从数据表中提取新的随机值

    对于每次迭代,Vuser会从数据表中提取下一个惟一值

    Each occurence

    参数每次出现时,Vuser将从数据表中提取下一个值,即使在同一次迭代中

    参数每次出现时,Vuser将从数据表中提取新的随机值,即使在同一次迭代中

    参数每次出现时,Vuser将从数据表中提取新的惟一值,即使在同一次迭代中。

    Once

    对于每一个Vuser,第一次迭代中分配的值将用于所有的后续的迭代

    第一次迭代中分配的随机值将用于该Vuser的所有迭代

    第一次迭代中分配的惟一值将用于该Vuser的所有后续迭代。

     

    l  实例讲解

    数据表

    孙悟空

    猪八戒

    沙和尚

    唐三藏

    刘备

    孙权

    曹操

    关羽

    张飞

     

    更新方法

    数据分配方法

    Sequential

    Random

    Unique

    Each interation

    所有Vuser在第一次迭代使用孙悟空,第二次迭代使用猪八戒,第三次迭代使用沙和尚

    每次迭代,Vuser使用表中的随机值

    对于一个有3次迭代的测试运行,第一个Vuser将在第一次迭代时提取孙悟空,第二次迭代提取猪八戒,第三次迭代提取沙和尚。第二个Vuser提取唐三藏、刘备和孙权。第三个Vuser提取曹操、关羽和张飞。

    Each occurence

    所有Vuser在第一次出现是使用孙悟空,第二次出现时使用猪八戒,第三次出现时使用沙和尚

    Vuser会在参数每次出现时使用随机值

    Vuser会在参数每次出现时使用列表的惟一值

    Once

    所有Vuser在所有迭代中使用孙悟空

    所有Vuser会在所有迭代中使用第一次随机分配的值

    第一个Vuser会在所有迭代时都提取孙悟空,第二个Vuser就会在所有迭代时使用猪八戒

    值不够

    VuGen返回到表的第一个值,循环继续直到测试结束

     

     

     

Open Toolbar