• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

再谈UI自动化测试

发布: 2009-5-31 11:21 | 作者: 不详 | 来源: 测试时代采编 | 查看: 69次 | 进入软件测试论坛讨论

领测软件测试网   最近还是发现有一些文章,个人对于自动化测试报有很大的怀疑态度,本人也对相关的文章给与了驳斥。我个人和公司对自动化测试都是报有很积极的态度的。这里我想再次的写一篇文章来阐述到底UI自动化测试可以做什么,作为一个优秀的UI自动化测试工程师应该具备有什么方面的技能,以及本人对UI自动化的一些经验和体会。

        首先还是要强调一点,API和command line程序都是非常适合用自动化来进行测试的。我想这个观点,即使那些反对自动化测试的人也不应该否认吧?至少我觉得他们应该有这个意识。因此,对于他们反对自动化就集中在了UI自动化方面,我这里也完全站在UI自动化测试的角度来写这篇文章,后边就不再强调了。

        再次套用朋友的一句话,"自动化测试听起来很神秘,学起来很简单,用起来很麻烦"。我想有过自动化测试经验的人,可能大多都有这个体会吧?前边的过程我就不提了,以后主要探讨为什么用起来会麻烦和怎样简单化自动化测试。总而言之,想搞好自动化测试,还是需要测试人员比较高的技术水平,尤其是编程能力和解决问题,分析问题的能力。

        首先,我要谈谈自动化测试工具和编程语言的关系。作为一个优秀的自动化测试人员,他的最基本的能力就是编程水平了。所谓编程就是至少要精通一门高级语言,比如Java,C#等等,脚本语言不计算在内。请记住,不是熟悉,是精通。高级编程语言给我们提供很强的能力来实现一些东西。你所精通的语言能力越强,你在自动化测试可以做的事情就越多,越好。简单来讲,论程序的能力来排序是这样的,测试工具-〉脚本语言-〉高级语言(Java,C#)-〉C/C++-〉C++/CLI。根据这个语言能力的排序,结合你自己的语言能力,你可以想想你到底具备多少自动化测试能力。我所强调的是,如果你想优秀,你至少要精通一门高级语言,这是必不可少的。如果很多人还只是用测试工具,脚本语言工作而抱怨自动化,我要强烈的建议他们好好去学习一下编程能力先了。他们的问题在于,由于编程能力的不足,使得自动化测试的很多问题没有能力和办法去解决。再谈一下自动化测试工具,无论哪种测试工具,无论他们设计的多么强大,从编程语言来讲,他们最多能够达到脚本语言的能力。也就是说,如果你完全用测试工具来进行自动化的开发,很多问题你还是无法解决的。因此,我推荐的自动化开发方法是高级语言结合测试工具。我的自动化测试逻辑是,用测试工具只是完成UI操作,其他部分完全用高级语言来实现。我们不能否认高级语言所具有的能力,他们创造出了世界上这么多丰富多彩,这么多优秀的软件,难道开发测试程序会有问题吗?因此,我们的焦点就落在了测试工具的UI操作部分。

        第二,关于测试工具。开发语言重要,选择一个合适的测试工具也同样的重要。一个灵活,强大的测试工具可以使你的自动化开发起到事半功倍的作用。结合不同的项目,不同的语言,你可能会有不同的选择。不过,这里我想解释的是,具有了高级语言的开发能力之后,我们期望测试工具来为我们做什么。我前边也说过了,我们所要求自动化测试工具所做的就是UI的操作。这里边比较重要的是三个方面,一是找到UI对象,二是操作UI对象,三是同步。如果一个工具能够让你找到所有的UI对象,并且能成功操作这些对象,就完全满足我们的自动化开发需要了。如果,工具能够提供同步的功能,就使你能够如虎添翼,不然的话要自己去实现,会麻烦不少。到了这里,你已经具有了所有UI的操作能力(测试工具提供),并且具有了高级语言的实现能力(高级语言提供),你才有了基本的能力去做一个优秀的自动化开发。没有这些能力的人,我严重怀疑能否做出好的自动化测试。

        第三,怎样自动化。我的自动化的原则是,尽量少的进行UI的操作,除非是你本身要测试的UI。道理很简单,UI操作由于可能受各种问题的干扰,很容易失败。通过非UI的方法去实现是更加可靠和快速的。这也是我为什么要强调对于高级语言的精通,具有高级语言的开发能力,你就能过把大量的任务从UI操作转向了程序操作,使得你的自动化程序的可靠性大大的增强。这里还需要强调的一点能力就是系统应用的能力,比如Windows使用的能力。Windows的很多的操作是有相关的命令来实现的,不一定非得通过大家熟悉的UI。记住这个原则:除非是你要测试的UI,否则尽可能的通过高级语言来实现。我想大家对于高级语言来实现的工作应该还是有信心吧?因此,下边我要谈的内容就完全的与你要测试的界面相关了。

        第四,怎样进行UI测试。首先要尽量的减少UI操作,除非是你必须要测试的操作。比如简洁快速的启动你要测试的界面,用快捷键代替鼠标操作等等。总而言之,理想状态下我们进行的每一次UI操作,都是我们需要测试的,其他操作尽量避免,不能避免用最可靠的方式去实现。那么我们现在的焦点就变成了,怎样来处理我们真正要测试的UI了。UI测试的开发基本上就三个问题:发现对象,操作对象和同步。简单解释一下同步,同步就是有一个机制告诉你何时可以执行一个UI操作。很多人是用sleep的方式,等待一定的时间去执行下一个操作,这是我非常反对的。我的原则是,尽量少用sleep,就算要用每次最多不要超过一秒。滥用sleep会严重影响测试程序的性能(具体的UI自动化过程,大家可以参考我的其他文章)。

       

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 自动化

21/212>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网