【问题标题】:Should test data be used in production?测试数据应该在生产中使用吗?
【发布时间】:2011-12-15 18:10:45
【问题描述】:

我们正在为生产中的主要应用程序部署更新。此更新已在 QA 中进行了测试,看起来不错。我们的客户想要在生产中进行测试。对于这种情况,我们将在生产环境中使用“测试数据”运行应用程序,一旦测试完成,我们将删除“测试数据”。

一些服务器管理员反对这一点,因为“测试数据不属于生产”。我认为这没关系,因为 QA 服务器和生产服务器具有不同的硬件,并且数据库包含不同的应用程序(QA 有更多的数据库,生产是专用的)。除此之外,还有其他事实可以用来支持我的观点吗?

编辑:添加上下文

该应用程序是一种自动接收和验证数据的工具。我们通过电子邮件接收文件,该工具会自动验证它们并将它们导入数据库。我们有一个使用此信息创建报告的 BI 系统(通过电子邮件接收 Excel 文件,然后验证,然后报告/视图出来,所有这些都是自动化的)。

“测试数据”将是代表真实数据(实际上是真实数据但有问题或太旧)的旧文件(先前工作的好文件和坏文件)。

【问题讨论】:

  • 我认为没有足够的上下文。什么是测试数据?什么是应用程序?使用测试数据运行是什么意思?
  • “测试数据不属于生产”本身并没有足够的理由。这种解释背后可能有一些潜在的原因,找出他们为什么会有这种感觉对我很有帮助。
  • 谢谢,我刚刚添加了一些上下文。

标签: testing deployment production


【解决方案1】:

您的管理员是对的。在生产中拥有测试数据会使您面临风险(安全漏洞):

  • 生产中的测试数据可用于对您的公司造成损害(有意或无意)。

例如,如果您在生产中拥有非执行身份,您可以向他们付款。如果它们与真实的银行账户相关联,您将在无法察觉的情况下赔钱。

测试数据可以改变您的管理报告。当采取虚假行动时,有些人可能会影响报告并对做出的决策产生影响。这将很难跟踪,甚至更难纠正。

测试数据可以与生产数据交互。如果有人犯了错误并犯了错误的关系,生产数据可以根据测试数据进行更改。

如果您要标记它,则没有检测您是否有测试数据的好方法。所有数据都可以标记为测试数据。如果您在业务层中处理不同的测试数据,那将不是对您的生产环境的真正测试。

【讨论】:

    【解决方案2】:

    是的!但是在生产中手动使用测试数据对我来说听起来不是一个好主意,因为它无法控制或监控。我在下面的回答是假设测试数据用于自动化测试。

    生产中的测试数据是“今天”需要的。当自动化测试不是一个要求(或不存在)时,这不是一个要求。所以一般来说,这将是不受欢迎的。安全是主要原因。它在搞乱网站分析方面的影响是另一个原因。这些都是真实而充分的理由。

    一个人无法决定哪天简单地将测试数据投入生产,尤其是在项目结束时。这需要从开发开始时就提出要求。因此,从第一次部署开始,测试数据就需要在生产环境中存在。其影响需要研究和记录。整个组织需要了解它的好处和影响。

    测试数据需要根据其类型、需求或上下文进行划分。 eg:可检索的测试数据和可编辑的测试数据。第一步是提供可检索(只读-永不更改)的测试数据。也许这是我们在许多情况下可以走的最远,仍然会提供良好的结果。并且这个只读测试数据的创建需要自动化并且最好记录在案。

    在生产中拥有测试数据的好处是巨大的。应用程序的自动化测试比应用程序本身更宝贵。如果管理层意识到这一点,那么至少最初的“皱眉”会发生变化。我觉得生产中的测试数据应该被视为需求/用户故事,并且应该减轻所有针对它的问题。并且需要在这一领域发展新的发展模式。

    本次讨论也与集成测试有关,本文重点介绍it over unit testing 的好处

    【讨论】:

      【解决方案3】:

      如今,让 Staging 环境与生产环境具有相同的基础架构配置是一种很好的做法,因此您可以执行渗透测试、负载测试以及做任何您想做的事情,以确保生产环境的行为符合您的预期。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-15
        • 1970-01-01
        相关资源
        最近更新 更多