在撰写此答案时,我已经意识到这与测试无关,而与文档有关。您应该先阅读敏捷宣言:
[我们重视] 工作软件胜于完整的文档
因此,您应该使您的规范可执行,即将它们编写为一套全自动测试。
根据故事写规范是个好主意吗?
是的,恕我直言,是的。它被称为“行为驱动的开发”或“示例规范”。在红宝石中,有一个很棒的工具黄瓜可以帮上大忙。
现在的问题是,因为故事太多,对于系统中与故事相关的任何部分,现在还不清楚。
您为什么要弄清楚?我的意思是,您真的需要“测试/代码”可追溯性矩阵吗?将测试写为规范的优点是您不需要单独的“需求/测试”可追溯性,因为测试成为了要求。为了进行集成测试,您应该将软件视为一个整体,而不是单独的部分。
您可能需要使用覆盖率工具来查看是否存在“死”模块,即规范测试未涵盖的系统部分。但是您真的不应该在乎此特定代码对应什么规范。反之亦然:从特定的规范中,您应该知道系统的哪一部分对应于它。您不必担心规范中的某些重复。而且,如果将DRY原理应用于您的代码,将有数十个规范执行同一代码。
它可以在开发人员时发挥作用,开发人员的每一次冲刺都只是获得一个规范,概述他们需要做的事情和需要进行的更改。但是就维护此故事列表和进行测试而言,它开始变得很难跟踪错误,并且通常只是维护规范,因为屏幕上的一项功能可能已经记录在许多不同的地方按故事拆分。
数百个集成测试因关键模块中的一点改动而中断,这种情况并不少见。这就是单元测试的步骤。
您应该这样构造测试,以便可以判断特定测试是否满足高级别要求,或者仅满足其细微的细节。如果是后者,则应将此测试与集成测试套件分开。单元测试的目的是本地化错误。这样,如果您引入一个错误,将只有一个测试失败。
我们写故事的方式有误吗?
我认为,您只需要按用户(例如“客户”,“助手”)或功能/屏幕/工作流程(“购买”,“退款”)将故事组织成史诗。
同样,规范测试不能代替单元测试。阅读更多