gpt4 book ai didi

php - 快速复制大型 MySQL 数据库进行测试

转载 作者:行者123 更新时间:2023-11-29 22:19:39 25 4
gpt4 key购买 nike

在运行我们的验收测试套件时,我们希望在定义的数据库状态上执行每个测试。如果其中一项测试要写入数据库(例如创建用户或其他内容),它当然不能影响后续测试。

我们考虑了几个选项来实现这一目标,但在每次测试之前复制整个数据库似乎并不是最好的解决方案(考虑到可能的性能问题)。

还有一个想法是使用 MySQL 事务,但我们的一些测试会导致许多 HTTP 请求,因此会产生不同的 PHP 进程,并且它们会过早丢失事务,无法在完整测试完成后进行干净的回滚。

是否有更好的方法来保证每个验收测试的定义数据库状态?我们希望它比在系统级别解决该问题的 aufsbtrfs 等解决方案更简单。

最佳答案

您可以使用 PhpUnit 解决此问题。

它用于使用 PHP 进行自动化测试。不是唯一的库,而是扩展最广泛的库之一。

您也可以将它用于数据库测试( https://phpunit.de/manual/current/en/database.html )。基本上,它可以让您准确地完成您正在寻找的事情。首先导入整个数据库,然后在每个测试套件中加载您需要的内容,然后恢复到之前的状态。例如,您可以暂时保存表 A 的当前状态,并在完成套件的所有测试后,只需恢复它即可。而不是重新加载整个数据库。

顺便说一句,拥有一个仅包含测试所需信息的最小数据库也会有很大帮助。在这种情况下,您不必处理大的性能问题,只需在每个测试套件后恢复它即可。

关于php - 快速复制大型 MySQL 数据库进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30869473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com