如何编写和运行自动化测试,检查我的数据库事务策略是否正在消除竞争条件?目前我所做的只是在开发中测试它,在代码中放置一个断点并发送两个请求,然后我可以慢动作看到会发生什么。这不是我可以自动化的东西,它甚至不是真正的测试,只是开发的一部分。
答案 0 :(得分:1)
您的测试可以生成线程并运行两个或多个线程,使事务隔离相同的请求。
答案 1 :(得分:1)
使用实际工作负载执行负载测试。不幸的是,这并不容易。在任何平台上都难以发现竞争条件。我知道没有系统的方法来发现这样的错误。
有时您可以排除构造不一致的可能性。例如:
SERIALIZABLE
下运行的事务就像是系统中唯一的事务一样。因此,从来没有数据竞赛。SNAPSHOT
下的只读事务的行为方式相同。总数据一致性。UNIQUE INDEX
永远不会违反其完整性保证。正如您所看到的,您有时可以通过构建使代码安全,以便最少的测试需求。