首先谈一下VuGen确定脚本运行成功的判断条件。在录制编写脚本后,通常就会进行回放,如果回放通过没有出现错误,就认为脚本是正确的。究竟VuGen怎么区分脚本是否回放正确呢?细心的朋友会发现,基本上所有脚本回放错误都是因为404错误,也就是页面无法找到,而只要页面返回了,VuGen都不会提示任何错误。例如,前面登录Phpwind论坛发帖的脚本,由于没有做关联操作而导致发帖失败,但是脚本还是执行成功了,在Test Results中显示为PASS状态。
VuGen判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的HTTP状态为200 OK,那么VuGen就认为脚本正确地运行了,并且是运行通过的。在绝大多数系统出错时会返回错误页面吗?不会,一般系统都会返回一个消息提示框,来提升用户感受。例如,"网站忙,请稍候"。其实这个时候网站已经无法正确响应用户请求了,但是VuGen脚本无法识别,会错误地认为网站还能正确访问,导致分析错误。所以这时需要一种检查点函数帮助验证请求发送出去后,服务器的返回是不是期望的内容,如果不是,那么就说明服务器无法提供正常的服务了。
检查点函数和关联函数比较相似,同样也是一个注册型函数web_reg_find()。该函数能够对服务器返回的内容进行检查。
例如,在Phpwind的注册操作中,在注册成功后,服务器会返回一个页面,这个页面包含"恭喜您完成注册"这样的字段。我们可以这样理解:只要服务器返回这段内容,那么就说明注册成功了,否则就是注册失败,脚本回放失败。先录制一个注册用户的脚本,如下所示:
Action() { web_submit_data("register.php_3", "Action=http://localhost:8000/phpwind85/register.php?", "Method=POST", "TargetFrame=", "RecContentType=text/html", "Referer=http://localhost:8000/phpwind85/register.php", "Snapshot=t17.inf", "Mode=HTML", ITEMDATA, "Name=forward", "Value=", ENDITEM, "Name=step", "Value=2", ENDITEM, "Name=_hexie", "Value=4291dd3b", ENDITEM, "Name=regname", "Value=cloud", ENDITEM, "Name=regpwd", "Value=cloud1000", ENDITEM, "Name=regpwdrepeat", "Value=cloud1000", ENDITEM, "Name=regemail", "Value=cloud.chen@gmail.com", ENDITEM, "Name=apartment", "Value=110101", ENDITEM, "Name=rgpermit", "Value=1", ENDITEM, LAST);//该代码精简了部分Ajax请求和前置页面 return 0; } |
回放这个脚本,查看Test Results中显示的结果是运行通过,但是如果认真看一下最后一步的截图,就会发现回放的脚本根本就没有执行成功,因为cloud用户已经存在了,回放不会注册任何新的用户,但是VuGen不会判断注册失败的错误,这里必须通过检查点函数来解决。
现在在web_submit_data()函数前添加检查点函数(注册型函数一定要写在请求前)。打开Insert菜单下的New step选项,找到web_reg_find()函数并进行添加,如图A.133所示。
图A.133 web_reg_find()函数设置界面
A.8.1 文本检查点
web_reg_find()文本检查点函数提供了一种对服务器返回内容进行查询的功能,与关联的不同之处在于检查点函数只能返回检索到内容的次数。
1.Search for specific Text
需要查询的标准文本,该功能和Word中的查找功能十分相似。在服务器返回的内容中查找特定的字符串,内容支持参数化,并且支持和关联相同的通配符和识别方式。
在这里输入需要查找的字符串即可,检查点函数将会找出服务器返回中是否存在需要查找的内容。
2.Search for Text by start and end of string
文本检查点函数也同样提供了根据左右边界进行查找的功能,选项参考关联函数。
3.Search in
设置在服务器返回的哪部分数据中进行查询。这里提供了All、Headers、Body三个选项,和关联函数相同,Headers是指HTTP返回的包头部分;而Body是指返回HTTP的正文部分,一般来说需要检查的内容都存放在Body中。
版权声明:51Testing软件测试网获作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。