前言
去年春天,我应本地一家软件公司邀请,参加该公司软件测试工作改进的座谈会。这次座谈会其实是一次诊断会或咨询会,本地不少知名的专家都去了,包括几所大学有名望的教授。会议的宗旨是帮助该公司改进测试工作,进而提高软件产品的质量,而其中一个议题就是讨论如何开发自动化测试,特别是针对它们的产品,选择合适的软件测试工具。在座谈会之前,该公司已经有了初步计划,欲投资200万元购买惠普公司Mercury系列测试工具,也就是市场上比较流行的LoadRunner、Quick Test Professional(QTP)等。该公司效益比较好,年产值在亿元以上,几百万的投资不是很困难的事。不过,在座谈会上,鉴于该公司从来还没有开展过自动化测试工作,而且公司主要以面向终端用户的软件项目开发为主,虽然将慢慢形成软件产品,但用户的需求不够稳定。我建议,刚开始时,在自动化测试工具上不宜进行过大投资,如果自动化测试实施效果不好,反而比较被动,所以,可以先采用开源自动化测试工具(如Selenium、JMeter),进行为期半年的实验。如果这些工具能满足企业的需求,就不须要购买商业化工具;即使不能满足需求,在团队对自动化测试有了更深的理解而且能力得到了提升之后,再购买商业工具也不迟。
我知道,我的建议被采纳的可能性比较小,但从那时起,我就有写一本自动化测试的书的计划,介绍开源(open source)测试工具,让大家全面了解这些成熟的开源工具,将它们应用于实际测试项目之中,为企业节省大量开支。本书以循序渐进的方式讲解如何开展自动化测试。由于没有自动化工具的大投入所带来的压力,测试人员借助本书和开源工具,能够轻轻松松地开展自动化测试工作。相对于商业工具,开源测试工具能使我们得到更好的锻炼,使企业的特定需求得到更好的满足,为什么呢?因为开源测试工具几乎不提供培训,文档也不全,须要自己进行更多的摸索。经过不断摸索和实践,自己的能力自然提升较快;更重要的是,开源测试工具提供了源代码,如果某些地方不能满足企业的要求,我们可以找到相应的地方对代码进行修改,扩充其功能,使之满足新的需求。
自动化测试也是从无到有、由浅入深,逐步走向成熟的。但从国内看,自动化测试还不够普及,没有得到足够的重视,正如Dion Johnson 2007年10月在《Better Software》上发表文章《自动化测试成长(Test Automation Grows Up)》指出的,人们往往把自动化测试当成手工测试的附属品,就像当年把测试当成开发的附属品一样。今天,软件开源运动(open source)蓬勃发展,测试工具可以信手拈来,其投入小,必然使自动化测试快速普及。借助互联网,人们也可以非常方便地分享经验和保持良好的沟通。这一切,都会给自动化测试带来新的发展机遇,将极大地促进自动化测试的快速发展。
从1998年开始提倡开源软件开始,开源软件在过去十年得到了蓬勃发展,从操作系统Linux、数据库MySQL、编程语言PHP、集成开发环境Eclipse到浏览器Firefox,已渗透到各个领域,并结出了丰硕的果实,得到了业界广泛认可。在软件测试领域,开源软件也不例外,从单元测试、功能测试到性能测试,从Web页面测试到数据库、多媒体、通信等应用领域的测试,以及软件测试管理平台、缺陷跟踪系统等,都可以找到合适的开源测试工具。可以说,目前成熟的开源测试工具可以覆盖整个测试的生命周期,针对各种测试任务,我们都能找到合适的开源测试工具。21世纪软件测试发展的一个重要趋势之一,就是开源测试工具会迅速发展,得到广泛使用,成为商业工具的有力竞争者。开源测试工具最终能和商业工具平分秋色,甚至成为其替代者。
开源软件可谓“十年磨一剑”。忽然,我想到了“七剑下天山”,清朝初年,武林高手不断被追捕,天下大乱、天山名宿晦明禅师四位高徒连同三位剑侠——七剑下天山,拯救中原,欲救天下黎民百姓免受清军铁蹄蹂躏。正可谓“无限深情、舍己为人甘替死,绝招雪恨、闯关破敌勇除奸”。所以,我就将本书中重点介绍的7个测试工具比喻为天山七剑——游龙、青干、莫问、日月、竞星、天瀑和舍神,这也是本书的重头戏——从第3章到第9章,共7章。
莫问剑 Selenium的Web功能测试,变化无穷、气势磅礴。第3章介绍了Selenium旗下的4大金刚——Selenium IDE、Core、Remore Control和Grid,以及其应用,从而使我们能够有效地完成大规模的、分布式的web应用系统的自动化测试。
游龙剑 AutoIT实施功能测试,灵活快速、削铁如泥。第4章在介绍了AutoIT语法特征之后,通过两个不同类型的完整实例,让我们知道如何借助AutoIT完成Windows客户端软件的自动化测试。
舍神剑 JMeter的性能测试,开山辟石、无坚不摧。第5章涉及JMeter的脚本录制和开发,以及如何通过JMeter完成复杂的、分布式大规模压力测试和数据库的性能测试。
日月剑 JUnit的单元测试,变化奇快、丰富多彩。第6章介绍了JUnit的单元测试。从持久层和Action层的测试到完整的自动化单元测试,JUnit展示了其魅力,并可很容易地和CVS、Ant等集成起来。
竞星剑 EMMA覆盖率分析,出剑神速,迅雷不可目睹。第7章在介绍了覆盖率分析的意义及其常用工具之后,着重讨论了如何通过命令行和Ant集成等应用方式,完成覆盖率的收集和分析。在众多的覆盖率分析工具中, EMMA工具脱颖而出。
青干剑 MantisBT管理缺陷,奇钝无比,却可抵挡天下最锋利的武器。第8章全面展示了MantisBT的安装及其使用方法,其中也融合了缺陷管理的思想和流程。
天瀑剑 TestLink管理测试,无为而为,形无虚实,专一严谨。第9章帮助读者完整地领略软件测试需求、测试用例的管理思路,以及如何通过TestLink具体实施测试计划,进行测试执行和测试结果评估等。
在介绍这些工具之前,第1章先让大家亲手完成一个简单的自动化测试,然后讲解自动化测试的作用和特点、如何引入自动化测试和如何选择合适的自动化测试工具。然后,用一章的篇幅由浅入深地剖析自动化测试的原理,包括不同对象的识别和各种脚本技术等。
在介绍完这些工具之后,一方面介绍不同层次或不同方面的自动化测试框架,帮助读者构建一个完整的、理想的自动化测试框架;另一方面对自动化测试实施进行总结,并和读者进一步分享作者多年来所积累的自动化测试最佳实践经验。本书最后附有所需的测试工具及其相关软件的下载地址、参考资源等。
读者还可在http://files.cnblogs.com/bvbook/轻轻松松自动化测试附录.rar处下载STAX XML示例文件、Selenium core实例所用的JavaScript代码,以及JMeterJDBCRequest脚本(.jmx)。
本书由朱少民策划、主编和审稿,其中第1、2、8、9、10、11章由朱少民编写,第3章由刘涛、王鹏和朱少民编写,第4章由史玮编写,第5章由张军编写,第6章由王顺编写,第7章由姜文武编写。
在此特别感谢同济大学软件学院常务副院长、ISTQB中国首席代表刘琴博士为本书写序,感谢电子工业出版社博文视点周筠老师的支持和关心,以及几位编辑所倾注的精力和热情,他们的支持使这本书可以早日和大家见面。
由于水平和时间的限制,本书难免会存在一些错误,还望见谅并恳请读者提出宝贵意见。
朱少民
2009年春于合肥
联系博文视点
您可以通过如下方式与本书的出版方取得联系。
读者信箱:reader@broadview.com.cn
投稿信箱:bvtougao@gmail.com
北京博文视点资讯有限公司(武汉分部)
湖北省 武汉市 洪山区 吴家湾 邮科院路特1号 湖北信息产业科技大厦1402室
邮政编码:430074
电话:027-87690813
传真:027-87690595
若您希望参加博文视点的有奖读者调查,或对写作和翻译感兴趣,欢迎您访问:
关于本书的勘误、资源下载及博文视点的最新书讯,欢迎您访问博文视点官方博客: