持续交付中的软件测试
了解软件测试的好处及其在持续交付中的作用。
软件测试是软件开发中的一个组织过程,此过程会对业务关键型软件的正确性、质量和性能进行验证。软件测试用于确保预期的业务系统和产品功能按预期正常运行。
软件测试可以是手动流程,也可以是自动流程。
- 手动软件测试由团队或个人领导,他们将手动操作软件产品并确保其按预期运行。
- 自动化软件测试由许多不同的工具组成,这些工具具有不同的功能,从孤立的代码正确性检查到模拟完整的人工驱动的手动测试体验。
软件中不同类型的测试
比较不同类型的软件测试,例如单元测试、集成测试、功能测试、验收测试等!
探索性测试
了解什么是探索性测试及其历史。了解探索性测试的利弊以及何最佳使用时机。
代码覆盖率简介
了解如何开始使用代码覆盖率、找到合适的工具以及如何计算代码覆盖率。
集成测试教程
通过本教程了解如何使用 Bitbucket Pipelines 运行集成测试。
软件测试的好处
软件测试将降低软件开发和维护成本,从而为组织节省时间和金钱。软件测试为新功能的开发提供了稳定性保障。测试可确保功能按预期运行,并且用户不会遇到错误。
通过指定一组测试用例,新功能必须匹配才能被视为完整且可交付,从而缩短了新功能的开发时间。这为开发人员提供了一个固定的目标,可以努力实现更准确的时间线估算并减少新错误的引入。一旦这些测试用例到位,总体维护成本就会降低。可以针对已交付的功能运行测试,以确保其仍能按预期运行。
软件测试的级别
软件测试有几个基本级别,每个层次都从开发流程中的独特角度考察软件功能。我们依次看一下每种类型的测试,并研究其实际用途。
单元测试
软件测试的基本级别是单元测试。单元测试是指对单个代码单元进行输入和输出正确性检查的做法。这种情况下,测量单位是独立的代码函数或方法。
单元测试期间,使用模拟输入在测试环境中执行生产代码函数。然后将函数的输出与该输入的预期输出进行比较。如果输出与预期相匹配,则测试通过。如果不匹配,则测试失败。单元测试是验证派生数据函数的好方法。
假设的单元测试用户故事示例是这样的:“函数 2VAL,给定 2 个值 x 和 y 始终返回 x+y”。然后,单元测试将使用两个值执行 2VAL,并确认输出为 x+y。单元测试非常适合确认按货币值运算的代码的正确性。
集成测试
当软件测试用例涵盖多个单元时,它被视为集成测试。开发软件测试用例时,单元测试之间的界限可以迅速演变为集成测试。通常,可能会开发针对第三方代码依赖关系运行的单元测试。依赖关系本身不需要进行测试,与依赖关系的集成将被模仿或伪造。
功能或端到端测试
模拟完整用户级体验的测试用例称为功能测试或端到端测试。端到端测试使用模拟真实人类用户行为的工具。端到端测试的常见步骤:
- 点击此按钮
- 阅读此文本
- 提交此表格
由于具有完整的体验执行环境,端到端测试可验证软件堆栈所有层的正确性。
探索性测试
探索性测试是一种测试练习,其中为测试人员分配一项定义松散的任务,使用正在测试的软件来完成。这意味着您可以了解很多关于人们在野外使用您的产品的方式。探索性测试会话甚至可以通过针对最多的问题、最佳缺陷或对产品做意想不到的事情提供奖励来激励用户。
探索性软件测试的好处之一是,任何人都可以加入以帮助测试,因为他们需要做的就是自由浏览产品。探索性测试不是随机的,但它们也不是像手动测试那样编写脚本。
持续交付中的软件测试
持续交付利用之前提到的所有测试策略来创建无缝管道,自动交付已完成的代码任务。最佳设置将允许开发人员将最近完成的代码推送到持续交付管道中进行评估。然后,管道将通过测试级别运行新推送的代码。如果代码通过测试,它将自动合并以及部署到生产环境中。但是,如果代码未通过测试,代码将被拒绝,开发人员会自动收到需要更正的步骤的通知。
流行的既定软件语言开发生态系统有自己的子集测试生态系统。有许多工具可提供实用程序来帮助测试和开发测试套件。这些工具通常通过特定于项目中使用的编程语言的软件包管理器安装。
除了测试仪器外,还提供用于测试执行和开发的工具。可以安装各种测试运行器来提供测试套件的输出数据。常见做法是衡量整个项目的“测试覆盖率”。代码覆盖率工具可用于指示代码库中有多少已被充分覆盖。
开发出测试套件并在本地项目上正常运行后,通常可以直接集成到 CD 管道中。大多数托管的 CD/CI 系统都将提供有关如何将测试套件集成到管道中的指南。
如何让测试成为 CD 管道的一部分
真正的自动、增值 CD 管道是建立在坚实的测试基础之上的。该测试基础从手动测试用例开始,然后逐渐发展为自动解决方案。
在管道的每一步都要强调质量
每个人(开发人员、测试人员等)都要负责与客户的质量关系。每行代码要么使客户体验变得更好,要么更糟。CD 管道的测试套件是一种用于开发高质量和正确代码的多方面工具。在产品设计阶段,可以记住测试套件,以便预先考虑如何开发功能。该测试套件主要用于简化开发流程,但也可以在测试和生产环境中执行以保证质量。
让开发人员能够证明功能的质量
传统的测试方法认为,测试是一个单独的流程,与开发人员不同步。开发人员缺席质量保证会导致开发团队对客户缺乏同理心。此外,缺乏开发人员对质量的参与会使问题在代码库中的恶化时间更长,从而提高修复成本。这种方法在组织员工成本方面也很昂贵,因为它鼓励雇用单独的 QA 团队来承担责任。
持续交付可提高开发人员对最终用户体验的认识和同理心。开发人员的任务是为他们开发的功能提供测试覆盖率,并从开发到生产环境一直对其进行监督。这使开发人员有机会负责和证明功能的质量。
内置客户反馈
持续交付可以快速部署和更新软件项目。这样可以立即将客户反馈纳入下一个版本。如果用户报告了问题,可以查阅 CD 管道测试套件以缩小可能的问题向量的范围。快速响应客户反馈的开发和测试团队会更成功。
想要创建自己的持续交付环境?我们会帮助您入门。
制定可靠的软件测试策略
设计软件测试策略时,最好牢记整体产品、用户和业务策略。需要考虑哪些是最高价值的测试覆盖率目标。
理想情况下,软件项目将努力实现 100% 的测试覆盖率,从而确保代码没有错误并且可以按预期运行。不幸的是,在现实的商业世界中,由于时间线和预算限制,这并不现实。
还应根据可交付软件的类型考虑不同的测试策略。如果软件是 GUI 驱动的应用,那么高级别的端到端测试将非常有价值。无头 UI 自由软件项目将放弃端到端测试,并从单元测试中获得高度评价。
基于 GUI 的用户应用的一般总体策略如下。
- 对所有核心用户流程、登录、注册、签出等进行端到端测试
- 对所有数据敏感代码功能(例如货币交易工具)进行单元测试
- 对第三方集成的任何点进行集成测试,以确保数据流向第三方,并且所有错误都能正确传播
通过持续交付改善您的软件测试
努力实现持续交付工作流程具有许多商业好处。通过承诺采用 CD 工作流程,可以大幅削减雇用和管理单独团队担任质量保证、发布管理和测试工程职位的组织成本。
与传统的 QA 测试工作流程相比,持续交付可提高整体产品质量水平。CD 测试鼓励开发人员负责最终用户体验和所推出功能的质量。CD 提供了一个框架,使公司更容易关注和讨论版本质量。
实施强大的软件测试策略是持续交付的基础,而自动化是成功实现持续交付渠道的关键。
您准备好加强软件测试了吗?了解有关在 CD 环境中进行测试的更多信息。您还可以通过我们的 DevOps 测试教程了解 Atlassian 和第三方工具如何将测试集成到您的工作流程中。
下一个主题
推荐阅读
将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。