发展方法和文化不断发展,以更好的方式支持利益相关者,并提供高质量的产品。 从 DevOps 实践到测试驱动开发 (TDD),公司尽最大努力采用开发环境,在提高产品质量的同时降低成本和努力。 行为驱动开发 (BDD) 由 Dan North 于 2006 年推出,以推动软件开发生命周期中所有参与方(开发人员、QA、产品经理、业务分析师等)之间的高效协作。 BDD 专注于通过特定于域的语言和示例来决定新功能,全面和共享地理解软件行为。 BDD 与有效的 性能测试相结合,可以生成具有高质量代码和强大功能的产品。
什么是行为驱动型发展?
BDD 通过参与开发、推广和使用应用程序的所有利益相关者之间的讨论,对软件应用程序的个人功能和整体行为有了清晰的理解。 一个一致和正式的词汇开发,和功能定义在人类可以理解的语言。 应用程序的测试用例也以自然语言编写,以便非程序员也可以阅读和理解应用程序的预期内容。
BDD 是一个敏捷开发过程,遵循 “给定/何时/然后” 结构来描述用户流。 例如,如果您正在开发银行应用程序,则以下是正式的用户流描述:
- 功能: 进行传输
- 鉴于 用户 A 的帐户有 100 美元, 用户 B 的帐户有 200 美元。
- 当用户 -A 将 $50 转移到用户-B 时。
- 然后 用户-A 的账户中应有 50 美元,用户 B 的账户中应有 250 美元。
BDD 从业务价值的角度推动应用程序开发,而不是定义 用户界面。 在上述结构中描述了所有特性和功能之后,这些特性和功能用于设计和开发应用程序。
BDD 由业务价值驱动,以用户对应用程序的观点为中心。 以下是一些关键优势,它们表明 BDD 的重要性:
- 所有设计和开发工作都与业务目标直接相关。
- 您的应用程序是从用户角度开发的,从而提供更好的用户体验。
- 以业务为中心的方法首先优先考虑交付业务关键型功能。
- 所有利益相关者共享相同的信息,并共同评估应用程序。
- 功能描述的共享语言和词汇使团队之间能够进行高效的沟通。
- 由于对最终结果和用户流没有混淆,因此从第一天起就保持了出色的代码质量。
BDD 方法的优点
BDD 为敏捷开发流程提供了许多优势。 BDD 首先提供业务关键功能,并优先考虑用户体验,通过高效的协作和沟通推动产品成功。
提高开发效率
对预期应用功能的具体定义使技术和非技术方易于遵循开发。 减少返工和修改 ,从而降低维护成本。
正反馈循环
由于所有团队都对应用程序有共同的理解,因此开发人员可以更快地获得反馈,以增强应用程序并走上正轨。
更便宜的测试
拥有明确定义的功能可以轻松创建测试用例并有效地验证它们。 功能测试用例和非功能测试用例可以轻松自动化,并更好地了解预期和时间。 这会降低应用程序测试的成本。
User Experience
从用户角度定义功能使设计人员和开发人员能够从最终用户角度而不是应用程序角度思考,以 解决用户挑战。 这创造了内在的商业价值并增强了 客户体验。
代码质量
从定义良好的单个功能构建有助于编写代码,该代码从第一天起就与高度内聚的体系结构松散耦合。 它显著提高了稳定性、 可扩展性和可测试性。
文档自动化
BDD 工具通常支持使用 BDD 规范使用使用清晰简洁的语言的技术文档和用户手册的自动化。
BDD 方法的缺点
介绍了 BDD,以解决 TDD 方法中面临的问题。 这是一个概念过程,不主要依赖于特定的工具和编程语言。 这使得使用经验不足的程序员很难,尤其是当他们没有 TDD 经验时。
BDD 需要一个专门的开发人员团队,该团队可以有效地与客户 或最终用户沟通 ,以记录他们的期望和反馈。 它可能导致额外的开销,基于开发公司如何处理通信过程。
BDD 工具和框架
BDD 在开发人员社区中获得了大量采用,各种工具也不断发展以支持这种方法。 以下是 BDD 方法的一些广泛使用的工具:
黄瓜
它用于使用 Gherkin 语法以纯文本形式定义应用程序功能的可执行规范。 它使用特定于域的业务语言提供需求、测试用例和文档之间的凝聚力。
SpecFlow
它是 .NET 平台的开源工具,使用 Gherkin 语法。
生菜
它建立在黄瓜之上,使用非常简单。 它用于基于 Python 的应用程序。
协和
它是Java框架的另一个开源工具 ,可以自动化BDD规范。 它还可用于 python、C# 和 Ruby。
Jbehave
它也是一个开源的工具,非常类似于黄瓜。 它有自己的 JBehave 语法,并支持 Gherkin 语法。
负载测试代码质量和功能
性能测试对于 BDD 方法的成功至关重要。 BDD 专注于从最终用户的角度开发应用程序;它使用户体验成为重中之重。 性能测试还侧重于实际方案中的用户体验。 BDD 性能测试的另一个很好的原因是 BDD 中使用的大多数工具都支持自动化文档(技术或用户手册)。 对于有效的 BDD,您需要自动执行功能和非功能测试。
性能测试(尤其是负载测试)对于维护代码质量和强大的功能至关重要,可确保应用程序在峰值条件下不会中断。 BDD 中的功能规范可能运行良好,但您需要测试它们的负载条件。 所有应用程序在各种负载条件和实际情况下的行为方式都不同。 建议将 BDD 的负载测试纳入开发环境和生产环境中。 还可以将 负载测试与生产环境中 的性能监视 解决方案相结合,以确保可访问性、可用性以及主动识别和解决瓶颈。
BDD 负载测试的负载视图
LoadView 是一种基于云的性能测试工具,用于测试预期的用户负载,并在出现高峰 流量情况 时查找网站或移动应用程序中的断点。 LoadView 使用真实的浏览器和设备使用简单的脚本模拟用户,使用 BDD 最佳实践自动执行应用程序的负载测试。 LoadView 还可帮助您测试不同地理位置的网站或本机移动应用程序,从而创建最真实的环境来衡量最终用户的性能。
LoadView 不需要任何编码知识来编写非常适合 BDD 方法的测试用例,因为所有利益相关者都可以以相同的效率使用它。 它的每步 Web 记录器 可轻松为业务关键型用户事务启用点和单击脚本。
LoadView 专为以下内容而构建:
- 网页负载测试
- 本机移动应用程序负载测试
- API 负载测试
- 网页负载测试
- 适用于移动应用的负载/压力测试
结论:行为驱动开发(BDD)和性能测试
BDD 通过首先开发和发布业务关键型功能,尽早为最终用户提供业务价值。 BDD 工具专注于用户体验并自动化文档过程。 性能测试可以在 BDD 方法中有效自动化,从而从 BDD 中获得更多好处。
负载测试在 BDD 中对于确保 网站和移动应用程序的代码质量和功能至关重要。 负载测试需要创建最现实的最终用户方案。 在 BDD 方法中使用 LoadView 等工具进行负载测试,将确保用户体验在高峰流量条件下不会下降。
立即试用 LoadView 或注册 我们的 工程师演示,以查看平台在运行!