Ars*_*nko 4 sql-server sql-server-2008-r2 snapshot restore
我在做一个产品的系统测试,有几个测试严重改变了一个演示数据库的数据。
创建查询的数据非常复杂,这些查询将撤消测试所做的更改;此外,这些测试可能会发生变化。
使用备份/恢复不是一种选择,因为恢复数据库需要 30 秒,这在自动化测试的上下文中太长了。
使用也insert into select很复杂:同样,测试可能会发生变化,并且可能会影响他们现在不影响的表;出于性能原因,以这种方式复制整个数据库也不是一种选择。
Microsoft SQL Server 具有快照功能,但鉴于我在本地主机上没有企业版,我无法使用它。我也不能使用事务,因为系统测试涉及两个应用程序,它们之间有复杂的交互。当然,它们不共享相同的连接。
可以做些什么来快速撤消数据库的最后更改?
为了使问题更容易,
数据库处于受控环境中:
它在本地主机上,所以我是唯一可以访问它的人,
唯一的变化来自系统测试。所有更改都可能(并且预计会)丢失。
可以选择任何恢复模式。
准备(例如某种备份)可能需要很长时间,甚至是一项手动任务,因为它很少执行。重要的是从这一点开始撤销更改的速度,因为它是在每次影响数据库的测试之后完成的。
我建议查看DB Snapshots。它们是(理论上)撤消更改的最快方法,除非您将每个更改包装在自己的事务中并在最后回滚(在您将测试结果写入数据库之后)。
如果您愿意将其纳入测试框架,那么将每个单独的测试封装在回滚块中可能会奏效,因为这会在每次测试后撤消对环境所做的所有更改。但是,这将使组合相互依赖的自动化测试变得更加困难。
| 归档时间: |
|
| 查看次数: |
6008 次 |
| 最近记录: |