测试技术Web功能性测试
白羽 2019-03-07 来源 :网络 阅读 815 评论 0

摘要:本文将带你了解测试技术Web功能性测试,希望对大家学测试技术有所帮助。

    本文将带你了解测试技术Web功能性测试,希望对大家学测试技术有所帮助。


测试技术Web功能性测试


在平时工作中时常需要对网站进行自动化测试,虽然一些简单的测试可以通过爬虫的方式来做,但是如果涉及到比较复杂的js和CSS渲染的话,就必须使用真正的浏览器了。毕竟自己实现HTML DOM解析还相对容易,但是如果做上述工作就太麻烦了。
     由于我们网站90%以上的用户用的都是IE,而有一些代码也是特定于IE的,因此在测试的时候,必须要对IE进行自动化测试。当然,大部分代码对各个浏览器都是兼容的,因此也可以采用其他更自动化,兼容性更广的方法来进行Web测试。
     在Windows下进行自动化测试,个人觉得最合适的方法就是WSH+javascript了,可以使用WScript对象和众多ActiveX组件来完成诸多功能,而且语法和普通javascript都一样,主要需要熟悉的就是各个组件的接口。
     使用js进行IE测试的流程是:
     1.通过WScript.createObject创建一个IE对象,并绑定它的事件回调(Event Callback/Sink)
     2.调用IE对象的navigate2方法,打开指定的网页,并将其Visible属性设置为true
     3.在IE对象的OnDocumentComplete事件中,检查网页是否已经完全载入(不然访问document对象会有问题)
     4.通过document对象访问各个HTML对象以及其计算出来的CSS属性,并模拟用户输入进行功能性测试
     5.在最后调用IE对象的quit方法关闭IE,如果为了保险,可以找到所有的IE窗口,向其发送Alt+F4按键将其关闭
     6.将得到的测试信息通过SMS(例如定制的HTTP接口)或者电子邮件(通过CDO.Message对象)发送到对应人员
     上面是大致的流程,具体在设计和编码的时候,会遇到一些其他的问题:
     1.JS中如何创建与绑定事件回调
     2.如何在测试中绕过IE的阻止自动弹窗的设置,使得可以进行用户模拟点击打开新窗口的测试(不然弹窗会被阻止)
     其实在创建一个ActiveX组件的时候,WScript.createObject方法第一个参数是组件名,第二个参数就是事件回调函数的前缀了。例如对于IE对象来说,它的组件名是InternetExplorer.Application,对应的事件有DocumentComplete、OnQuit等(参见DWebBrowserEvents2),假设我希望收到DocumentComplete事件通知,可以这样写代码:
     var shouldQuit = false;
     function  _eventsDocumentComplete(obj, url) {
     WScript.Echo(url);
     }
     function  _eventsOnQuit() {
     shouldQuit =  true;
     }
     var browser =  WScript.createObject(""InternetExplorer.Application"",  ""_events"");
     browser.navigate2(""//www.shendu.com"");
     browser.visible =  true;
     while(!shouldQuit)
     {
     WScript.sleep(100);
     }
   
     在上面的代码中需要加入一个while循环,这样才能不退出程序,继而收到事件响应。
     在HTML文档都已经载入完毕以后,就可以访问browser的document对象获取DOM树,进行一系列操作和测试了,例如通过document.getElementById('btnSumbit').click()模拟form提交之类的。
     另外,在IE中,如果通过代码模拟点击想产生一个新窗口,往往会被IE自动弹窗阻拦功能挡住,就是平时常见的顶部提示阻止了一个弹窗的细黄条。在测试过程中,我们往往需要模拟用户输入产生自动弹窗,这时候,需要在测试的时候去掉这个功能,然后在测试结束的时候再打开这个设置。要做到这一点,只需要修改注册表的HKEY_CURRENT_USER下的\Software\Microsoft\Internet Explorer\New Windows\Allow项,添加上对应的域名即可。在JS里可以这样写:
     //对host这个域名允许自动弹窗
     var shell =  WScript.CreateObject(""WScript.Shell"");
     var regKey =  ""HKCU\\Software\\Microsoft\\Internet Explorer\\New  Windows\\Allow\\"" + host;
     shell.RegWrite(regKey,  0, ""REG_BINARY"");
     //测试代码
     //...
     //恢复自动弹窗阻止
     shell.RegDelete(regKey);
    
   
     另外,进行IE测试需要打开Windows桌面才行,因此它有一个比较郁闷的要求,就是不能是未登录状态,我们为了解决这个问题,是开了一个Windows虚拟机,在虚拟机里面专门设置了计划任务运行相关这个测试js的。
     因为IE测试限制很多,因此我们平时也可以采用phantomjs进行测试。phantomjs是一个内嵌了Webkit的无界面浏览器(headless browser)。通过phantomjs定义的一系列接口,我们可以实现很多Web自动化的测试,例如打开网页,监控每个访问,并生成HAR格式的图形,给网页生成截图,打开新浪微博模拟登陆获取微博信息等。在phantomjs的examples目录中有很多例子可以学习,例如生成HAR流量图的netsniff.js等。下面是一个生成网站截图的例子:
     var page = new WebPage();
     page.open(encodeURI(""//www.shendu.com""),  function (status) {
     if (status !==  'success') {
     console.log('Unable  to load page!');
     } else {
     window.setTimeout(function  () {
     page.render('snapshot.png');
     phantom.exit();
     }, 200);
     }
     });
   
   
     另外,如果需要将查看HAR流量图自动化嵌入自己网站的,网上也有开源的程序可以使用。
     上面的两种测试方法都是通过javascript做的,其实,平时在windows下熊猫写了不少javascript的实用程序给自己和朋友们用,尤其是那些不懂程序的朋友。例如生成费用分摊Excel表的功能,把图片转化为文字的功能,分析一些格式文件生成其他文件的功能等。
     因为Windows环境上缺省就可以通过WSH运行javascript,而IE/Word/Excel/PowerPoint/WMI等都可以通过js来操作,因此对windows来说,WSH+js是一个非常实用的工具。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试技术频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程