当前位置: 首页 > 科技观察

功能测试与非功能测试:是非此即彼的选择吗?

时间:2023-03-13 16:12:24 科技观察

译者|李锐审稿人|孙淑娟功能测试和非功能测试是流行的对不同类型的软件测试进行分类的方法。这两个类别指的是测试过程的性质和正在测试的内容。如果您以前从未深入研究过这两个测试类别,则需要了解什么是功能测试和非功能测试。首先,功能测试和非功能测试之间的区别并不是一成不变的,对于某些测试类型来说,对它们进行分类并非易事。其次,功能测试和非功能测试对于软件测试项目的成功都是至关重要的,尽管方式不同。下面将仔细研究功能需求和非功能需求之间的区别,这两种类型的测试适合软件测试过程,以及它们如何影响测试成本。什么是功能测试?根据国际软件测试资格委员会(ISTQB)的定义,功能测试是检查组件或整个系统功能的测试。简而言之,功能测试可帮助企业确保软件产品的特定功能完全按预期工作。举个例子,汽车类比一个软件产品,它的功能需求就是汽车从A点开到B点的能力,换句话说,就是你希望产品每次都能做到完美你想使用它,为什么要使用它。什么是非功能测试?国际软件测试资格委员会(ISTQB)将非功能测试定义为一种处理与系统功能无关的组件的测试。非功能测试的范围可能是无穷无尽的,并且在很大程度上取决于产品的具体情况。非功能性需求更多地与产品如何为最终用户工作有关,而不是与预期结果有关。使用汽车类比,非功能性需求可以是任何东西,从汽车的最高速度到在汽车收音机上找到所需电台所需的步骤数。为什么功能测试和非功能测试之间存在差异?功能测试和非功能测试之间没有区别,因为这两种类型的测试彼此独立。它们对于质量保证(QA)工程师来说太重要了。对大多数QA工程师来说,重要的是测试的结果,一个没有错误、错误和不一致的软件产品。质量保证团队负责人IgorKovalenko表示:“由于我们正在为最终用户测试产品,因此我们非常关心用户如何接收产品并与产品互动,这反过来会给客户带来期望的结果。”功能性和非功能性测试之间存在差异的最大原因是客户的便利性。通过明确的类别和分组方法,客户可以更轻松地选择对他们的项目至关重要的测试类型以及与他们的需求不特别相关的测试类型。功能测试与非功能测试:主要区别哪些类型的功能测试和非功能测试最重要?为什么?今天有几十种功能和非功能测试类型,每一种都有自己的重要性。所以不要急于说某些类型的测试对项目来说比其他类型的测试更重要,因为没有适用于每个项目的通用测试集。尽管如此,仍有几种类型的功能和非功能测试执行得特别频繁,如果执行得当,会对最终产品的质量产生特别显着的影响。以下是其中一些测试类型。(1)功能测试功能测试技术帮助质量保证(QA)团队了解产品是否满足开发人员为其设定的初始要求。每天执行的功能测试有很多种,这里介绍三种最常见的。用户界面(UI)测试。在大多数情况下,GUI是观众与产品交互的唯一方式。一个糟糕的界面是一个致命的障碍,它会阻止用户访问产品的某些功能,甚至根本无法使用它。从功能验证到拼写,有许多不同的用户界面方面需要测试。单元测试。在单元测试的帮助下,质量保证(QA)工程师在测试新创建或最近更新的软件产品时可以尽可能精确。单元测试处理最小的代码片段,可以手动完成以获得最大精度,也可以自动完成以获得最大效率。安全测试。软件系统的安全性一直很重要,但随着2019年新冠疫情的爆发,其重要性达到了历史最高点。由于风险空前高涨,许多企业无法承受数据安全和品牌忠诚度方面的任何安全风险。一些企业专门从事安全测试,但它也可以作为功能测试包的一部分来完成。(2)非功能测试非功能测试处理的是系统作为一个整体如何运行,而不是它所包含的具体功能。当然,系统的每个非功能测试本身都很重要,但某种类型的非功能测试适用于任何软件项目:用户体验(UX)测试。这种类型的测试有助于开发人员了解最终用户操作产品的难易程度。UX测试通常与UI测试一起提及,但它们在不同级别的用户故事上运行。用户UI测试确保界面的所有方面都存在并正常工作,而UX测试确保它们都有助于令人满意的用户旅程。质量保证(QA)团队负责人AndriiNikitenko说:“UX测试和UI测试是不同类型的测试,它们不能一起使用。UX是一种非功能测试,而UI是功能测试。没有任何类型的产品可以跳过这些类型的测试。即使产品没有用户界面,最终用户仍会以某种方式与之交互,这就是为什么UX测试和UI测试都必不可少的原因。而且它们不可互换。例如,一个应用程序可能有一个按钮,从UI的角度来看,它看起来很正常,但在某些屏幕上却显得太小了。当最终用户主要在这些屏幕上使用产品时,用户体验就会受到影响。》性能测试。性能测试既是分析软件产品的应用程序大小、速度和可靠性的测试;它也是一组功能测试,可能包括压力测试、负载测试、配置测试、峰值测试、可扩展性测试、等等这些非功能测试可以保证在任何情况下性能稳定兼容性测试鉴于一个企业的软件产品可以在多个平台上使用,兼容性测试是项目要考虑的最重要的非功能测试之一类型。QA团队会针对不同类型的硬件、软件、移动设备、操作系统及其版本、浏览器和网络来测试企业的应用程序,以确保它们的性能始终如一。有时被忽视但仍然非常重要的测试类型根据经验在软件测试公司中,有两种主要类型的客户需要QA服务。第一种类型e完全取决于QA团队在过程的每个阶段的专业知识,包括测试类型和测试范围的选择。第二种类型有一组特定的要求和需要完成的测试类型。然而,在第二种情况下,通常存在测试计划中缺少某些基本类型测试的风险。这些是有时被忽视但不应该测试的三种类型:安装测试。用户与产品交互的方式受到了很多关注,但它在应用程序首次启动之前就开始了。准确地说,当应用程序或其他类型的软件产品安装在用户的设备上时,它就会启动。用户在使用过程中遇到的障碍越少,他们对产品的满意度就越高。本地化测试。很少有软件产品(例如网站或应用程序)仅在一个国家或地区可用。您的产品发布覆盖的世界越多,您就越需要关注适当的本地化。它涉及从正确的时间和日期格式和货币设置到遵守每个国家/地区的法律法规的所有内容。集成测试。在系统测试的层次结构中,首先是单元测试,然后是集成测试,最后是系统测试。当然,没有人会忽视单元测试以测试产品的各个组件或系统测试以了解它们如何相互交互。尽管如此,集成测试处理的是分组的软件模块,有时会被错误地视为事后才想到的。功能和非功能测试:它们在测试过程中的位置?制定详细的测试计划和设计测试过程对于确保整体测试工作良好至关重要,系统的功能和非功能方面都是测试的方法之一。但是功能测试和非功能测试与测试过程之间的关系在哪里呢?关于一般测试过程需要了解的事情之一关键问题是没有适用于每个项目和场景的通用方法。相反,对于每个新的测试项目,工程师都会考虑从项目规模到目标受众的数十种不同因素。作为软件测试公司的经验法则,通过查看代码随附的文档来开始每个测试项目。文档本身就应该提供足够的信息来帮助正确设计测试过程并确保它不会遗漏任何重要的事情。但是,在某些情况下,文档缺失或不足。在这种情况下,QA工程师首先会借助探索性测试之旅进行探索性测试。它通常被认为是一种单独的测试技术,不属于功能或非功能测试的范畴。它帮助工程师规划测试过程并决定需要测试哪些产品功能和非功能需求。或者,当软件产品具有相对标准的规范和体系结构时,可以执行基于清单的测试。一旦探索性测试产生了可靠的结果,工程师就可以看到即将进行的测试过程的全局和细节。通常,首先测试产品的功能方面,然后是非功能方面。然而,这并不是唯一正确的做事方式。可以在功能测试或探索阶段测试产品的一些非功能方面。例如,一位经验丰富的QA工程师发现了产品的可用性和UX问题,同时仍在定义测试范围。变更相关测试及其重要性虽然最常见的软件测试分类方法是将所有测试类型分为功能测试和非功能测试,但许多专业的QA工程师现在区分了第三类软件测试,即与变更相关的测试。顾名思义,与变更相关的软件测试仅在对代码进行多次更改后才会发生。这包括冒烟测试、完整性测试、回归测试和重新测试。然而,从软件测试过程的角度来看,与变更相关的测试可以在任何阶段进行,无论是在产品的功能组件和非功能组件发生变更之后。执行与变更相关的测试(最重要的是回归测试)可以将公司的产品发布延迟数周。但是,它是经过良好测试的产品最关键的方面之一。与更改相关的测试可以帮助企业确保产品的功能和非功能方面都不会受到最近代码更改的负面影响,并且如果没有及时进行回归测试,旧错误不会重新出现。功能和非功能测试:成本方面无论企业是从头开发软件项目并最终对其进行测试,还是准备发布最近完成的产品并将软件测试视为未完成和已完成项目之间的最后边界,成本都很重要.(1)功能和非功能测试如何影响成本?对于大多数软件产品所有者而言,测试项目的成本是测试服务质量之后的下一个大问题。由于在开发过程中投入了大量资源,大多数开发人员和产品所有者在测试时无法承担类似的成本。这就是为什么他们经常想知道功能和非功能测试对测试项目总成本的影响。这里需要理解的重要一点是,企业测试计划的预算并不是由其选择的协作模型需要执行的功能和非功能测试来定义的。QA工程师不会对特定类型的测试收取更多费用,除了少数优秀的测试类型,包括安全测试、UX测试和性能测试。这就是为什么在编制项目预算时不应区分功能测试和非功能测试的原因。(2)影响测试成本的因素一个测试项目的成本除了选择的合作模式、项目规模等最明显的因素外,还有一些其他因素直接影响到整体价格。以下五个因素以一种或另一种方式存在于每个测试项目中。团队规模、资历和位置。QA团队的选择是建立新测试项目的最关键方面之一,包括其成本。团队规模和资历水平背后的逻辑很简单,但团队的位置也很重要。例如,在乌克兰雇用一个QA团队比在美国或西欧雇用同一个团队的报酬要低得多。功能复杂性。企业的员工不需要是软件工程师,应用程序了解的功能越多,测试它所需的资源就越多。例如,在包含数千种产品的电子商务网站上执行测试总是比测试具有单一核心功能(如闹钟)的应用程序更昂贵。UX和UI的复杂性。您的产品可能具有最具开创性的功能,但如果与无法导航、漏洞百出或外观和感觉过时的界面搭配使用,它就没有多大价值。公司产品的UI元素越多,用户与产品交互的方式就越多,这部分测试就会越复杂,成本也越高。手动和自动测试的数量。人工测试和自动化测试的数量都会影响软件测试项目的成本,但方式不同。许多QA工程师的共识是,虽然测试自动化的设置成本更高,但从长远来看,它通常被证明更具成本效益,因为测试可以重复使用。相比之下,手动测试需要人工执行,因此其成本不会随着项目的进展而发生太大变化。功能和非功能测试的数量。功能测试的范围超出了测试产品的功能。单元测试、系统测试和用户验收测试的数量会影响项目的成本。非功能测试也是如此。企业希望进行的安全、性能、兼容性等非功能性测试越彻底,其项目的成本就越高。QA团队负责人AndriiNikitenko说:“项目的持续时间取决于产品的复杂性、需求的清晰度、团队之间的沟通水平、客户回答问题的准备程度、项目尺寸、技术范围、平台类型和屏幕尺寸。数量。一件物品的成本取决于类似的因素。(3)功能测试和非功能测试的投资回报率投资回报率在软件测试界是一个颇具争议的话题。有人说没有确定的方法来计算软件测试的投资回报率,而其他人甚至声称计算软件测试的投资回报率是一个神话。很多时候,真相就在其中。不幸的是,计算软件测试工作的投资回报率非常困难:可以确定测试项目的成本,但不能确定它将如何影响业务利润。功能性和非功能性软件测试本身都不会产生利润。但在及时测试的帮助下,企业可以通过防止软件错误、安全问题、可用性问题和其他对上述状况产生负面影响的因素来改进其产品在市场上的表现,从而提高利润。那么在ROI方面,功能测试和非功能测试有区别吗?如果你看看这两个测试在测试过程中的位置,你会发现功能测试通常比非功能测试发生得更早。越早发现错误,修复它们所花费的资源就越少。此外,功能性错误通常更容易定位,尤其是在有足够文档的情况下。所有这些使得功能测试具有明显的成本效益。另一方面,非功能测试通常发生在软件产品开发的最后阶段,有时甚至发生在产品发布之后。在这一点上,修复错误需要更多的时间和费用。此外,非功能性错误通常更难发现,因为它们涉及软件产品操作的更精细方面。但是,请始终牢记,不应将非功能测试视为功能测试的次要测试。这些类型的测试直接影响企业对软件产品的接受程度,因此即使投资回报率(ROI)与其预期不同,这也不是限制测试工作的理由。(4)是否可以跳过某些类型的测试步骤以节省成本?在每种情况下,测试范围都由本文前面讨论的因素定义。然而,在大多数情况下,QA工程师对软件产品进行功能和非功能测试。这样做是为了使测试过程全面有效,这将导致经过彻底测试的产品,并将失败的可能性降至最低。如果你在谈论一个抽象的软件产品,那么是的,如果你缺乏资源,你有时可以缩小测试范围。但是,企业的测试项目仍然需要包括功能测试和非功能测试。OnlyinNon-functionaltesting只能在开发不打算与用户交互的产品时完全跳过,例如没有用户界面的实用软件产品。即便如此,企业可能还需要测试其性能、安装、承受不同负载的能力,以及其他影响软件产品成功的因素。为什么非功能测试在投资时间和成本方面与功能测试一样重要关于功能测试的重要性通常没有太多争论,因为它直接处理产品的预期功能-这就是设计它的目的的目标。然而,对于那些刚接触软件开发和测试的人来说,非功能测试似乎并不重要。此外,由于非功能测试通常是资源密集型的,因此产品所有者常常想知道是否值得投资。非功能测试不足或缺失的软件产品在市场上的表现永远不会像每个非功能方面都经过尽可能详细测试的产品那样好。所以这里的工作不是试图减少非功能测试来减少资源消耗,而是找到一个符合业务需求和预算的QA团队。根据QA团队负责人IgorKovalenko的说法,“在当今时代,几乎没有任何行业或产品类型可以将非功能测试视为事后的想法,因为产品的每个新功能都是为最终用户设计的。”结论将测试分为功能性和非功能性只是对软件测试进行分类的一种可能方式,但这是一个非常重要的区别。本文旨在说明功能测试和非功能测试对于企业软件项目的成功至关重要。如果企业希望其产品根据功能要求工作并受到客户的欢迎,那么跳过任何类型的测试或将其重要性降至最低最终将适得其反。另一方面,根据您的项目规范和内部资源设计全面的测试计划是一种最终会得到回报的策略。原标题:功能测试与非功能测试:你能有一个没有另一个吗?,作者:安娜·史密斯