软件质量保障 | 测试质量保障、自动化工具/框架、平台开发、算法测试、BAT/TMD大厂测试岗面试题/面经分享、测试团队建设与管理、测试新技术的分享。 偶尔也聊聊个人工作的收获与经验。可以帮忙内推字节、阿里、百度等大厂。
业内对软件故障频发问题进行大量研究表明:主要原因是在软件开发过程中质量保证不佳。执行严格的质量保障测试主要目的是防范发布质量差的产品,因为漏掉的小缺陷可能会导致公司经济上巨额的财务损失。一个很好的例子是Flud,它是iPad,iPhone,Android和Windows Phone的社交新闻阅读器应用程序,被称为“第一个真正的社交新闻阅读器”。但是由于软件质量不佳,频频出现启动失败问题。Flud团队的重视开发忽略测试,当产品最终发布时,它不可避免会出现缺陷。即使一切都已解决,但不良的声誉和糟糕的用户体验仍然阻碍了它的成功。因此,Flud公司倒闭了。
保障高质量软件的方法是实施有效的QA管理,该管理为构建无缺陷产品提供工具和方法。本文将讨论如何改善软件测试过程并提高软件产品质量的最佳实践。
敏捷软件开发周期
测试流程应精心制定、定义和记录。好的文档是在软件团队内部建立有效沟通的工具。因此,有效的计划需要为项目创建质量和测试计划。让我们看一下支持质量保障流程中产出的主要文档类型。
测试政策是在组织级别创建的最高级别的文档。它定义了公司采用的测试原则和公司的测试目标。它还说明了如何进行测试以及公司如何衡量测试的有效性。
没有创建测试政策的标准方法,但通常包括以下内容:
质量管理计划是定义可接受的产品质量水平并描述项目将如何达到此水平的文档。这不是强制性文件,但是它将帮助你安排所需的所有任务,以确保项目满足客户的需求和期望。该计划的主要目标是支持项目经理,并通过定义要实现的角色、职责和质量标准来帮助组织流程。因此,它应包括软件的质量要求并描述应如何评估它们。
质量管理计划的关键组成部分:
测试策略是从业务需求规范文档衍生而来的更具体的产品级文档。通常,项目经理或业务分析师会创建测试策略,以定义用于实现测试目标的软件测试方法。测试策略由项目的业务需求驱动,这就是为什么它与项目经理的职责保持一致的原因。
测试策略的主要组成部分是:
在一个小型项目中,测试策略是测试计划的一部分。但是,对于较大的项目,项目经理必须将测试策略创建为一个单独文档,然后可以从该文档中进一步制定每个测试计划。
一个好的测试策略文档可以回答以下问题:
测试计划是描述要测试什么,何时测试,如何测试以及由谁进行测试的文档。它还描述了测试范围和活动。测试计划包括要运行的测试目标,并有助于控制风险。由经验丰富的人员(例如质量检查负责人或经理)编写测试计划是一个好习惯。
一个好的测试计划应包括所有必要测试活动的时间表,以控制团队的测试时间。它还应该定义每个团队成员的角色,以便每个人都清楚需要什么。没有通用的方法来创建测试计划,因为它取决于公司的项目流程、标准和测试管理工具。根据IEEE 829标准,测试计划文档应包含以下信息:
以下是一些使测试计划更有效的关键准则:
准备有效的测试用例是软件测试改进不可或缺的一部分。根据ISTQB(国际软件测试资格委员会)给出的定义,“测试用例是一组输入值,执行先决条件,预期结果和执行后置条件,针对特定目标或测试条件,例如执行特定程序路径或验证是否符合特定要求。”它是测试人员使用的关键手段之一。标准测试用例包括以下信息:
下面是ISTQB认证的测试用例示例:
使用以下实践来编写有效的测试用例:
准时写。编写测试用例的最佳时间是早期的需求分析和设计阶段。这样,质量专家可以了解所有需求是否都可以测试。
实施面向测试的管理方法是提高软件质量的好方法。实现此目标的方法之一是使用极限编程(XP),这是一种软件开发方法,旨在产生具有适应不断变化的需求的能力的更高质量的软件。本文重点介绍与测试密切相关的两种XP惯例:
测试驱动开发(TDD)是一种软件开发过程,在该过程中,在任何代码实现之前都要编写测试。TDD在重复非常短的开发周期的基础上采用了“测试先行”的方法。据此,每个新功能都从编写测试开始。开发人员在编写足够的生产代码来完成该测试之前,会先编写一个自动测试用例。该测试用例最初将失败。下一步将是编写侧重于功能的代码以使该测试通过。完成这些步骤后,开发人员将重构代码以通过所有测试。
以下是TDD的好处:
结对编程也是一种极限编程技术。这种开发方法需要两名工程师在一台计算机上协同工作。其中一个(驱动程序)编写代码,而另一个(导航程序)监视代码并在整个过程中提出建议。这些角色可以随时交换。在一台计算机上工作的两个开发人员将生产质量明显更高的软件。从长远来看,提高的代码质量可以减少项目的调试和重构成本。
结对编程的好处:
我们已经在极限编程内描述了测试驱动的编程实践。测试左移则是参考极限编程衍生一个很好的测试实践,该实践建议从项目开始过程,而不是传统方法的测试活动开始后才介入测试工作。
话虽这么说,重要的是要记住,右移策略也存在,并且意味着对完整产品的生产后测试。它涉及从真正的最终用户那里获得反馈,并根据这些评论提高质量。
正式技术评审(FTR)是软件工程师执行的一项活动,旨在在早期阶段揭示功能和逻辑错误。FTR是一个小组会议,在该小组会议上,具有特定角色的与会者确保开发的软件符合预定义的标准和要求。
进行FTR的最佳时间是在你拥有成熟的产品时。但这取决于评审的类型。典型的FTR需要由具有特定角色的工程师团队担任发言人、审稿人。在每次会议结束时,应准备一份评审报告以回答以下问题:
进行正式的技术评审有助于防止错误,并提前降低逻辑和实现错误的风险。它还可以帮助生产团队观察整个产品的功能,从而使开发更易于管理。
工作环境直接影响员工的生产力和工作态度。这里有一些方法可以创造舒适的工作条件,并使你的团队保持快乐,投入和高效。
测试包含由不同专家执行的各种活动。为了组织平稳运行的测试过程,在测试计划的计划阶段指定角色。质量保障中有六个常见角色:
每个角色都有自己的一套技能,职责和操作工具。要与你的质量检查团队进行适当的互动并了解每个职位的细节,请详细了解质量检查角色及其功能。
如果要实现高级质量目标,则需要在质量团队和开发人员之间建立相互尊重的信任关系。此外,最好搜索具有编码技能的人。显然,工程师会更尊重这样的测试人员。他们还将能够编写自己的一些测试工具。
质量团队负责人必须在团队会议上认识到团队的进步和成员的个人成就。
为你的质量团队提供必要的培训,以扩展他们的知识。你可以组织内部和/或外部培训课程以及团队建设练习,以改善整个团队的工作。质量小组负责人应组织头脑风暴会议,以激发团队集体创造力。这将有助于发明解决现有问题的新技术。
提高你的测试人员和开发人员以沟通效率。面对面的交流将有助于避免误解,并针对测试过程中遇到的问题分享有效的解决方案。你还需要一个优秀的团队负责人,他能够与测试人员有效地分享反馈和想法。质量经理应鼓励团队成员谈论可能影响生产力和效率的团队存在的问题和其他问题。在每个sprint或迭代结束时,由整个开发团队举行的回顾性会议是讨论成就,问题和下一步工作计划的方法之一。
让测试人员有机会在小组会议之外私下谈论事情也很重要。质量主管应保持灵活态度,并对新策略持开放态度,以最好地为团队服务。
在产品开发中,我们具有用户角色来确定你的产品的理想客户或典型用户。用户角色是一种虚构的角色,具有产品目标受众的行为模式和目标。质量检查团队使用角色来确定在哪里以及如何查找错误。但是,遵循角色指导不能预测行为模式的整个范围。为确保你的应用程序满足用户需求,请考虑让最终用户参与测试。
传统上,最终用户测试或用户接受测试是在软件开发的最后阶段进行的。吸引最终用户测试你的应用程序可以帮助发现通常可能找不到的错误。它还证明你的软件已经可以投入生产,并且可以在开发阶段/之后向开发人员提供用户反馈。
用户验收测试(UAT)可以通过多种方式进行。一般有5种UAT类型:
开发的任何类型的软件都有其用户文档(UD)。UD是有关如何使用应用程序或服务的指南或手册。因此,请确保还测试你的用户文档。你的软件手册也可以由一组最终用户测试人员进行测试。内部测试人员和技术作家负责结构和导航,而外部团队则帮助确定它是否实际可用。
在应用程序中加入用户入门也是一种很好的做法。用户入职包括一组方法,可帮助用户适应界面,导航以及总体上指导应用程序。例如,检查Canva–非设计师的设计师工具。Canva展示了用户使用视频,“做,展示,说”的方法以及整体用户友好性的一个很好的例子。如果你没有用户文档,而只选择入门指南,请确保与用户互动,以检查入门的帮助和有效性。
如果你确实想提高软件质量,那么绝对值得考虑使用自动化测试或使用自动化工具来运行测试。根据Capgemini,Sogeti和Micro Focus的《2020-2021年世界质量报告》,三个主要趋势中的两个是不断提高的测试自动化和敏捷方法的广泛采用。测试自动化可以节省时间,减少人为错误,提高测试覆盖率和测试能力,进行批处理测试和并行执行。以下是应用自动测试来增强流程的主要情况:
有各种各样的自动化测试工具。它们可以是开源的,也可以是商业的。Selenium,Katalon Studio,统一功能测试,Test Complete,Watir是最受欢迎的工具,值得首先检查。
尽管可以在传统的敏捷工作流中采用自动化测试,但它也是DevOps方法和持续集成实践的一部分。
持续集成(CI)是一种开发实践,要求工程师一天几次将更改集成到产品中。每个代码段都会在每次代码更改时运行“集成测试”,以快速检测错误和错误,并更轻松地定位它们。一个好的做法是将CI与自动化测试结合起来,以使你的代码可靠。Bamboo,Hudson和Cruise Control是开源工具,可用于在你的环境中引入持续集成。
持续交付(CD)被认为是敏捷原则的进化发展。这种方法意味着你可以以可持续的方式将更改快速发布给客户。CD允许在新代码就绪时承诺新代码,而无需进行短暂的发行迭代。通常,你会自动部署通过测试的每个更改。这是通过高水平的测试和部署自动化来实现的。
CI和CD实践需要连续测试,这将测试自动化提高到一个新的水平。他们在一个系统中组织了单独的自动化测试,使其成为CI / CD管道的一部分。
尽管测试自动化具有所有明显的好处,但它仍然具有一定的局限性。当必须从用户的角度审查产品时,自动化不是最好的选择,而应让给其他测试方法。
探索性测试和即席测试的主要思想是人类的创造力。两者都几乎不需要文档,受限制或没有计划,而且两者都是随机的,会发现异常的缺陷或其他结构化测试范围未涵盖的缺陷。
因此,探索性测试是调查没有预定测试用例的产品以检查该产品实际工作方式的过程。要发现错误,需要测试人员的经验,直觉和想象力。探索性测试是即时进行的,测试将立即设计并执行。然后观察结果并将其用于修复可能的错误并设计下一个测试。
这是测试可用性的最佳方法之一,因为它涉及尝试各种现实情况和用户行为。使用此技术,可以快速评估系统,获得即时反馈并发现需要进一步测试的领域。
探索性测试的主要挑战在于,由于没有计划的脚本或严格的结构,因此难以记录其执行,复制失败和报告缺陷。
该专案测试是基于错误的猜测技术测试的最自然和最正规的方法。它通常在所有其他测试之后进行,其主要优点是速度快,因为它不需要任何准备并且没有要遵循的结构化程序。它通常与所谓的“猴子测试”相关联,当对某些随机数据执行随机测试以破坏系统时,该测试便会发生。
这种混乱的检查可以帮助检测很难通过正式测试发现并且很难重现的缺陷。但是,临时测试的结果是不可预测的,而且是随机的。
上面的两种方法有很多共同点,并且经常被混淆。但是,也有一些差异:
最好的策略是用探索性和临时性测试来补充自动化测试。这样,你可以增加测试范围,改善用户体验并提出其他测试思路。
如果你仍然想知道如何改善软件测试,请确保可测量,记录,审查和跟踪质量目标。没有测量代码质量的唯一正确方法。最好的建议是选择对你的工作流程简单有效的指标。
CISQ软件质量模型定义了软件质量的四个重要方面:可靠性、性能效率、安全性、可维护性和交付速度。此外,该模型可以扩展为包括可测试性和产品可用性的评估。
让我们看一下软件质量的五个主要方面,并探讨如何衡量它们:
你可以通过测量可靠性,计算在生产中发现的bug的数量,或可靠性测试,具体而言,负载测试,支票如何在高负荷下的软件功能。也可以是回归测试,它可以 在软件进行更改时验证新缺陷的数量。
良好的缺陷报告将通过清楚地识别问题并以这种方式引导工程师解决问题,从而帮助提高软件测试的效率。它必须是质量专家和开发人员之间沟通的基石和有效形式。报告写得不好会导致严重的误解。以下是有效的缺陷报告的指导原则:
最新的自动化测试工具与缺陷跟踪系统进行了内置集成。他们可以自动报告缺陷并跟踪其状态。也有单独的缺陷报告工具,例如JIRA或Mantis。
测试管理工具是可帮助质量小组构建和管理测试过程的软件产品。此类平台可以与你的测试自动化框架、CI / CD工具、缺陷跟踪工具和其他软件解决方案集成。它们能提供以下能力:
选择时,你必须在一个开源平台和商业平台(快速、易于使用,功能丰富且价格昂贵)之间做出选择。通常,对于小型公司来说,开源工具是一个不错的选择。
市场上有各种各样的测试管理工具可以满足不同的需求和预算。以下是一些流行的平台的简要概述。