web功能测试包含哪些测试,web功能测试用例
一只熊在天上飞知不如行,乐不如好第4页
Web功能测试由raphaelzhang于2012年3月15日发布。
在我们的日常工作中,经常需要对网站的功能性进行测试,以检验网站的某些功能是否正常。网页是否用gzip压缩,网页代码是否正确,网页加载时间是否正常,网页缓存时间是否正常等简单测试。比较复杂的包括网页截图,网页加载时是否弹出警告对话框,是否有页面错位或javascript错误,网页加载的资源是304还是200的响应等等。比较麻烦的是交互调试,调试页面上的哪些javascript/CSS代码导致了错误等等。
简单Web测试对于一个简单的Web测试,比如只需要查看HTTP响应的头和内容,只需要一个爬虫抓取网页,同时分析头和内容。可以在Linux下使用wget和curl(两者都有对应的Windows版本),如下:
Shell12345678#保存blog.raphaelzhang.com的页面到rz.html。
科尔http://blog.raphaelzhang.com rz.html
#只检查blog.raphaelzhang.com的HTTP头信息。
科尔http://blog.raphaelzhang.com-我
#在浏览blog.raphaelzhang.com时,随身携带用户代理、推荐人和自定义标题。
科尔http://blog.raphaelzhang.com——一个用户代理人——ehttp://abc.com——H“拉斐尔:是的”
使用wget和curl,您可以下载网页,查看HTTP头信息,并与awk和grep等工具一起使用。一般就够了。但是说到HTML的DOM解析,我就吃不消了。这时候你可以用自己喜欢的语言开发自己的小工具,比如Python。如果有,可以先看看相关的注意事项。但是,也可以使用现成的工具,比如httpie。这是一个用Python写的类似curl的小软件,但是它打印出来的信息可读性更好,语法也突出了。如果你喜欢用WSH javascript写,你需要使用XmlHttpRequest组件,它和普通的ajax代码一样简单。
如果你不喜欢命令行程序,更喜欢交互式图形界面,每个浏览器的工具菜单下也有相应的开发者调试工具。第三方工具还包括Fiddler、IETester、Firebug和YSlow等。
其中最强大的是Fiddler,可以代理调试所有浏览器的HTTP行为,包括查看时间流量图,本地修改javascript/CSS代码进行交互调试等。并且IETester可以同时测试IE5.5 ~ IE10的所有IE版本,保证网页在所有版本的IE下都能正常显示。Firebug是Firefox浏览器的插件,有很多调试功能,比如查看DOM树、查看时间流图、调试javascript等。YSlow是雅虎制作的浏览器插件,支持火狐、Chrome等浏览器。它可以检查你的网页,给你的网页打分,并提出改进网页性能的建议。这些建议包括gzip网页,把javascript放在最后,等等。
PhantomJS测试虽然一些简单的测试可以用爬虫完成,但是如果涉及到比较复杂的javascript代码和CSS渲染,就必须使用真正的浏览器。毕竟自己解析DOM相对容易,但是如果要做javascript虚拟机和渲染,工作量就太大了。
PhantomJS是一个无头浏览器,可以在后台运行。通过javascript代码控件,可以用它进行网站测试(包括自动登录、表单提交等。),页面截屏和流量监控。PhantomJS以Webkit为内核,可以运行网页中的javascript代码,解析CSS/HTML来渲染页面,所以相当强大。从PhantomJS的examples目录中有很多例子可以学习,比如生成HAR流量图的netsniff.js等。下面是一个生成网站截图的例子:
Java Script语言
123456789101112var page=新网页();page . open(encode uri( http://blog . Raphael Zhang . com ),function (status) {if (status!==success) {console.log(无法加载页面!);} else { window . settimeout(function(){ page . render( snapshot . png );幻影. exit();}, 200);}});
顺便说一下,如果你需要将HAR交通图自动嵌入到你的网站中,网上也有开源程序。下面是直接从PhantomJS做的流量统计得到的HAR图。
然而,幻想曲虽然好,却有几个问题:
不支持对IE浏览器的特定功能进行测试。毕竟PhantomJS是基于WebKit的,所以IE特有的bug是检测不出来的。不支持对弹出窗口的检测,即检测不到网页对window.open的调用,无法有效拦截新窗口的创建和弹出。它不能检测网页上的javascript错误。要解决以上问题,你需要自己做一个基于IE(Trident)的无UI浏览器。网上可以参考的代码是CodeProject的这篇文章和SourceForge上的开源项目IECapt。
WSH javascript测试由于我们网站90%以上的用户都使用IE,而且有些代码是针对IE的,所以在测试时需要自动测试IE。
对于Windows下的自动化测试,我自然需要使用我最熟悉的WSH javascript。我可以用WScript对象和很多ActiveX组件来完成很多功能,语法和普通javascript一样。我需要熟悉的是各个组件的接口。
用javascript测试IE的流程是:
通过WScript.createObject创建一个IE对象,并绑定其事件回调(Event Callback/Sink)调用IE对象的navigate2方法,打开指定网页,并将其Visible属性设置为true。在IE对象的OnDocumentComplete事件中,检查网页是否已经完全加载(否则无法访问文档对象)。通过文档对象访问每个HTML对象及其计算的CSS属性,并模拟用户输入进行功能测试。最后调用IE对象的quit方法关闭IE。如果是为了保险,可以找到所有的IE窗口。向其发送Alt F4键,关机,将获得的测试信息通过短信(如定制的HTTP接口)或邮件(通过CDO)发送给相应的人员,这是一个通用的流程。消息对象)。在具体的开发过程中,还会出现一些其他的问题:
如何在javascript中创建和绑定事件回调如何在测试中绕过IE的阻止自动弹出窗口的设置,让用户进行模拟点击打开新窗口的测试(否则弹出窗口会被阻止)。先说第一个问题。实际上,创建ActiveX组件时,WScript.createObject方法的第一个参数是组件名,第二个参数是事件回调函数的前缀。例如,对于IE对象,其组件名为InternetExplorer。应用程序,相应的事件有DocumentComplete、OnQuit等。(参见DWebBrowserEvents2)。假设我想接收DocumentComplete事件的通知,我可以编写如下代码:
Java Script语言
1234567891011121314151617 var should quit=false;function _ eventsDocumentComplete(obj,url) {WScript。Echo(网址);} function _ eventson quit(){ should quit=true;} var browser=wscript . createobject( internet explorer。应用程序, _ events );browser . navigate 2( http://blog . Raphael Zhang . com );browser.visible=true而(!should quit){ wscript . sleep(100);}
在上面的代码中,需要添加一个while循环,这样就可以在不退出程序的情况下接收事件响应。
所有HTML文档加载完毕后,可以访问浏览器的document对象获取DOM树,进行一系列操作和测试,比如通过document . getelementbyid( BTN summit )模拟表单提交。单击()。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。