GUI自动化测试的反思

2010-02-07  欧阳辰 

参加过不同类型的GUI测试项目,其中包括Java SWING, Web Page, Flash, WinForm, Excel Addin等。总结起来,有以下几点值得反思的。

1)通常GUI自动化测试的ROI是非常低的。这些GUI项目大多都经常改变界面,甚至每几个月都需要更改界面,这使得自动化测试用例管理和维护变得非常复杂。GUI自动化最大的弊病在于:它发现Bug的可能性很小,在这些的GUI项目中,通过自动化用例发现的Bug屈指可数,99% 失败的用例都是由于环境或则测试用例本身的原因导致的,而不是发现任何产品Bug。当然,不同项目有不同的特性,Brain Marick有一篇全面关于评估是否自动化测试的文章,可以帮助作出决定。

Alan Page是微软的第一个测试架构师(Test Architect,2001),现在负责微软测试的EE工作。他最著名一句话就是“95%的GUI自动化测试工作都是浪费时间”,他本来写的99%,但是为了表示他并非反对GUI自动化测试,他把这个数字改成了95%。

2)GUI自动化测试可以提高测试人员的士气。有些测试人员不愿意单单做手工测试,他们需要一些挑战,自动化测试是最好的任务。对于自动化测试,测试人员总是可以根据自己的能力,完成自动测试用例的开发和部署。提高测试人员的士气,比这些自动化测试本身更加有意义。所以,在一定程度上引入自动化测试,是对项目组有好处的。

3) GUI自动化测试无法代替手动测试,无法模拟用户的行为。对于GUI测试,我相信手工测试仍然是最重要的测试方法,测试人员在测试GUI软件过程中,有不同操作方法和不同的次序,所有这些变化是一个巨大的组合,无法通过自动化测试完成,很多情况下,也没有必要通过自动化完成。测试人员在手工操作软件过程中,每一步骤都通过思考来验证当前状态的正确性,而这些复杂的思考无法简单快速的转成自动化用例的验证部分。

4) GUI自动化测试的进度往往是无法按时完成的。很多测试人员在制定GUI自动化测试的初期,往往过于乐观,希望通过自动化覆盖尽可能多的测试用例。但是,在项目执行的后期,他们发现需要忙于手工测试,另外产品也不稳定,无法顺利完成既定的自动化测试用例,总有很多客观的理由无法完成最初的计划。通常这个时候,他们会改变计划,减少自动化测试用例的数量,而将自动化测试用例仅仅用于基本测试(BVT,Build Verificaition Test)。这些计划的改变,某种意义来说,也是测试资源的浪费。

进行GUI自动化测试并非难事,但是如何利用自动化测试来进行高效的GUI测试工作是需要丰富的经验。

文章出处地址:http://blogs.msdn.com/cheno

625°/6126 人阅读/13 条评论 发表评论

王恩建  2010-02-08

“95%的GUI自动化测试工作都是浪费时间”,哈哈,很赞同。不过有些老师们看到可能不高兴了。自动化测试并没有错,只是在错误的环境错误的使用了自动化测试。曹一富曹兄在另外一个帖子说“自动化测试的成本比手工测试的成本还高”,也不无道理。


欧阳辰  2010-02-08

这些经验都是来自于测试实践当中,我相信它的真实性。GUI的自动化测试,对于初学者来说,都是很乐意去做的,因为它有些编程工作和有些挑战性,但是随着测试经验的增多,人们慢慢会看清楚GUI自动化测试的真正作用和局限性,会更加谨慎的使用自动化测试。


金鑫  2010-02-08

引用欧兄的“测试人员在测试GUI软件过程中,有不同操作方法和不同的次序,所有这些变化是一个巨大的组合,无法通过自动化测试完成”,这点深有体会,最近我对部门内做了个关于用例覆盖率算法的专题,很多日常数据显示,即便很优良的算法(例如Pairwise算法、正交试验等)也难以覆盖诸多基于用户交互层面可能出现的问题


欧阳辰  2010-02-08

Pairwise算法可以一定程度上帮助减少测试用例数量,但是最重要的测试用例,大部分还是用人脑创建的。 另外,推荐一个Pairwise算法 PICT.
http://msdn.microsoft.com/en-us/testing/bb980925.aspx


孙明星  2010-02-08

说的实在是太有道理了~~~!


欧阳辰  2010-02-08

谢谢大家捧场,其实很多人都有这个想法,只是不敢说出来:)


吴一满  2010-02-09

”95%的GUI自动化测试工作都是浪费时间“  不完全对 ,Web page 的自动化测试 还是很有效的。


欧阳辰  2010-02-09

如果Web Page 不增加新功能,结构很稳定,自动化测试有一定意义。但是,通常来说Web Page的界面变化很频繁,而且自动化测试很少帮助发现Bug。我相信,不同项目和团队都有自己的最好的实践。这个话只是一家之言。


吴一满  2010-02-11

web page 自动化比起client 自动化 有很大的优势。 首先是web page 的UI 都是可以识别的, 但是Client 自绘控件太多 ,从外部无法识别,TA很难。
自动化测试在回归测试有很大的用处, 它的效益还和自动化用的框架和写脚本的人的水平有很大关系。


王爱莉  2010-02-23

说的太有道理了,但是我们公司让我们学习QTP,还让2,3个月出成果,而一个项目周期只有3--7天,最长15天,还非要使用QTP,您说合适吗?


谢明志  2010-04-13

深有同感,不过呢,向来技术就是要突破传统和权威的封锁,做到你我今天认为不可能而为之的事情。之所以我们觉得GUI自动化的收获还不及我们的投入,就在于还没有好的技术,待各位知其不可为而为之之勇士能推动这个硬石头向前滚动,即使一步也好,毕竟我们希望GUI测试的道路有条光明之路可走。大家看呢。


郑尔康  2010-05-08

王爱莉: 说的太有道理了,但是我们公司让我们学习QTP,还让2,3个月出成果,而一个项目周期只有3--7天,最长15天,还非要使用QTP,您说合适吗?
首先,如果你的项目是基于GUI的,我可以很肯定的说,不适合做自动化,最为关键的原因是你的项目周期太短了,请做自动化之前,进行评估。


郑尔康  2010-05-08

欧阳辰,好文章,我很同意你的很多观点,这也是GUI自动化测试目前存在的问题,对于GUI的自动化测试,个人还是比较建议用在regression testing中,对老功能进行自动化测试,效果还是不错的。另外对于自动化测试用例的执行效率,其实你可以采用一些技术手段来提高,比如采用统一管理和分布式的执行,可能6w个自动化用例可以保证在1周内全部执行完。当然所有的这些,都要看团队的自动化水平了。


登录 后发表评论