协议级测试的具体应用

协议测试主要包括以下几个方面:
(1)Html源代码解析
通过Protocol Client利用HTTPWebRequestObject从Server端获得相应页面源代码,对于每一个Http Web请求都会有一个cookie管理器。以下是一些实现的代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = method;
request.Accept = defaultAcceptHeader;
request.KeepAlive = true;
request.UserAgent = defaultUserAgent;
request.AllowAutoRedirect = false;
request.Headers.Add("Accept-Language", defaultAcceptLanguage);
request.CookieContainer = new CookieContainer();
.Proxy = null;
if(method.Equals("POST", StringComparison.InvariantCultureIgnoreCase))
{
request.ContentType = @"application/x-www-form-urlencoded";
}
当数据请求完毕后,我们需要从源代码数据中解析出Web控件。我们一般要对这些控件设置两个方法:verifyExists和RaisePostback。
在verifyExists多采用正则表达式去匹配物理属性和特定字串来唯一验证控件的存在与否。
RaisePostback对应于典型的ASP.NET中的doPostBack函数的Html控件,比如:
function __doPostBack(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
theform = document.Form1;
}
else {
theform = document.forms["Form1"];
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
我们将解析Html源代码中具体的string,比如
<SELECT language=javascript id=cmbLanguage onchange="__doPostBack('cmbLanguage','')" name=cmbLanguage> <OPTION value=2052 selected>Chinese (China)</OPTION><OPTION value=1033>English</OPTION> <OPTION value=1036>French</OPTION> <OPTION value=1041>Japanese</OPTION></SELECT>
构建以下的postback的参数值:
__EVENTTARGET = 2052,
__EVENTARGUMENT = “”,
__VIEWSTATE = dDwxOTkxNzQ3MzYzO3Q8O2w8aTwyPjtpPDM+Oz47bDx0PEA8ZW47Pjs7Pjt0PDtsPGk8MT47aTwzPjs+O2w8dDx0PDtwPGw8aTwwPjtpPDE+O2k8Mj47aTwzPjtpPDQ+O2k8NT47aTw2PjtpPDc+O2k8…..XZlbnQgRGV0YWlsczs+Pjs+Ozs+Oz4+Oz4+Oz4+Oz4+Oz7iSD2R0wFRR8N23W+zhPjmz0hB2Q==
以上是在实际项目中对Web进行测试时采用的一些方法和思路,希望能对大家的测试工作带来帮助。当然具体的实现还需要根据实际的项目进行调整和完善以得到最好的测试结果。