LoadRunner案例分析Word下载.docx
《LoadRunner案例分析Word下载.docx》由会员分享,可在线阅读,更多相关《LoadRunner案例分析Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
另外一种就是最原始的办法,也是Zee兄这种高手才最先想到的,自己取HTTP服务器的数据,然后利用关联函数分析啊。
(果然是高啊)。
其实所有的东西都可以从服务器的返回取,然后自己动手解析,呵呵。
举个不太恰当的例子:
你需要一套家具,可以去家具市场挑,当然也可以自己买木材原料和工具,动手加工。
那才是最合乎自己需要的。
第二个问题:
动态数据参数化的问题。
其实第一次看到这个问题,我没有马上反应过来,后来仔细想想,明白了。
就是需要参数化的数据不是静态的,是动态的。
比如从数据库中选出来的。
针对这个问题,我跟Zee兄弟的看法一致,应该提前从数据源(比如数据库)把数据选取出来,然后在执行的时候直接进行参数化的选取。
反之,如果在程序执行期间,进行数据的选取,将可能带来数据库服务器的强大压力,因为参加并发执行的每个虚拟用户都去数据库搜刮一下,对数据库将是多么严峻的考验啊。
朋友或者同事之间的探讨是加深对问题理解和增加知识面,扩展视野最直接的途径和方法,加强沟通,keepintouch.
LoadRunner案例分析
(二)
昨天在交流会开始之前,一个朋友问起这样一个问题:
他们公司的系统上线以后,用户分布在各个不同的地区,而且接入系统的方式和带宽也不同,这种情况下进行性能测试,如何保证更加真实的模拟用户行为?
用LoadRunner可以做到吗?
回答当然是肯定的,其实这些都是简单问题的组合,这样的问题考察的也是你对工具的熟悉和掌握程度。
在VUGen里面,是可以通过RTS(runTimeSetting)来模拟一个单个用户更加真实的行为,比如思考时间,网络带宽,是否清除cache等等。
同样的设置也可以在场景中进行设置。
而且LoadRunner提供设置不同用户组不同RunTimeSetting的功能。
以达到模拟不同用户行为的更加真实组合。
假设有三种不同带宽的用户,而且上传和下载的带宽也有所不同,那么可以录制两个脚本,分别模拟上传和下载的用户行为,再Controller里面,建立六个不同的脚本组,脚本组的用户数可以按照绝对或者百比分的方法分布。
比如100,50,200用户或者20%,40%,40%等,这取决于你的业务模型。
然后设置不同的带宽和分布情况。
这样不同用户组的虚拟用户模拟出来的就是不同带宽的用户实际接入情况。
就可以满足之前的问题的要求
LoadRunner案例分析(三)来源:
2008-06-16【聚杰网测试工具】LoadRunner案例分析(三)
把昨天的功课补了,本来打算昨天分析一个典型案例,可惜太忙了。
所以这么说。
以前一直没有解决的问题,利用LoadRunner测试一个应用的时候,需要验证域用户,所以即使录制成功,每次回放的时候都提示错误,用户名和密码不对,对此耿耿于怀了很久。
今天居然解决了。
解决方法就是一个简单的函数调用:
web_set_user,此函数的解释和用法如下:
Theweb_set_userfunctionisaServicefunctionthatspecifiesaloginstringandpasswordforaWebserverorproxyserver.Itcanbecalledmorethanonceifseveralproxyserversrequireauthentication.web_set_useroverridestherun-timeproxyauthenticationsettingsforusernameandpassword.
Whenyoulogontoaserverthatrequiresuserandpasswordvalidation,VuGenrecordsaweb_set_userstatementcontainingthelogindetails.However,therearesomemorestringent,authenticationmethodsforwhichVuGenisunabletoinsertweb_set_userstatements.SeeUserAuthenticationformoredetail.Insuchcases,youcanaddweb_set_userintoyourscrīptmanually.
Whenyourunthescrīpt,LoadRunnerautomaticallysubmitstheuserauthorizationalongwitheverysubsequentrequesttothatserver.Attheendofthescrīpt,LoadRunnerresetstheauthorization.
ThisfunctionissupportedforallWebVusers,andforWAPVusersrunninginHTTPmodeonly.ItisnotsupportedforWAPVusersrunninginWirelessSessionProtocol(WSP)replaymode.
Example3
ThefollowingexamplewasinsertedmanuallybytheuserintothescrīptastheWebserver“mansfield”usesNTLMauthentication.VuGencannotrecordNTLMorDigestauthentication.NotethatforNTLMauthenticationthedomainname“mansfield”followedbyadoublebackslashmustbeprependedtotheusername:
web_set_user(“mansfield//freddy”,“XYZ”,“mansfield:
80″);
原来一直没有想到域的设置,结果一直不行,现在可以了。
另外一个问题跟之前这个有关系,那就是验证码的问题,之前曾经看过段念(关河大侠)的关于验证码的是三个解决方案,这里是第四种解决方案。
对于一些比较简单有规律的验证码可以搞定。
对于复杂的比如有干扰的,或者没有规律的则参考关大侠的其他解决方案。
这个应用经过源代码分析,发现每次客户端请求过来的验证码都可以取到,格式如下固定,是四个数字的组合。
经过多次尝试发现如下规律:
验证码如下:
52|52|52|51|46|47|49|55|
对应界面的验证码是:
6039
规律是第2,5,8,9位的值减去46对应的即是验证码
有了这个规律,就可以通过关联提前取得服务器的验证码,然后通过简单的计算,得到结果。
详细代码如下:
#include"
web_api.h"
Action()
{
//char*str=“52|52|52|51|46|47|49|55|”;
charresult[64];
intnum1;
intnum2;
intnum3;
intnum4;
inttemp1;
inttemp2;
inttemp3;
inttemp4;
web_set_user(”XXXXDomain//szXXXX”,
lr_decrypt(”46246a2633f042c67758b9ddc2b863038aa063c03d7e”),
“XXXX.XXXX:
8080″);
web_reg_save_param(”check”,“LB=Image=”,“RB=//”,LAST);
web_url(”Register”,
“URL=XXXX.XXXX:
8080/xx/main/Register”,
“Resource=0″,
“RecContentType=text/html”,
“Referer=”,
“Snapshot=t1.inf”,
“Mode=HTML”,
LAST);
lr_think_time(6);
sscanf(lr_eval_string(”{check}”),“%d|%d|%d|%d|%d|%d|%d|%d”,&
temp1,&
num1,&
temp2,&
temp3,&
num2,&
temp4,&
num3,&
num4);
num1-=46;
num2-=46;
num3-=46;
num4-=46;
sprintf(result,“%d%d%d%d”,num1,num2,num3,num4);
lr_log_message(”getvalue:
%s”,result);
web_submit_form(”Register;
jsessionid=6726009A7D21963602B166D91C883413″,
“Snapshot=t2.inf”,
ITEMDATA,
“Name=Register.reason”,“Value=“,ENDITEM,
“Name=set_attach”,“Value=result”,ENDITEM,
return0;
}
LoadRunner案例分析(四)来源:
2008-06-16【聚杰网测试工具】LoadRunner案例分析(四) 最近在论坛上看到几次这样的问题,今天突然想起来,觉得比较典型,有必要分析一下。
这个问题的具体描述大概是这样的:
在web应用下,模拟十个用户并发进行数据的添加,结果每次执行全部成功,但是数据却不是十条,每次数据不一样,但是都比十小。
乍一看,可能是数据参数化的问题,其实仔细想想,道理其实很简单。
是数据库的问题。
大多数的数据库都有记录锁的问题,第一次的数据操作没有commit之前,第二次对同样表进行的操作可能就没有办法成功。
所以每次数据的条数都达不到十条。
但是为什么每次都不一样呢?
这个问题也容易解释,因为每次的操作服务器的响应时间是不同的,所以不同虚拟用户的提交时间也不是不同的,这样一来,就导致每次提交成功的数据量不一致。
导致每次结果的条数可能是不同的。
其实这个问题,跟LoadRunner的使用并没多大关系,而主要是对数据库的了解和应用执行机制的了解。
如何解决这个问题,我现在还没有好的思路,是否对应用程序写数据库的过程作一些改进?
大家可以一起探讨
LoadRunner案例分析(五)来源:
2008-06-16【聚杰网测试工具】LoadRunner案例分析(五)
最近被一个代理的问题搞的纠缠不清。
我这个人其实很多时候是不求甚解的那种。
自打上次跟Zee版主交流了以后,很受打击,惭愧的要命。
打算以后改改这个毛病。
凡是要探个究竟,正所谓惩前毖后,治病救人嘛。
问题是这样的,VUGen里面录制的脚本,回放的时候出错,错误信息是:
[NetAn.Warning(218:
9f0)]RequestConnection:
RemoteServer66.102.7.147:
80(Service=)Failedattempt#3.Unabletoconnecttoremoteserver:
rc=-1,le=0)
[NetAn.Error(218:
80(Service=)NOTPROXIED!
(REASON:
Unabletoconnecttoremoteserver:
重新安装了LoadRunner,结果同样。
从错误的表面看是代理的问题,但是本机上网不需要任何代理。
也没有设置任何的代理。
搜了一下,发现了问题的解决方法。
其实挺搞笑的。
居然是杀毒软件的问题。
下面是详细的讨论经过(英文的,大家将就看,看不懂就查查辞典)
==================================================
I‘veinstalledLRonanewmachineandI’mencounteringanerroratrecordtime.ThisistheerrorasrecordedagainstloadingtheGooglehomepage,alongwiththethreewarningsthatproceedit:
80(Service=)Failedattempt#1.Unabletoconnecttoremoteserver:
80(Service=)Failedattempt#2.Unabletoconnecttoremoteserver:
I‘vereinstalledLRtwicewiththesameresults.
OneotherthingI‘venoticedisthatunderRun-timeSettings,thebrowseremulationwassettoIE4andnoO/S.IinstalledLRonasecondmachineandthesettingisIE6/NT5.1.Therecorderalsoworkedasexpected.HoweverthisisanolderboxandI’drathernotuseit.
TheMercuryforumspointtopossiblespyware,butthenewmachineisclean.Ifanyonehasanyinformationitwouldbemostappreciated.1.WhatversionofLoadRunnerorPerformanceCenterareyouusing?
8.1.0.0
2.Whatistheprotocolyouarerecording?
HTTP/HTML
2.1IfHTML-areyouusingHTML-AdvancedwithURLsor,NO
2.2URLmodewithConcurrentgroups,orNO
2.3URLmodewithoutConcurrentgroups?
NO
3.WhichLoadRunner/PerformanceCenterfeatureorservicepacksareyouusing?
None
4.WhatkindofLoadRunnerlicensedoyouhave-Subscrīption,Perpetual,VirtualUserdays,orEvaluation?
(choosetheonethatfitsyourlicensemodel)Evaluation
4.1Ifsubscrīption,issubscrīptioncurrentorexpired?
5.Whatplatform(s)andOperatingSystems?
Includeversionandservicepacks.IE6.0SP2andXPSP2
6.IfyouhavefiledaservicerequestwithMercury,whathavetheytoldyouatthispointwithrespecttoyourissue?
I‘llbefilinganSRtoday.
Thanks,
Dan
Dan,sinceyouareusingtheevaluationversion,pleaseturnyourquestionstoyourfieldsalesengineerforHP|MercuryoryourVARforassistancepriortoyoursale.ItistheirjobtomakesureallengineeringissuesareaddressedpriortoyourpurchaseofLoadRunner,justasitisthesalesrepresentative‘sjobtomakesureallorganizationalandlogisticalissuesareaddressedpriortoyourpurchase.IfyourVARorvendorsalesengineerisunresponsivetoyourinquiries,thenseekanewrepresentativetoworkwith.However,ithasbeenmyexperiencethataslightthreattogowithanothervendorthatcanbettersupportyourenvironmenttendstolightthefireundermostsalestypes,particularlywithaproductlikeLoadRunnerthateasilycanexceed$100,000.00USDwhenoptionedout.
ThankyouforyourinterestinevaluatingLoadRunnerpriortoyourpurchase.
JamesPulley
====================================================
Thanksforthesuggestion.
Thecontrollerlicenseispurchasedandthisisthemachinedesignatedforactivation.I‘mdealingwithMercuryonthisissueaswell.
ThisisnotthefirsttimeI‘vehadinstallationissueswithaMercuryproductandI’msureitwon‘tbethelast.AsImentionedthisisanewlaptopsomaybethathassomethingtodowithit.ButI’veseenoneotherpostinthisforumdescribingmysameproblemandtherewasnoresolutionsoI‘mnotoptimisticthatthiswillberesolvedquickly.
IfMercury/HPprovidesasolutionI‘llpostithere.
======================================================
AMercuryengineerprovidedaworkaroundforthisrecordingerror.UnderTools->
RecordingOptions->
Network->
PortMapping,the