23、测试驱动开发:从直接模型访问到模拟浏览器测试

测试驱动开发:从直接模型访问到模拟浏览器测试

1. 直接模型访问(Direct Model Access)概述

直接模型访问(Direct Model Access,简称 DMA)的步骤定义执行速度快,不过这种速度和隔离性是有代价的。它无法充分保证应用程序能正常工作,并且除了那些在后续章节中会用细粒度的 RSpec 代码示例捕获的错误外,它不太可能捕获到其他错误。

不过,DMA 步骤定义有助于客户和开发人员之间的沟通,如果未来模型内部的逻辑被破坏,它还能捕捉到回归问题。因此,当通过完整的堆栈驱动系统的所有细粒度行为过于繁琐时,DMA 步骤定义对于测试系统的细粒度行为非常有用。

1.1 使用建议

  • 一般情况 :通常建议在 Given 步骤中使用直接模型访问。
  • 特殊情况 :对于需要设置浏览器会话状态的操作(如登录),应使用模拟浏览器(Simulated Browser)。
  • JavaScript 或 Ajax 情况 :如果存在 JavaScript 或 Ajax,在 When 和 Then 步骤中添加使用自动化浏览器(Automated Browser)方法的场景,用于正常流程和关键的不常见路径。这样做的附加价值是可以测试客户端代码,所以当不需要客户端代码时,就没有必要使用浏览器。
  • 边缘情况 :对于会产生许多边缘情况的功能,可以通过 Rails 堆栈驱动其中一些情况,其余的则完全使用直接模型访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值