不确定在编码方面(取决于情况和代码是如何实现的),但我可以从测试的角度回答(到目前为止,2 年,超过一半的传统瀑布系统迁移到敏捷)。
我测试的 Web 应用程序类似,因为我们有三种用户类型(全局)和三种用户角色(与“项目”相关联,即站点桶,站点作为图像桶,如果好奇,请查找 EyeQ)。因此,9 个可能的组合,其中 8 个可以创建一个站点。当前的回归程序文档有超过 100 个测试用例,其中 20 个左右是编辑/创建/删除站点。总体总计:500 多个测试用例大部分是手动运行的(正在努力使它们自动化,但需要时间,因为我们已经通过 UI 重新启动)。
无论如何,由于 UI 的全面更改,我不得不重写我们的一些手动程序,并试图避免在我之前犯下的作者所犯的错误,例如你所描述的错误(过度重复,也就是重复使用相同的测试 3 次,略有变化)。
我没有坚持他们编写用例的策略,而是使用循环(编码中也适用相同的术语)——也就是说,每次通过使用一个角色类型组合的测试用例。与其为每个角色/类型编写相同的测试用例 3 次以上并分别执行每个测试用例,不如使用该过程一次,但在最后添加几个步骤。
示例测试用例:用户可以创建一个站点(8/9 的类型角色组合可以在我的应用程序中执行此操作)
在我进来之前他们做了什么:测试用例 1- 未绑定到项目的系统管理员可以创建站点(10 个步骤);测试用例 2- 具有项目角色的系统管理员可以创建站点(相同的 10 个步骤);测试用例 3- 未绑定到项目的帐户管理员可以创建站点(与第一个案例相同的 10 个步骤);测试用例 4- 具有 proj 角色的帐户管理员可以创建站点(同上);测试用例 5... 等等
我做什么:测试用例 1:使用组合 1 以用户身份执行 10 步,第 11 步 - 以该组合注销,使用组合 2 以用户身份登录并重复 1-10,第 12 步 - 以用户身份从第 11 步退出以用户身份使用组合 3 并重复 1-10,...
区别:3+ 测试用例或 30+ 步骤执行(在这种情况下,大约 100)vs 1 测试用例:20 步以下
不过,请谨慎对待,这取决于您的问题类型。如果它确实是重复的(如示例),请尝试尽可能多地循环。
优点是,当您建立一个自动测试框架时,测试用例中的一个简单的 for 循环会使用数组对象或结构作为输入。缺点是,它不会是模块化的(如果出现问题,需要额外的 30 秒才能找到问题原因,但这是我的观点)。