好的,所以我在一家近年来公开采用敏捷开发实践的公司工作。我们的单元测试和代码质量正在提高。我们仍在努力的一个领域是在自动化验收测试领域找到最适合我们的方法。我们希望采用格式良好的用户故事,并使用它们以测试驱动的方式驱动代码。这也将为我们提供每个用户故事的接受程度测试,然后我们可以将其自动化。
迄今为止,我们已经尝试过 Fit、Fitnesse 和 Selenium。每个人都有自己的优势,但我们也遇到了真正的问题。使用 Fit 和 Fitnesse,我们不禁觉得它们使事情变得过于复杂,而且我们在使用它们时遇到了许多技术问题。企业还没有完全购买这些工具,也不是一直特别热衷于维护脚本(并且不是表格样式的忠实粉丝)。Selenium 确实很好,但速度很慢,并且依赖于实时数据和资源。
我们现在考虑的一种方法是使用 JUnit 框架来提供类似的功能。为什么不使用 JUnit 来编写一个测试(使用 JUnit 框架)来覆盖应用程序的可接受水平范围,而不是使用 JUnit 测试一个小的工作单元?即拿一个新故事(“作为用户,我想查看我的策略的基本细节......”)并在 JUnit 中编写一个测试,该测试在策略细节链接的入口点开始执行应用程序代码,但涵盖所有代码和逻辑到存根数据访问层,然后返回到转发到应用程序中的下一页的点,断言用户应该在该页面上看到什么数据。
在我看来,这具有以下优点:
- 简单(不需要额外的框架)
- 与我们的持续集成构建服务器集成零努力(因为它已经处理了我们的 JUnit 测试)
- 团队中已经存在完整的技能集(毕竟它只是一个 JUnit 测试)
缺点是:
- 更少的客户参与(尽管他们在编写验收测试的第一时间就大量参与编写用户故事)
- 与自由文本规范 ala Fit 或 Fitnesse 相比,JUnit 类中的用户故事和接受标准可能更难理解(或理解)
所以,我的问题是,你有没有试过这种方法?有没有考虑过?你觉得呢?你有没有什么想法?您喜欢和不喜欢这种方法的哪些方面?最后,如果你能说出你喜欢或不喜欢它们的原因,请只提及替代框架而不是这种方法。