代码之家  ›  专栏  ›  技术社区  ›  Max Strini

您将测试数据文件保存在哪里?

  •  3
  • Max Strini  · 技术社区  · 17 年前

    有点像是 this 问题。您将它们保存在源树中吗?您将它们保存在源代码管理中吗?

    我认为,如果您的测试用例引用了文件,那么这些文件是系统行为规范的一部分,因此它们与系统的当前版本相关联,因此应该将它们签入源代码管理。但我不认为它们应该在本地签出,因为它们不需要签出,而且可能非常大。所以我倾向于使用一个并行树,这样如果一个项目的代码文件是$svn/code/foo/bar/baz,那么相关的测试数据文件在$svn/test data/foo/bar/baz中,后者将使用某种常见的测试数据助手类(可能在本地缓存文件)直接从服务器访问。它只接受相对路径并找出在哪里找到它们。这有道理吗?

    我想有一个相关的问题,首先我应该多广泛地使用外部文件进行测试。我确实认为它们通常对更高级别的“验收”测试很好。

    4 回复  |  直到 17 年前
        1
  •  4
  •   Thomas Upton    17 年前

    但我认为他们不应该在本地结账,因为他们不需要

    为什么不?测试是任何复杂软件系统的组成部分。如果没有数据就无法运行,那么它们将变得无用。

    根据需要远程获取测试数据的想法很有趣,但是当您只需要运行测试时,您就可以依赖于与Subversion服务器的连接。我认为这会增加一些不必要的复杂性,使之成为一件简单的事情;运行测试永远不会成为开发的瓶颈。

    除此之外,您可能还需要考虑这样一个事实:您现在必须维护两个不同的SVN树。当您有多个功能分支和发布或标签时,这可能会成为一个噩梦。

    为了明确回答您的问题,我们将测试文件保存在<project root>/tests中,以便每个分支都有自己的工作测试和有用测试集。

        2
  •  6
  •   paxdiablo    17 年前

    我们订阅了“一切都在源头控制之下”的思想流派(肛门记忆甚至没有 开始 描述我们)。

    这意味着我们负责的所有测试级别的测试用例(代码和数据)(单元、系统、集成、翻译…)、开发软件CD/DVD映像、操作系统映像、测试环境的虚拟机,基本上都是doco 一切 如果团队中的所有PC和软件都被偷了,那就需要整合开发/测试环境——除了硬件,但这仅仅是因为我们还没有找到一种方法来检查它。

    磁盘空间比我们重新获取所需的一切资源所需的时间要便宜得多。当软件的一个版本发布到野外时,我们实际上检查了构建这个版本所需的一切,将其烧录到多张DVD上,并在Virgin硬件上测试这个过程。然后我们复制多份并分发到宇宙的四个角落…哎呀,对不起,被迷住了。

    但是我们 做 做我所说的一切,尽管制作的DVD被分发到多个地理上分开的地方(在地球上,而不是整个宇宙)。

    至于它在源代码管理树中的位置,树的顶层始终是一个版本,与该版本相关的一切都在下面。这会产生大量的重复,但使事情非常容易管理。而且,一般来说,磁盘存储比人力资源要便宜得多。

        3
  •  1
  •   pkaeding    17 年前

    我肯定认为测试数据应该被版本化,与测试和源代码在同一个树中,这样就很容易删除最新的代码并运行测试。我把树搭成这样:

    trunk/
      +- Source/
      +- TestSource/
      \- TestData/
    

    然后测试引用../testdata/mytestdata.xml或它们需要的任何内容。

        4
  •  0
  •   Paul van Brenk    17 年前

    我用这种方式将它们添加到源代码管理中

    - Trunk
         - Source
         - Lib
         - Tests
             - DescriptiveTestName_1
             - DescriptiveTestName_2
    - Branches
         - v0.9
             - Source
             - Lib
             - Tests
    

    这样,每个版本的所有文件源、库和测试都在一起,并且在开发(和修复问题)时很容易跟上速度。测试下的每个子目录都包含测试所需的所有文件。

    推荐文章