写一本关于 Selenium 自动化测试的工具书,一开始我是拒绝的。直到现在,我仍然认为工具书不足以道尽测试的奥妙。学习 Selenium 最好的途径是啃官方文档和源码,从最开始的 Selenium RC 到 Webdriver,再到移动测试 Appium,Selenium一直在快速、持续地发展和变化着。等读者看到这本书的时候,很可能某些问题已经有了更好的解决方案,或者书中的代码已经不能直接运行。
而最终,我还是动笔了。因为我还有另一个观点:“自动化测试”不是某一家公司或者团队组织需要考虑的问题,它应该是测试同行们的必经之路,是日常测试工作的手段之一。而初学者在一开始难免会有畏难情绪,又不知如何构建知识体系。于是,将所思所得分享出来,或许可以帮助初学者尽快地度过那段“破冰期”。
《Selenium自动化测试之道》在天猫京东当当等各大网站均可购买。
传送门:https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.1.6c897c7ahoFqS8&id=561273116354&areaId=110100&user_id=2451699564&cat_id=2&is_b=1&rn=c4b3a9235eda34738ef10b73faaa44d3
本书的组织方式
市面上Selenium的资料很多,谈论测试自动化的也很多。脱离了工具和技术,去谈方法论,难免让人觉得空洞;而没有方法论的东西,只谈工具和技术,难免是“一叶障目,不见泰山”。本书尝试在梳理技术知识之余,讨论测试自动化的方法论。
n第1章是探讨测试价值观,阐述了我对自动化测试的基本观点和认识。
n第2章是Selenium入门章节。介绍了Selenium的发展,涉及到Selenium IDE,Selenium Webdriver,Selenium Grid的使用
n第3章重点介绍了Selenium Webdriver 的使用。不是简单罗列Selenium Webdriver API,还包括了不同webdriver对象,不同页面元素的处理思路。
n第4章介绍了自动化测试框架的设计,包括了线性,模块化,数据驱动和关键字框架这四种类型。
n第5章介绍了HTML5元素的处理。Selenium还未对某些HTML5元素的操作进行封装,因而需要利用Javascript来解决问题。读者将在这一章开拓视角,了解更多的Selenium应用场景。
n第6章介绍了移动App的测试框架——Appium。基于前面几章对Selenium原理与操作的了解,读者会在这一章了解iOS与Android App 自动化测试脚本的写法。
n第7章介绍了行为驱动开发(BDD)模式。通过这一章节,希望读者能体会到,做好自动化测试不仅在于工具的掌握和框架的使用,还需要考虑测试用例的管理,手动测试用例如何与自动化脚本关联,甚至与业务部门的沟通等问题。几款BDD框架的示例,为读者提供了思路。
n第8章介绍了持续集成工具Jenkins的使用。希望通过这一章节,能为读者带来测试流程方面的思考。Jenkins 可以让测试脚本的执行,报告的展示变得简单高效。
本书的内容,均是由Ping++ 的一线测试人员编写。第2章由王红兴、周淼淼主笔,第4章由徐克亮主笔。其余章节均由我本人主笔。
本书特色与不足
本书的特色主要体现在以下三个方面:
第一,在理论观点上,本书在开篇就阐明了笔者对于“质量与自动化测试的关系”,“自动化测试与白盒测试的关系”等话题的理解。其实 Selenium 等各种自动化测试工具上手并不难,但我相信读者在阅读过程中,并不仅仅只是想了解一种工具,而是想获得如何实施自动化测试的思路。正所谓,测试技术或工具只是“指月之手”,我们追求的“月亮”,是如何放心地迭代,快速地交付高品质的产品。
第二,在学习视角上,本书从 Selenium 工作原理,测试脚本的组织方式说开去,再由Web 自动化脚本的编写,延伸到 HTML5 元素,App 测试对象的识别等。章节的内容设置,与当今企业,尤其是互联网公司,所需的UI自动化测试技术环环相扣,归纳总结了可能遇到的难点,以及解决问题的思路。
第三,在技术实施上,突出了需要向团队传播质量意识与测试自动化实践相结合。本书介绍的行为驱动开发(BDD)与持续集成工具 Jenkins,都是需要团结整个研发团队,甚至是相关的业务部门,才能将这些理念发挥至最佳。当然,即便这些概念在组织推进过程中存在困难,测试人员也可以通过了解这些工具和技术,对研发过程改进这一话题进行更加深入的思考。
本书也存在以下几方面的不足:
一是代码示例涉及的编程语言不够全面,对编程语言的语法未做特别说明。Selenium 目前支持七种语言(Java,Csharp,Python,Ruby,PHP,Perl,Javascript),有不少介绍 Selenium 的同类书籍,在章节内容中会介绍编程语言的语法基础。考虑到本书的目标和定位,笔者有意在无形中弱化了读者对于编程语言语法的关注。这对于没有掌握一门编程语言的初学者而言,或许会造成阅读门槛。
二是体系不够完善。本书涉及了多类界面对象的识别和操作,多种测试脚本的写法,多个测试框架的使用。然而在实际工作中,界面操作的自动化仅仅只是分层测试策略中的一部分,并不能代表全部的自动化工作。但为了便于从整体上把握和安排内容,笔者还是以 Web 测试自动化作为本书的主要架构。这样,相比单一地通过某个系统或产品来整体介绍自动化测试方面的研究,书中各章节的内容就显得在体系性上有所欠缺。