我看到有许多系统用于需求与测试用例的追踪,我开始思考这两个文档之间的关系。比如说,为什么要有测试用例这个概念,而不是只叫它们详细的需求呢?测试用例是否实际上是对需求集的细化?如果测试用例不是需求,需要比记录的需求(例如测试更多错误等)更多,那么需求集肯定是不完整的?需求只是抽象的测试用例吗?
我看到有许多系统用于需求与测试用例的追踪,我开始思考这两个文档之间的关系。比如说,为什么要有测试用例这个概念,而不是只叫它们详细的需求呢?测试用例是否实际上是对需求集的细化?如果测试用例不是需求,需要比记录的需求(例如测试更多错误等)更多,那么需求集肯定是不完整的?需求只是抽象的测试用例吗?
实际上这取决于团队/组织所使用的开发流程。
在敏捷(Scrum、XP和变体)流程中,通常没有需求,验收测试用于验证用户故事是否正确实现。因此,用户故事是某种需求/规格说明。
在测试驱动开发中,测试就是需求。
在瀑布流模型中,通常创建一个文档列出软件的所有需求,并与利益相关者批准。然后根据这些需求进行开发并测试软件以符合它们。正如弗兰克的回答中提到的那样,使用这个流程需要从需求到测试用例的可追溯性,因为CMMI要求您测试所有需求。
测试用例并不是精细化的需求。当然,它们可能需要比记录的需求更多,因为需求是设计的基础,而设计又是测试用例所必需的。这并不是需求集不完整的问题。
此外,需求还可能包括非功能性需求,对于这些需求,您可能根本无法提供测试用例。
对我来说,从需求到测试用例的可追溯性是确保所有功能需求得到考虑并且一切正常运行的一种方式。如果您在某个地方失去了可追溯性,这意味着您有一些需求,您可能无法确定在设计中满足了哪些要求。如果您可以确定您的需求在设计中得到了满足,但是您没有将其追溯到测试用例,则仅意味着您错过了测试此需求的机会。
因此,总之,这种追溯性确保您的测试用例涵盖了所有功能需求。尽管如此,您可以拥有更多的测试用例,以及更多(非功能性)需求。
据我理解,需求比测试用例更为一般。
例如,一个需求可能是:该方法不应接受18-64范围之外的数字。而测试用例则可能是:
但总的来说,这是开发团队共同理解的问题...
Thomas