1

这是我正在考虑的事情,我想知道是否有人这样做,或者是否有任何在线资源我可以阅读以获取更多信息。

这是我正在进行的一个全新项目。我目前正在进行单元测试,并且已经开始编写浏览器 UI 测试。但是,当您开始 UI 测试时会出现很多问题(浏览器版本、javascript 错误、ajax 调用运行时间过长)。我知道 UI 测试很重要,但现在我刚刚编写了大量的后端代码,我想测试整个过程减去浏览器部分。

我在想我可以写一个测试

  1. 将记录插入数据库
  2. 就像浏览器一样使用测试数据调用控制器操作
  3. 从头到尾运行代码
  4. 断言正确的信息被写入/更新了数据库
  5. 回滚数据库更改

这是通常做的事情吗?如果是这样,是否有任何网站可以帮助我开始设置这些类型的测试?

谢谢!

4

2 回答 2

0

后端:将前端测试与 http 服务器测试分开很方便。如果您可以手动创建一个 http 请求,然后执行此操作并测试您的服务器端逻辑(当您执行 rest + js UI 时,此技术非常完美)。正如BlackICE所说,使用内存数据库最方便。但有时在兼容性方面还不够。有时您只需要在普通数据库上进行测试。然后尝试在单独的事务中进行每个测试 - 然后您所要做的就是回滚。您还可以在每次测试之前清除整个数据库并进行设置,但这很耗时。考虑将只读测试与 RW 测试分开。对于只读,您只能设置一次 db 并节省大量时间

GUI:稍后测试 js 和(如果需要)html。如果没有浏览器,你就无法完成这部分工作——或者更准确地说:没有 js / html 引擎。html 浏览器几乎可以在所有商业语言中使用(在 java 中我们有 htmlUnit),但它们的兼容性和 js 支持通常并不好。因此它们只能用于非常简单的页面。您还应该尝试phantomjs。这是一个无头 js 引擎。目前我们在前端 js 测试(rest + angular js)中使用它,我们没有问题。它可以安装在服务器上,无需 X 环境。

但是如果你正在做像素精度的应用程序,那么我认为你不能在不使用真正的浏览器和 selenium 或类似的东西的情况下进行测试

于 2013-09-23T19:45:57.423 回答
0

使用反映您的架构的内存数据库。数据库连接应该被注入到任何访问数据库的地方。

用于单元测试的内存 DBMS

于 2013-09-20T13:48:33.567 回答