【问题标题】:Is altering database a good way to generate test data?更改数据库是生成测试数据的好方法吗?
【发布时间】:2015-02-13 22:04:59
【问题描述】:

鉴于:我正在测试的应用程序具有创建数据的功能,更改/插入/到数据库是否是创建测试数据的好方法。

  1. 如果您考虑数据库的应用程序/复杂性的速度,最好的方法是什么?
  2. 还有其他方法吗?

【问题讨论】:

    标签: testing test-data


    【解决方案1】:

    您可以模拟数据库,因此永远不会触及实际数据库,但可以在模拟数据库上测试所有功能。

    【讨论】:

    • 谢谢!你能推荐任何工具来模拟数据库吗?我测试的应用程序使用 Ms SQL server。
    • 使用“Moq”,这是一个非常好的 .NET 框架。您可以通过 nuget 包管理器安装。
    • 谢谢@janitha000,有没有什么好的基于java的模拟框架可以用于此目的?
    • 'Mockito' 是一个常见的 JAVA 模拟框架。许多开发人员也使用“MockRunner”。
    【解决方案2】:

    最好的方法是重构你的代码,使任何逻辑与执行数据库查询分离。然后将测试拆分为单元测试和集成测试。在单元测试中,您模拟您的数据库并测试您的逻辑。在集成测试中,您只测试数据库部分,而不涉及任何其他高级组件。 要正确地做到这一点,您应该针对您的真实数据库运行测试。如果您考虑任何可以考虑支持另一个更快的数据库(内存数据库)的优化。然后你可以使用内存数据库频繁地测试你的数据库,然后只对你的真实数据库运行一次(或几次)测试。但是为不同的数据库设置和维护环境和配置非常耗时,因此您必须计算在您的情况下哪个需要更多时间

    【讨论】:

    • 谢谢!我远离改变应用程序及其部署/集成的方式。这里的痛苦是创建一些数据库数据,如果我要遵循实际的工作流程,我必须花费相当多的时间。在这里,我正在寻找一种在不影响测试目的的情况下缩短此时间的方法。
    • 我建议不要为整个工作流程创建数据(除非您正在计划集成测试),而是为该测试中的每个测试创建数据。为此,您可以使用在生产代码中使用的相同技术 - 只需在执行测试功能之前插入数据。但要做到这一点,您需要将数据库代码与其余逻辑完全分离
    • 这是有道理的。对于给定的场景,如果记录的数量和数据的复杂性很低,这将是一个不错的选择。 “您需要将数据库代码与其余逻辑完全分离”是什么意思??
    • 通过分离我的意思是你应该有一个接受参数(姓名,姓氏,日期等)的组件,将它们放入查询并执行该查询。从会话中获取参数、计算时间、检查权限等应该在其他地方完成。这样,您昂贵的数据库测试将很小,您将能够减少这些测试的数量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    相关资源
    最近更新 更多