任何人都不会有一些很好的提示,对于编写测试代码数据库-后台的发展,那里是一个严重依赖国家?

具体地说,我想写测试的代码检索数据库中的记录,但答案将取决于数据库中的数据(其中可能随时间变化)。

人们通常单独发展系统与一个"冻结"数据库,以便任何特定的功能应该总是返回的确切结果相同?

我很确定这是不是一个新问题,因此我将非常感兴趣向其他人学习的经验。

有的好文章那里讨论这个问题的基于网络的发展?

我通常会写PHP代码,但是我希望所有这些问题主要是语言和框架的不可知的。

有帮助吗?

解决方案

你应该看看DBUnit,或试图找到一个PHP当量(必须有一个外出那里)。你可以用它来准备数据库,与一个特定的数据,其中表示你的测试数据,因此各试验将不再取决于数据库和一些现有的状态。这种方式,每一个测试是自给自足的和不断在进一步数据库使用情况。

更新:一个快速的谷歌搜索显示 DB单元的延伸 为进行.

其他提示

如果你们主要关心的数据层的试验,你可能想看看这本书: 来完成测试模式:重构测试码.我总是不确定我自己,但是这本书的一项伟大的工作,以帮助枚举的关切似的性能、可再生性等。

我想这取决于什么数据库使用,但是红色大门(www.red-gate.com)作一个工具,称为SQL数据生成器。这可以构成为填补数据库的明智看测试数据。你也可以告诉它始终使用同一种在其随机数发生器那么你的"随机"数据是相同的。

然后你可以写你的单元的测试,以利用这个可靠的、可重复的数据。

至于测试的网方面的事情,我目前正在寻找到硒(selenium.openqa.org).这似乎是一个跨浏览器能够测试这将有助于您试验的功能。然而,随着所有这些网站的测试工具、有没有真正的方法来测试如何以及这些东西 看看 在所有的浏览器不铸造一个人的眼睛了他们!

我们使用的存储器数据库(hsql: http://hsqldb.org/).休眠(http://www.hibernate.org/)使得它很容易对我们来点我们单元的测试,在测试数据库,增加奖金,他们跑快如闪电..

我完全相同的问题与我的工作我觉得最好的想法是要有一个PHP script重新创建的数据库,然后单独的脚本里我把疯狂的数据在它看如果它打破。

我有没有使用任何单元测试或类似的东西因此不能说,如果它的工作原理或不对不起。

如果你可以安装的数据库有一种已知数量的现有运行测试和推倒在结束了,然后你就会知道什么数据。

然后你可以用的东西喜欢硒轻松的测试,从用户界面(假定基于网络的在这里,但有很多的用户界面测试工具,用于其他UI-味道),并检测是否存在的某些记录中拉回的数据库。

这绝对值得设立一个测试版本的数据库-或者让你的测试脚本来填充数据库的数据与已知的一部分测试。

你可以试试 http://selenium.openqa.org/ 它是更为GUI测试而不是一个数据层的试验应用程序,但不会记录你的行动其后可以回放到自动化测试,在不同的平台。

这是我的战略(I使用JUnit,但我敢肯定有办法做到相当于在PHP):

我有一个方法之前运行的所有单元的测试用于一个特定的道类。它把开发数据库进入一个已知的状态的(增加了所有试验数据,等等)。因为我运行测试,我继续跟踪的任何数据,加入已知的状态。这个数据清理结束的每一个测试。所有的测试后,对该类已运行,另一种方法消除所有的检验数据在开发数据库,把它留在该国,这是在测试之前进行运行。它有点工作要做这一切,但我通常会写方法在DBTestCommon类在哪里我的所有道测试的课程可以得到他们。

我建议使用三个数据库。一个生产数据库,一个发展数据库(填充有一些有意义的数据为每个开发人员)和一个测试数据库(与空的表也许有几行,总是需要的话)。

一种方法来测试数据库码是:

  1. 插入一些行(利用SQL)的初始化状态
  2. 运行的功能的,你想要测试
  3. 比较预期的实际结果。在这里你可以用你的正常单元的测试框架
  4. 清理行改变(所以接下来的运行不会看到以前的运行)

清除可能在一种标准的方法(当然,只有在检测数据库)有 DELETE * FROM table.

总的来说,我同意彼得但是对于创建和删除的试验数据我不会用SQL。我更喜欢使用一些增删改API中使用的产品来创建数据作为类似于生产作为可能的...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top