前一阵和开发的同事一起测试某个系统的性能。此系统是发送Ajax请求到后台,再调用第三方的某项服务。第三方服务的性能由不得我们控制,因此开发人员做了一下改进,超时则直接返回。于是在loadrunner这边,结果就好看的多了。当时我并没在意,后来一琢磨,这岂不是说loadrunner不检查Ajax内容就通过了?为了验证这个论断,做了个简单的示例。
首先是写个前端的html,发送Ajax到后台,再写个servlet处理请求,返回不同的内容。然后用loadrunner录制脚本并回放,以验证对Ajax内容的检查状况。
新建一个web项目,添加一个html文件和一个servlet
html内容如下:
<html> <head> <Metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>用户注册</title> </head> <body> <scriptlanguage="JavaScript"> varflag; functioncreateXHR(){ if(window.XMLHttpRequest){ returnnewXMLHttpRequest(); }else{ returnnewActiveXObject("Microsoft.XMLHTTP"); } } functioncheckUser(username){ if(!username==""){ varxhr=createXHR(); xhr.onreadystatechange=function(){ if(xhr.readyState==4){ if(xhr.status==200){ vartext=xhr.responseText;//接收返回内容 if(text=="Existed"){ flag=false; document.getElementById("msg").innerHTML="用户名重复,无法注册!"; }else{ flag=true; document.getElementById("msg").innerHTML="恭喜!此用户名可以注册。"; } } } }; //发送用户名到servlet xhr.open("POST","CheckName?username="+username,true); xhr.send(null); document.getElementById("msg").innerHTML="正在验证……"; }elseflag=false; } </script> <formaction="CheckName"method="post"onsubmit="returnflag"> 用户名:<inputtype="text"name="username"onblur="checkUser(this.value)"><spanid="msg"></span><br> 密 码:<inputtype="password"name="password"><br> <inputtype="submit"value="注册"> </form> </body> </html>
这是一个简单的模拟注册的页面,ajax发送输入的用户名到后台。
servlet处理代码如下:
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsservletexception,IOException{ //TodoAuto-generatedmethodstub try{ Thread.sleep(500); }catch(InterruptedExceptione){ //TodoAuto-generatedcatchblock e.printstacktrace(); } Stringusername=request.getParameter("username"); PrintWriterout=response.getWriter(); if(username.equals("zhangsan")){ out.print("Existed"); }else{ out.print("RegisteredSuccessfully"); } }
当输入的用户是zhangsan时,ajax返回用户名已存在的标志;除此之外返回可以注册的提示。(为了模拟网络延时,停顿500毫秒)
loadrunner录制的脚本如下:
Action() { web_reg_find("Text=用户注册",LAST); web_url("aaa","URL=http://192.168.1.102:8080/aaa/","Resource=0","RecContentType=text/html","Referer=","Snapshot=t1.inf","Mode=HTML",LAST); //web_reg_find("Text=Existed",LAST); web_custom_request("CheckName","URL=http://192.168.1.102:8080/aaa/CheckName?username=zhangsan","Method=POST","Referer=http://192.168.1.102:8080/aaa/","Snapshot=t2.inf","EncType=",LAST); //web_reg_find("Text=RegisteredSuccessfully",LAST); web_custom_request("CheckName_2","URL=http://192.168.1.102:8080/aaa/CheckName?username=lisi","Snapshot=t3.inf",LAST); web_submit_data("CheckName_3","Action=http://192.168.1.102:8080/aaa/CheckName","Snapshot=t4.inf",ITEMDATA,"Name=username","Value=lisi",ENDITEM,"Name=password","Value=123456",LAST); return0; }
注释中的两行是手工加的,加上后就可以对Ajax返回的内容进行检测了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。