全球经济已达到另一个临界点。招聘人数在增加,公司再次增长——但由于市场混乱的威胁(想想优步及其许多变体)和地缘政治混乱的持续威胁(想想中国、叙利亚等),不确定性普遍存在。回到现实,软件组织需要特别聪明地利用时间和资源,同时仍然推动快速创新。如果没有有效的敏捷流程和协作、适应性强的文化,公司就无法在当今复杂的应用程序经济中取得良好的竞争力。对于企业来说,挑战尤为严峻。过去,小公司希望看起来比实际规模更大。但现在,大公司的任务是缩小规模,以便他们能够灵活和响应。这意味着采用最有效、最灵活的开发、质量保证和测试流程。以下是在测试中转向敏捷成熟度的三个核心阶段。
1. 为敏捷测试打下基础
首先是构建标准化工作流程并设置测试流程。这涉及诸如了解何时准备好测试、与团队成员共享测试已完成、在报告中显示结果和相关数据(如缺陷摘要)等概念。许多组织仍然没有制定 QA 要求和状态标准。这类似于公司建立其销售团队和流程时的情况。在您定义了销售机会、销售团队的具体角色以及如何通过管道跟踪进度之前,您不会开始自动化电子邮件和电话。进行大量手动测试但转向自动化测试的公司可能会选择跳过标准化并开始使用系统来跟踪所有内容。但管理框架是第一步,无论您处于自动化生命周期的哪个阶段。即使使用自动化测试,团队也总是可以更有效率。此类管理系统详细跟踪从冲刺计划到设置需求并将任务分配给测试用例以执行再到缺陷管理的进度。管理工具还应该能够根据您的团队的需求定制流程,因为它们会随着您的团队的适应而发展。
2. 自动化和优化
一旦管理和流程框架到位,就该考虑哪些手动工作应该用自动化代替,或者可能完全删除。这允许组织向现有测试台添加新类型的测试,例如负载测试和探索性测试。在自动化任何事情之前,团队应该分析自动化流程将拯救您的业务的哪些方面。当然,自动化测试的工具、人才和维护都需要成本,因此在对不经常更新或业务优先级不高的应用程序进行自动化测试之前要三思。根据业务优先级和客户相关性为自动化选择手动测试,并确定 100% 准确度的总体重要性。
例如,假设手动测试的准确率为 95%,而且效率极高。这很好,但是如果测试与应用程序的关键部分(例如购买结帐流程)相关怎么办?通过自动化使测试 100% 准确可能有可靠的 ROI 案例。另一方面,手动测试人员可以增加自动化测试的深度。假设您的网站上有一个重要的创收应用程序,例如银行的贷款计算工具。提高 100% 的准确率可能意味着将更多的身体放在应用程序上进行性能测试。第二阶段优化的目标通常是通过单元测试自动化达到大约 80% 的代码覆盖率,如果自动化 80% 有明确的 ROI。请记住,这种覆盖将理想地导致更成熟的测试驱动开发 (TDD) 概念,即首先将测试构建到开发过程中。因此,投资回报率不仅与节省的时间有关,还与您的团队通过自动化更多测试获得的新能力有关。第二阶段的一个重要目标是了解如何做好自动化、快速编写测试以及分配团队角色。
3. 推动持续集成和极致效率
此时,您的团队已经过渡到混合使用手动和自动测试,并倾向于更重的自动化。现在,是时候专注于为每个步骤提供极高的效率,而这首先要在开发人员和测试人员之间建立更高级别的协作。 TDD 和行为驱动开发 (BDD) 是推动这种集成和协作的新兴方法。 TDD 和 BDD 都涉及在开发代码之前编写测试用例。第一次测试显然会失败,因为代码尚未编写,但随着开发人员编写代码,测试应该会越来越多地通过,并且在他们通过之后,开发人员有机会完善代码,使其足够优雅用户。这是避免范围蔓延并在开发和测试期间更加精简的好方法。
BDD 应用一种通俗易懂的、面向业务的方法来进行测试。 BDD 测试可能是这样的:“鉴于我在美国的 PC 上使用 Internet Explorer 10,当我单击登录按钮进入我的管理员帐户时,我应该会看到我当前的帐户详细信息。” BDD 测试很重要,因为它确保代码传递与现实世界相关,将用户放在首位,而 TDD 将主要关注业务用户通常无法阅读的技术单元测试。
这个阶段的一个关键焦点是速度。测试自动化是不够的——它还必须能够快速可靠地运行。需要 24 小时才能运行的测试应该进行修改,或许可以重构为更小的测试并分布在不同的服务器上,以便整个构建过程可以在一小时内运行。通过持续集成 (CI) 和持续交付 (CD),确保在代码完成之前编写和应用自动化测试的能力意味着新功能的维护成本更低,理论上可以在完成后数小时内投放市场.
当今的市场压力要求大大小小的组织灵活敏捷地跟上竞争和客户需求。团队应该尽可能地不断努力改进他们的流程,并引入新的举措来提高他们为市场创造价值的能力。然而,团队需要认识到这不是一蹴而就的转变,必须(为了)实现几个关键步骤才能成为一流的开发和测试组织。