首页 > 解决方案 > 如何在生产应用程序上运行测试而不留下痕迹?

问题描述

我正在对使用 PHP+MySQL 开发的 Web 应用程序进行一些更改,在测试开发中的所有内容后,我已将其上传到生产环境。但是,我想确保一切正常运行,我可能忘记了从开发到生产的一些更改(数据库连接等)。

如果我运行一些在 MySQL 数据库中插入新行的更改,删除新寄存器并更新 AUTO_INCREMENT 值(以便自动 id 不会显示测试已完成和删除),足以不留下任何痕迹考试?

也许这个问题应该更笼统,我怎样才能测试一旦在生产中一切都运行完美而不留下那些“足迹”?

谢谢!

标签: mysqldatabaseweb-applicationsdevelopment-environmentproduction

解决方案


第一个答案当然是使用工具来比较它们,这样就不会忘记任何东西。但是,如果由于某种原因这是不可能的或不可行的,这就是我要做的:

我猜你有以某种方式更新数据库的查询形式的变化。在让其他人进行测试之前,您要确保一切都按预期工作。

然后对生产进行备份并将其还原到新数据库中,现在您与生产中的相同。然后运行您的更新查询(您想在生产中运行)并针对这个新数据库运行您的代码。这将与更改后的生产完全相同。如果它有效,您可以在生产中安全地做同样的事情,或者如果已经进行了更改,则让用户进入。

如果这不是您想要的,并且由于某种原因您需要在实际的生产服务器中运行,那么我们无能为力。您的服务器可能会做一些我们不知道的事情。

插入新行(如果您知道所有已更新的行,则可以通过将 auto_increment 重置为正确值来删除和修复)触发器(当您添加/修改/删除时)数据触发器可能会更改数据库中的其他数据。删除记录,无法撤消

您还存在代码可能因此更改(或未知错误)而崩溃的风险,这会导致方法在完成之前退出,因此某些行可能已更改,但其他行不会更改。

如果不完全了解您的系统,就无法了解所有这些。

另一种方法当然是现在进行备份并测试您的东西,然后删除生产并使用备份恢复它。但这不是我自己会尝试或推荐其他人做的事情......


推荐阅读