Testing 需求和测试用例之间的关系是什么?

Testing 需求和测试用例之间的关系是什么?,testing,requirements,Testing,Requirements,我看到有许多系统用于测试用例可追溯性的需求,我开始问自己这两个人工制品之间的关系是什么。例如,为什么有测试用例的概念,而不是仅仅称之为详细需求?测试用例实际上是需求集的细化吗?如果测试用例不是需求,并且要求的比文件化的需求更多(例如测试更多的错误等),那么需求集肯定是不完整的吗?需求只是抽象的测试用例吗?测试用例不是细化的需求。当然,它们可能需要的不仅仅是文档化的需求,因为需求是您的设计的基础,而您的测试用例需要这些基础。这不是需求集不完整的问题 此外,需求还可能包括非功能性需求,您可能根本无法

我看到有许多系统用于测试用例可追溯性的需求,我开始问自己这两个人工制品之间的关系是什么。例如,为什么有测试用例的概念,而不是仅仅称之为详细需求?测试用例实际上是需求集的细化吗?如果测试用例不是需求,并且要求的比文件化的需求更多(例如测试更多的错误等),那么需求集肯定是不完整的吗?需求只是抽象的测试用例吗?

测试用例不是细化的需求。当然,它们可能需要的不仅仅是文档化的需求,因为需求是您的设计的基础,而您的测试用例需要这些基础。这不是需求集不完整的问题

此外,需求还可能包括非功能性需求,您可能根本无法提供这些需求的测试用例

对我来说,从需求到测试用例的可追溯性是一种确保所有功能需求都得到考虑并且一切都以正确的方式工作的方法。如果您在过程中的某个地方失去了可追溯性,这意味着您有一些需求,您可能无法知道它在设计中的哪些地方得到了满足。如果你能说出你的需求在设计中的什么地方被考虑,但是你没有追踪到那个地方的测试用例,那么这仅仅意味着你错过了测试这个需求


总之,这种可追溯性确保您的测试用例覆盖所有功能需求。然而,您可以有更多的测试用例,以及更多的(非功能性)需求。

据我所知,需求比测试用例更一般

例如,要求是:该方法不应接受18-64范围之外的数字。测试用例可以是这样的:

  • 提供17作为输入
  • 提供65作为输入
  • 提供-1作为输入
  • 但在很大程度上,这是开发团队内部的共识


    Thomas

    在TDD中,测试用例是需求


    但是有些需求是不可测试的,或者需要庞大的测试设施。

    实际上,这取决于团队/组织使用的开发过程

    • 在敏捷(Scrum、XP和变体)过程中,通常没有需求,验收测试用于验证用户故事是否正确实现。因此,用户故事是某种需求/规范

    • 在测试驱动的开发中,测试是需求

    • 在瀑布式开发中,您通常创建一个文档,列出软件的所有需求,并与涉众一起批准。然后根据这些需求进行开发,并根据这些需求测试软件。正如Frank的回答中提到的,在这个过程中,您需要从需求到测试用例的可追溯性,因为CMMI要求您测试所有需求

      • 就我而言

        需求可以追溯到一组面向满足需求的规范。 然后,一个规范被追踪到用于验证规范的测试用例

        因此,您可以将测试用例追溯到需求

        我看到有许多系统用于测试用例可追溯性的需求,我开始问自己这两个人工制品之间的关系是什么。 例如,为什么有测试用例的概念,而不是仅仅称之为详细需求?测试用例实际上是需求集的细化吗

        我认为这种区别只是指它们是什么时候产生的,是为了什么目的。在我们了解很多具体实现细节之前,需求很早就产生了。我们试图保持它们的实现中立,使它们更抽象

        测试脚本的目的有些不同。需求告诉开发人员系统应该做什么,而不是如何做。然而,测试用例(正如它们经常被编写的那样)精确地指定了如何做某事,并且它们经常引用实际的实现细节

        如果测试用例不是需求,并且要求的比文件化的需求更多(例如测试更多的错误等),那么需求集肯定是不完整的吗

        是的,要求集不完整。这始终是因为,无论您工作多长时间,您都无法完全记录所有用户或干系人的所有期望

        但是测试用例也不完整。完全的测试是不可能的。任何一组测试都是所有潜在测试的样本集。然而,测试通常在稍后阶段完成,当我们对需求了解更多时,因此测试可以更具体、更详细、更完整,而不是完全完整

        看看:

        在本文中,作者解释了如何从用例到测试用例。作者的观点是,虽然用例包含所有流和子流,但测试用例是通过系统的特定数据和特定流

        需求只是抽象的测试用例吗

        我会说是的,他们可以这样看待。有些人甚至不编写测试用例,只是将需求用作测试的“检查表”

        从测试用例到需求的可追溯性是一个非常好的想法,也是一种非常流行的方法。工具实现此功能是因为它很畅销。但这种方法存在局限性和陷阱。当工具高兴地报告100%的覆盖率时,通常会产生一种错误的完整性感觉,因为您碰巧对每个需求都有一个测试。它并没有真正解决一些需求需要的不仅仅是一个测试的问题。它也不考虑测试内容,也不考虑