将功能测试与非功能测试分开的利弊是什么?通常,人们担心的更多是将精力集中在一个团队中,组织测试套件,对不同类型的测试应用不同的策略还是什么?
#1 楼
为什么要将系统的功能/非功能方面分开对作为测试员来说很重要
我在项目一开始就做出了这样的区分(在起草战略或实施过程中)它)。它有助于使非功能性或“隐式”(对于被忽略,遗忘或完全忽略的另一个词)的需求足够“显式”地涉及到每个人。这使我能够确定并交流我们将重点放在哪里(以及多少),以及我们打算如何在一段时间内迎合系统的关键非功能性方面的原因(为什么我要说一段时间是在阐述非功能性要求)。
这当然很好;因为作为项目的“头灯”,您想要照亮未来的一切。
做出这种区分并将其包含在您的计划中的几个示例/好处可能是
作为测试人员,我不编写单元测试(由开发人员作为
TDD的一部分编写),但是由于单元测试可以满足非功能性需求,例如
可测试性,可维护性或可扩展性;我可以始终将其作为策略的一部分,并指出正确的参考或缺乏参考的信息。
类似地,我不是安全专家,但我可能会强调安全性
或脆弱性作为合理的关注点,并让专家处理。一旦我们注意了他们;在项目的整个生命周期中,都必须不断努力。迈克·科恩(Mike Cohn)称这些约束为“约束”,并说这些类似于我们在此博客的每个敏捷冲刺中必须缴纳的税款。
我主要从Brian Marick的测试象限中得出功能/非功能区别。 Lisa Crispin和Janet Gregory在《敏捷测试》一书中也对此进行了详细阐述。
对我来说,面向业务的测试主要是功能测试,而面向技术的测试可以弥补非功能性需求。
评论
我认为您已经接近我想要理解的内容,但是我很难将其从本文的其余部分中删除。您能否重组您的帖子,以便它回答我首先提出的明确问题,要点或以其他方式将它们与其他讨论区分开?我也对讨论感兴趣,但是我很难理解什么是直接答案,什么本质上是精心设计。
– Ethel Evans
11年7月20日在19:51
@Ethel ..更新/重新安排了内容。我希望现在这是有道理的:-)
–拉杰涅什(Rajneesh)
2011年7月21日在16:12
#2 楼
我们对事物进行分类是因为我们认为我们需要区别对待类别。在不知道如何使用答案的情况下,很难就分离功能测试和非功能测试为何如此重要发表意见。重要的目的是什么?有时,人们在这些论坛中提出这样的问题,因为他们在求职面试或教室中没有答案。在这种情况下,这个问题似乎比实际的更为重要。在我看来,“非功能性需求”只是一种笨拙的方式来表达“隐含性需求”或“不言而喻的需求”或“不说而已” “。
出于预算目的,区分功能测试和非功能测试似乎很重要。某些非功能性需求已被不同地对待,因为它们已成为专业化产品,例如国际化测试和安全性测试。有时,专业化服务外包给其他团体或其他公司,因为维护内部专业知识过于昂贵或耗时。
在我看来,非功能性需求的测试计划必须与功能性需求一样明确。一旦明确了测试计划,二分法就不再重要了。
评论
这也是我一直以来一直在研究的方法,尽管自从我收到上一份具有粘结剂大小的业务需求文档以来,我还没有看到过使用的术语。我发现在上下文相关的敏捷环境中,这种区别往往会被完全消除
– Lyndon Vrooman
2011年7月19日在10:03
#3 楼
我将其更多地看作是跟踪问题,尽管未曾回顾过并可能会说我们在其他某种测试中涵盖了这一点,但我并未做过很多非功能性测试(至少我不会称之为) 。通常,在进行项目工作时,我会查看功能需求并开始进行任务/测试/检查,否则需求中未包含的所有内容都可能被认为是非功能性的,但我从来没有这样称呼过。如果您浏览Wikipedia,我们可能都已经做到了:http://en.wikipedia.org/wiki/Non-functional_testing
尽管我也从未完全理解过他们对需求行为的定义。 http://en.wikipedia.org/wiki/Non-functional_requirements
#4 楼
每当您将测试分组为一组测试时,您都可能会按照某个类别进行分组。例如,我们有几套功能测试可针对每个日常构建进行测试。我们还针对安全性,电池,可靠性(非功能类别)进行了其他测试。其中一些套件的运行频率较低。尽管我们不一定要明确区分结构,功能,非功能或行为测试,但这些类别有助于我们对测试套件进行建模,因此我们可以针对特定重点领域设计测试。
#5 楼
让我们考虑一下两者之间的区别:功能需求(FR)往往由客户/最终用户明确要求,并且通常用“必须做到这一点”或“它做到”来表示。绝对不能这样做”。
非功能性需求(NFR)可能含糊或泛泛(例如,符合ISO 12345标准),或者有经验的事情提醒您要做(例如,使用良好的编码标准,考虑安全性等)。
当分析师捕获需求时,我们将它们分开对待,因为在需求分析级别它们是不同的东西……但是一旦被整理成规范(以任何形式),它们便成为需求。
因此,作为测试人员,不需要区分。重要的是您的测试涵盖了所有需求(功能性和非功能性),并且存在足够的测试用例来证明所有需求均已得到充分满足。
实际上,即使作为开发人员,两者之间的区别也是模糊的也是-重要的是代码(或开发过程)满足了所有要求。帽子:
虽然我了解区别,但对我来说从来都不是重要的区别。
我会同意这一点。
#6 楼
我没有将其视为重要的区别-也许是因为我的测试团队很小,并且负责他们项目的所有测试。我对“此人进行功能测试”和“该人进行非功能测试”的水平没有专门知识。最好理解可能的测试的深度和广度,因为您可以决定要对给定项目进行哪些测试,不进行测试。
#7 楼
重要的是要确保两者都被覆盖。将它们分开有助于确保这一点。
彼此区别和定义并不重要-其他人可以解决-分离方法更简单的事实确保针对他们的目的正确使用它们。
#8 楼
每个软件测试公司都会在项目中执行功能和非功能测试。将功能测试与非功能测试分开的主要原因是,应根据项目的要求进行覆盖。功能测试可确保应用程序正确满足要求或规格。非功能测试是一种软件测试,用于验证应用程序的非功能需求。它验证系统的行为是否符合要求。它测试功能测试中未测试的所有方面。
评论
我真的很想听听那些确实理解为什么有时会做出这种区分的人。显然,这对某些人来说很重要,否则我们不会问到X测试适合哪个类别(X是可访问性,安装等)的问题。想知道现在它是否已经变得“更重要”和“不太重要”了:-|
@巴拉特这是谁的报价?