前言
如果你在软件行业,无论你的角色是什么,你都不可能没有经历过测试。这是因为测试是软件工程不可或缺的一个方面,贯穿于软件交付周期的每个阶段。随着当今数字化的指数级爆发,各种Web 和移动应用程序已深深融入人们的日常生活中,使用各种质量维度进行测试已成为当务之急。
当我们将测试视为一门软件学科时,就能看到它是如何在其存在的几十年中经历了自己的发展轨迹,并逐渐融入了新的实践、框架、方法和工具。手动测试已经演变为手动探索性测试,并且仍然是今天测试规程的一个基本部分。与此同时,自动化测试与持续集成和持续部署(CI/CD)实践相结合的兴起,使得测试带来的价值急剧上升。除了功能用例之外,自动化测试跨功能需求(如性能、安全性和可靠性)以接收整体反馈并持续交付高质量软件是当前的关键需求。这就是为什么全栈测试在当今业界被视为一种理想的专业化。我想你来这里是因为你想完成转变,能够掌握好完整的测试技术栈,这样你就可以在工作中交付高质量的软件。首先,感谢你的承诺,其次,欢迎加入!
我写这本书的原因
我谦逊地告诉您,之前许多测试专家都有可能写过这本书,而不一定非得是我。也许是因为他们的职责不允许他们有时间,或者他们缺乏兴趣;无论原因如何,这个机会落到了我身上,我对此感激不尽!(尽管如果在我刚开始测试时,其他专家已经写了这本书,那将为我节省很多努力:我不得不在数百个博客中搜寻,亲自尝试数十种工具,以获得我多年来积累的测试技能。)
通过我在日常工作中与客户咨询的经验,我观察到那些实施了明智的测试策略的团队大多获得了成功,而那些没有实施的团队则遭受了惨败。例如,我见过完全依赖基于用户界面的端到端测试并因维护任务而筋疲力尽的客户团队,或者只进行手动测试并面临大量生产缺陷的团队。有些团队只进行功能测试,未能发现关键的非功能性问题。总的来说,这些团队以软件质量差、团队不满意和缺乏竞争优势为特点。令我惊讶的是,在测试作为一门学科已经存在几十年的今天,对于测试实践的理解仍然存在这样的偏差。我只能推测这在很大程度上是由于行业中测试人才的匮乏,而在软件公司之间进行的持续人才争夺战中,广泛分享和传播知识是公平的。
虽然有一些关于个别工具的测试教程,但在如何提升自己对当前测试趋势的技能水平,并使用不同工具进行实践示例方面,还缺乏一个连贯的叙述。对于许多小众技能,如安全性和可访问性测试,缺乏初学者阅读的易于理解的材料。本书旨在成为一个全面的资源,使测试初学者能够在当今的Web 和移动应用程序测试中将自己的技能水平提升到初级高级水平。
如果您想知道我所说的初级高级是什么意思,我指的是德雷福斯技能习得模型。该模型详细阐述了一个人在获得一项技能时所经历的五个阶段:新手、初级高级、熟练、精通和专家。本书的目标是雄心勃勃的,旨在通过实际示例将读者推进到这些技能的前两个阶段,涵盖了10 个不同的测试技能。鉴于第三个阶段是熟练,而熟练需要通过广泛的实践才能达到,我相信本书尽其所能地帮助读者提升到这个阶段!
谁适合阅读这本书
这本书主要是为软件测试的初学者和现有的软件测试专业人员量身定做的,他们希望扩展自己的知识广度。也就是说,任何职责与测试重叠的软件角色,如应用程序开发人员或DevOps 工程师,都可以从本书中受益。在所有情况下,一个基本要求是拥有一些编码知识,尤其是Java 方面的知识,正如本书所述Java 和JavaScript的实践练习。此外,如果你是软件行业的新手,我建议你在深入阅读本书之前,先初步了解一下软件开发过程,如敏捷和瀑布方法。
概览本书
本书首先介绍了全栈测试,并详细阐述了交付高质量Web 和移动应用程序所必需的10 种测试技能。基于这些基础,设计了10 个可独立的技能提升章节。每一章都包含以下结构元素:
? 上下文设置所必需的主题被分组在“构建模块”标题下。如果你是该技能的新手,本节将深入了解该技能所涉及的内容以及为什么需要应用该技能以及需要在何处应用该技能。
? 接下来是策略部分,详细说明如何在给定情况下应用该技能。
? 然后是一些练习,通过使用多种工具执行技能的分步说明指导读者。
? 在某些章节中还有一个“探索更多工具”部分,其中将进一步讨论与练习部分中讨论的工具类似的平行工具,或其他可能在练习过程中为读者增加价值的工具,以丰富读者对技能的掌握。
? 最后,根据个人观察和经验,你可以在其中一些章节中找到我的观点,然后是关键要点,这些要点简要概述了每一章中的经验教训。
在10 个技能提升章节之后,本书讨论了如何在第一原则和个人软技能的帮助下进一步测试。此外,还为热情的读者提供了一个额外的章节,作为新兴技术测试的介绍。本书简要介绍了AI/ML、区块链、物联网和AR/VR 这四种新兴技术的测试,旨在帮助你开始学习这些领域的知识。