测试架构:测试应用程序的整体视角

2024-01-10   出处: testim  作/译者:Shawn J/Yantao

1 什么是测试架构

测试架构可以从两个方面进行讨论。从策略层面上,测试架构考虑的是测试应用程序的最佳方法,它可以帮助解答一些问题,例如,我们如何使用单元测试、集成测试和端到端测试来取得覆盖率?哪些测试应该用自动化代替手工测试?我们要使用什么样的测试工具或框架?测试架构也可以体现在更详细的设计层面上,在这个层面上可以回答另外一些问题,例如,我们需要验证的应用程序的重点是什么?我们如何制定测试,以最小重复的情况下获得最大覆盖率?我们将使用什么样的数据?

随着应用程序的越来越复杂,团队需要更高效的进行测试。他们需要制定一个测试策略,能够在开发的不同阶段快速反馈,覆盖应用程序的所有风险,并且不需要大量的测试人员进行维护。

尽管QA团队可以自动化大部分的软件测试,但这不是一项完全自主的活动。相反,这需要预先定义的循序渐进的步骤,需要遵循这个步骤来确保即将上线的特定产品能按预期运行。

本文旨在强调测试架构的某些方面可以帮助团队自下而上的保障质量,并更高效的调整测试。

2 测试金字塔

测试金字塔是一个经常被用作测试架构指南的框架。这是一个简单且强大的模型,金字塔的底部是大量的单元测试,因为单元测试能更快的反馈。中间层是较少的集成测试,用来验证应用程序的组件是否可以协同工作。金字塔的顶端是UI和端到端测试,这些测试被使用的更少用来验证用户体验。

应用测试金字塔需要对被测应用有深入的了解。例如,因为一个组件在五个页面上使用,是否真的需要测试这个组件五次?如果这个组件已经在单元测试和集成测试进行了测试,那么测试该组件的一个UI/E2E的场景就足够了。

当然,在将金字塔应用于测试架构时,您还应该考虑其它因素,例如,可使用的测试技能或应用程序不同部分的风险。如果应用程序有一个频繁变更的部分,相对于未变更部分,变更部分需要投入更多的测试。如果UI测试人员不了解应用程序,或者不了解组件在应用程序中是如何复用的,那么您可能需要更加依赖开发人员编写的单元测试和集成测试。

3 测试自动化

自动化是测试架构的关键组成部分,它降低了成本并防止回归缺陷漏出到线上。

近年来,Web应用程序无论是在业务重要性方面还是从功能或代码行数方面都有显著增长。对于任何软件产品,进行变更都可能产生意想不到的影响,为了防止功能退化,团队需要测试应用程序中看似不相关但可能由于代码变更而失败的部分,这非常耗时,并且手动执行时可能会导致发布延期。

自动化测试能够达到手动测试无法达到的更详细的测试。与手动测试相比,通过自动化,可以更快的执行更多的测试。此外,它能减少重复性任务的执行。自动化测试用例是可重复使用的,可以重复执行测试用例的步骤而无需进行任何的更改。与手动测试相比,可以发现更多的问题,更快收到反馈,并缩短周期。

4 测试设计

首先,自动化测试,无论是用代码编写的还是用低代码工具编写的,都应该遵循代码规范。例如,即使在UI级别编写较小的测试也可以提供更快、更明确的反馈。如果它们是为了与频繁变更的功能保持一致编写的,还可以使维护变得更加容易。例如,电子商务应用程序可能会经常变更应用内的促销,在总的测试用例中增加促销部分的测试用例。另一种最小化频繁变更的测试更新方法是将它们放在可复用的组中,更新一次后,所有依赖的组也会更新。

测试设计的另一个作用是为基础功能提供简单且更普遍的测试用例。例如,大多数应用程序取消了登录功能,因此您需要一些测试来检查有效用户可以访问系统,而另一些测试尝试使用无效凭据登录,可以使用一些数据变量在单个测试中完成此操作。另一方面,如果在测试其它功能之前必须要先登录到应用程序中,则可以创建一个登录测试用例,该测试用例使用正确的凭证作为其它测试用例的共享组来使用。

5 调整QA团队

对于很多团队来说,测试自动化是后知后觉的事。当项目开始失控时才开始考虑自动化项目。很多时候,解决办法是增加人员或时间,不幸的是,业务不能等待,因此,您必须调整您的测试策略以跟上不断的产品变化,同时保持团队的效率。

随着自动化测试的发展、团队规模的扩大以及软件版本的增加,调整变得越来越困难,您需要工具、流程和措施来帮助您保持效率和有效性。

6 TestOps

TestOps是管理和拓展测试自动化人员、流程和测试的学科,以最大限度提高效率、交付周期和应用程序质量。TestOps旨在改进测试的感知和实施方式,主要包含四个主要部分:计划、控制、管理和洞察。

  1. 计划:计划需要尽早进行,所有相关方都要参与其中,并且这是一个持续的过程。通过尽早且全面的计划,团队可以更好的了解测试内容、谁应该运行测试以及预期的结果。

  2. 控制:测试就像代码一样,应该有适当的控制措施来确保授权的测试。控制包括标准化测试用例变更流程,明确定义不同团队人员可以做什么,以及推动每个人遵循规范。

  3. 管理:测试需要良好的组织管理,这样团队成员才能保持高效。如果你有工具来分配工作量,并知道重点放在哪里,管理可以让他们负起责任,这将有所帮助。管理还可以拓展到测试的生命周期中,例如,处于评估阶段的测试、在CI中处于活跃状态、或者可能被隔离直到被修复。根据测试的状态进行不同的处理有助于建立信任,即测试失败代表的是应用程序中存在的问题,而不是由于不稳定导致。

  4. 洞察:最后一部分是洞察,知道您的测试通过或者失败是任何测试的最低要求。为了有效的调整,您还必须了解发布的质量、质量的趋势以及如何改进。您需要深入了解以帮助确定失败趋势、重复级别以及可能需要更多培训的团队成员。一般来说,您可以更好的了解自己的表现,为什么您在某些方面表现出色,以及哪些方面需要改进。

7 总结

尽管软件测试已经发展了多年,但它仍然难以跟上软件开发的步伐,即使大公司也经常在未测试完成之前部署软件。一个可靠的测试架构可以帮助正确的执行测试以及执行时间,此外,它还能使您的质量计划随着应用程序的增长而有效的拓展。


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
158° /1582 人阅读/0 条评论 发表评论

登录 后发表评论