Context: It is an enigma that agile projects can succeed 'without requirements' when weak requirements engineering is a known cause for project failures. While agile development projects often manage well without extensive requirements test cases are commonly viewed as requirements and detailed requirements are documented as test cases. Objective: We have investigated this agile practice of using test cases as requirements to understand how test cases can support the main requirements activities, and how this practice varies. Method: We performed an iterative case study at three companies and collected data through 14 interviews and two focus groups. Results: The use of test cases as requirements poses both benefits and challenges when eliciting, validating, verifying, and managing requirements, and when used as a documented agreement. We have identified five variants of the test-cases-as-requirements practice, namely de facto, behaviour-driven, story-test driven, stand-alone strict and stand-alone manual for which the application of the practice varies concerning the time frame of requirements documentation, the requirements format, the extent to which the test cases are a machine executable specification and the use of tools which provide specific support for the practice of using test cases as requirements. Conclusions: The findings provide empirical insight into how agile development projects manage and communicate requirements. The identified variants of the practice of using test cases as requirements can be used to perform in-depth investigations into agile requirements engineering. Practitioners can use the provided recommendations as a guide in designing and improving their agile requirements practices based on project characteristics such as number of stakeholders and rate of change.
翻译:语境:敏捷项目能在“没有需求”的情况下成功这一现象令人费解,因为薄弱的需求工程是导致项目失败的已知原因。尽管敏捷开发项目通常能在没有广泛需求文档的情况下良好运行,但测试用例常被视为需求的体现,且详细需求也会以测试用例的形式记录。目的:本研究调查了这种将测试用例作为需求的敏捷实践,旨在理解测试用例如何支持主要需求活动,以及该实践在不同情境下的变化形式。方法:我们在三家公司的迭代案例研究中,通过14次访谈和两个焦点小组收集数据。结果:将测试用例作为需求在需求获取、验证、确认和管理过程中,以及作为文档化协议使用时,既带来益处也存在挑战。我们识别出测试用例作为需求实践的五个变体,即事实性(de facto)、行为驱动(behaviour-driven)、故事测试驱动(story-test driven)、独立严格(stand-alone strict)和独立手动(stand-alone manual)。这些变体在需求文档化的时间框架、需求格式、测试用例作为机器可执行规范的程度,以及支持该实践的特殊工具使用方面存在差异。结论:研究结果为敏捷开发项目如何管理和传递需求提供了实证洞见。识别出的测试用例作为需求实践的变体可用于深入探究敏捷需求工程。从业者可依据利益相关者数量、变更速率等项目特征,将本文建议作为设计和改进敏捷需求实践的指南。