zoukankan      html  css  js  c++  java
  • 验证loadrunner对Ajax内容的校验

    前一阵和开发的同事一起測试某个系统的性能。此系统是发送Ajax请求到后台,再调用第三方的某项服务。

    第三方服务的性能由不得我们控制。因此开发者做了一下改进。超时则直接返回。

    于是在loadrunner这边,结果就好看的多了。当时我并没在意,后来一琢磨。这岂不是说loadrunner不检查Ajax内容就通过了?为了验证这个论断,做了个简单的演示样例。


    首先是写个前端的html,发送Ajax到后台。再写个servlet处理请求,返回不同的内容。

    然后用loadrunner录制脚本并回放,以验证对Ajax内容的检查状况。
    新建一个web项目,加入一个html文件和一个servlet

    html内容例如以下:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>用户注冊</title>
    </head>
    <body>
    <script language="JavaScript"> 
    	var flag;
    	function createXHR(){
    		if (window.XMLHttpRequest){
    			return new XMLHttpRequest();
    		}else{
    			return new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}
    	
    	function checkUser(username){
    		if(!username==""){
    			var xhr=createXHR();	
    			xhr.onreadystatechange = function(){
    				if (xhr.readyState == 4){
    					if (xhr.status == 200){
    						var text = 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 = "正在验证……";
    		}else flag=false;
    	}
    </script>
    	
    	<form action="CheckName" method="post" onsubmit="return flag">
    		用户名:<input type="text" name="username" onblur="checkUser(this.value)"><span id="msg"></span><br>
    		密  码:<input type="password" name="password"><br>
    		<input type="submit" value="注冊">
    	</form>
    </body>
    </html>
    这是一个简单的模拟注冊的页面,ajax发送输入的用户名到后台。

    servlet处理代码例如以下:

    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		try {
    			Thread.sleep(500);
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		String username = request.getParameter("username");
    		PrintWriter out=response.getWriter();
    		if(username.equals("zhangsan")){
    			out.print("Existed");
    		}else{
    			out.print("Registered Successfully");
    		}
    		
    	}

    当输入的用户是zhangsan时,ajax返回username已存在的标志。除此之外返回能够注冊的提示。(为了模拟网络延时,停顿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", 
    		"Resource=0", 
    		"Referer=http://192.168.1.102:8080/aaa/", 
    		"Snapshot=t2.inf", 
    		"Mode=HTML", 
    		"EncType=", 
    		LAST);
    
    	//web_reg_find("Text=Registered Successfully",LAST);
    
    	web_custom_request("CheckName_2", 
    		"URL=http://192.168.1.102:8080/aaa/CheckName?username=lisi", 
    		"Method=POST", 
    		"Resource=0", 
    		"Referer=http://192.168.1.102:8080/aaa/", 
    		"Snapshot=t3.inf", 
    		"Mode=HTML", 
    		"EncType=", 
    		LAST);
    
    	web_submit_data("CheckName_3", 
    		"Action=http://192.168.1.102:8080/aaa/CheckName", 
    		"Method=POST", 
    		"Referer=http://192.168.1.102:8080/aaa/", 
    		"Snapshot=t4.inf", 
    		"Mode=HTML", 
    		ITEMDATA, 
    		"Name=username", "Value=lisi", ENDITEM, 
    		"Name=password", "Value=123456", ENDITEM, 
    		LAST);
    
    	return 0;
    }
    凝视中的两行是手工加的,加上后就能够对Ajax返回的内容进行检測了。

  • 相关阅读:
    Ubuntu 出现 apt-get问题的解决方法
    Conversion to Dalvik format failed: Unable to execute dex: null
    java中判断是否为中文
    解决:Unable to connect to repository https://dl-ssl.google.com/android/eclipse/site.xml
    Android 获取本机WIFI及3G网络IP
    xp重装系统后恢复Linux启动
    Android中空格及换行
    ubuntu12.10设置thunderbird开机自启动
    web安全及防护
    回归基础: JavaScript 变量提升
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6800072.html
Copyright © 2011-2022 走看看