您的位置:首页 > Web前端 > JavaScript

软件测试自动化之路(7)----在Web GUI Automation Test中使用JavaScript应注意的问题

2010-08-13 23:40 736 查看
在Web GUI Automation Testing中操作页面元素是可以通过JavaScript来进行的,有的开源测试工具就是这么做的如Selenium。另外一种方法是通过给浏览器注入测试用的JavaScript来完成你的测试。本文在此不是讨论如何去来完成这些工作的,而是试图分析,应该把这些以测试为目的JavaScript用在什么地方。如果滥用就会矫枉过正,达不自动化测试目的。

对于Web GUI Automation Testing,注入的Javascript测试脚本最好只用来操作可见的页面元素。因为考虑到页面有可能含用操作逻辑,对Button/CheckBox/RadioBox应该使用onclick();HyperLink的click()事件往往不会引发相应的target window的装载,应该要特别处理;对Text文本框不能仅设置Value了事,而应如真实用户所做的输入那样。诸如此类的问题,应该遵从真实用户的所做的输入点击那样。

对于不可见的页面元素,应该认为它们对你的程序来说是只读性的,只可读取它的值,而不可越俎代庖,去改变它们的值,因为对这些不可见元素的值都有AUT(application under test)本身的逻辑所决定和改变,否则这种测试就可能变一种极富侵入式的测试。

对于页面中的AUT本身的JavaScript函数,也不应该去用你的测试JavaScript去调用它们。除非你非常清楚这些AUT的JS函数所需的上下文,并为他们准备好了这一切。即使这样我还是不推荐你这样做,想想看,有什么比把AUT的代码逻辑带到Automation Testing代码中更混乱的事情呢?最后你可能会发现你的Automation Testing Code把AUT的逻辑又给实现了一次,但它确实只应该做测试的事情。可是你看,现在它都做了些什么?:-)

最后还要注意问题是,如果在你的GUI automation Testing中混合了注入的JavaScript调用和通用的GUI测试脚本(如:QTP脚本),那么它们之间的执行是异步的,而不是线性执行的。如下面的pseudocode:

1) Call JavaScriptFun('select combox and input something') // Call 注入的JavaScriptFun here!

2) ClickButton Name='Ok' //QTP script here!

对于1),2)两句因为执行的空间是不一样的,其中第1句是在你的web browser中执行了,而第2句在QTP中执行的,它们并非按照代码的书写顺序那样把所包含的动作线性的执行,所以它们是异步执行的。换句话说,当第2)句执行的时候,可能javascript并未完成所定义的操作。此时我们需要额外考虑执行同步问题。而如果都是QTP script就不会存在这种问题。如:

1) SelectCombox Name='QTP' // QTP script here!

2) ClickButton Name='Ok' //definitely execute 2) after 1) had been completed
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐