前言
笔者多年来一直在微软公司从事与Web开发相关的技术工作,帮助客户维护和处理各种Web应用的突发事件,期间走访了大量客户,为他们提供解决方案或指导意见。我们深深感受到近些年来Web技术的快速发展对Web开发人员、测试人员带来的诸多挑战:
• Web开发是一个开放的、不断演进的、高速迭代的领域。即便是过去一直被诟病为封闭的微软公司也开始拥抱开源世界,提供.NET Core、TypeScript等多项开源和跨平台技术。这对于过去长期在单一厂商平台上进行项目开发的技术人员而言,就更需要积极主动地学习新技术,接受新挑战,以适应变化,满足业务需求。
• 基于JavaScript的前端应用规模越来越大,功能越来越复杂,前端测试已经成为保证产品质量的关键因素。同时,由于Web开发存在测试周期短、更新频繁的特点,传统测试人员需要具备一定的开发能力才能充分利用自动化测试工具来提高测试效率。
• 随着敏捷软件开发方法和DevOps的流行,测试和开发环节之间的界限逐渐变得模糊。传统开发人员需要了解一定的测试方法并具有相应的思维方式,才能设计出良好的测试用例。由于测试和开发环节的融合,无论是开发人员还是测试人员都需要不断提高自身的能力和价值。
本书是笔者在开发测试领域中的实践与经验的总结,希望读者通过对本书的学习,能够掌握Web前端测试的各种技巧,提升自己的能力,迎接新技术的挑战。
本书内容
全书共分四个部分,前两部分为金鑫编写,后两部分为武帅编写。
• 第一部分为基础篇(第1~2章),总览了前端开发测试中的挑战与进行测试转型的方法,以及基于Node.js搭建测试开发基础环境的步骤。
• 第二部分为单元测试篇(第3~7章),基于单元测试理论深入剖析了Jasmine测试框架的结构与各种使用范式,内容覆盖了所有主流单元测试的技巧。然后,结合gulp、Karma等构建、执行工具对单元测试进行自动化处理。最后以实战的形式演示了AngularJS单元测试最佳实践以及Istanbul代码覆盖率的应用等内容。
• 第三部分为自动化测试篇(第8~14章),由浅入深地介绍了Selenium各个组件的功能特点和WebDriver在自动化测试中的使用技巧。进而基于Protractor深入介绍了在Node.js环境下,通过JavaScript代码结合WebDriver进行自动化测试,并全面覆盖Chrome、Firefox、IE和Edge等主流浏览器的最佳实践,内容包括页面对象模型、性能测试、数据驱动测试和分布式测试等。
• 第四部分为集成篇(第15~16章),阐述了基于持续集成技术来实现更快、更可靠的软件交付方法,比较了当前主流CI系统的特点,展示了通过Jenkins与TFS、VSTS和GitHub集成来实现Web应用持续测试的方法。
本书适合对象
本书适合所有Web开发人员、测试人员和项目经理做学习、参考之用。本书涉及的示例代码,读者可从网址https://github.com/FrontEndTesting/webtesting-book-demo处下载,供对照学习。
致谢
首先,感谢家人对我们利用业余时间编写本书的理解,在漫长的编写过程中始终给予关爱和支持。其次,感谢张量、毛蔚、徐春林和顾洁等微软公司同事的大力鼓励与支持,本书的成书与他们密不可分。
由于笔者学识有限,时间仓促,书中难免出现错误或疏漏,恳请广大读者不吝指正。如果您有什么宝贵意见,请发送邮件至jin_xin2000@outlook.com,我们将不胜感激。