问题标签 [database-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2087 浏览

junit - DbUnit:如何断言生成的 ID

我需要一个想法/提示如何使用 DbUnit 来断言由数据库生成的 ID(例如 MySQL 的自动增量列)。我有一个非常简单的案例,但目前我发现有问题:

2个表:mainrelatedmain.id列是自动增量。相关表有一个外键:related.main_id-> main.id。在我的测试用例中,我的应用程序确实将多个条目插入到两个表中,因此数据集看起来类似于:

作为顺序,如何执行插入尚不清楚 - 我不能在测试之前简单地清除/截断表并提前使用预定义的 ID(例如,“ABC”条目将首先出现,因此它获得 ID 1,“DEF”作为第二个- 得到2)。如果我以这种方式编写测试 - 这将是错误的 - 运气好有时它可能会起作用,而在其他情况下则不会。

有没有一种干净的方法来测试这种情况?因为我仍然想断言条目是在 DB 中正确创建和链接的,不仅它们存在(如果我只是忽略自动增量列)。

0 投票
2 回答
237 浏览

c# - 使用单元测试和测试数据库

我将如何使用 NUnit 和测试数据库来验证我的代码?理论上我会使用模拟(moq),但我的代码更多的是维护形状并修复它模式,我没有设置所有模拟的权限。

我是否只是创建一个测试项目,然后编写实际连接到我的测试数据库的测试并像在应用程序中那样执行代码?然后我用断言检查代码并确保我请求的是我正确返回的内容?

0 投票
2 回答
553 浏览

sqlite - 使用内存中的 sqlite DB 加速单元测试时避免 DB 依赖的建议

我一直在使用sqlite::memory:单元测试:它很快,并且可以自动进行测试清理。但我担心我的测试可能会由于 SQL 服务器的假设而丢失错误。(这个特定的代码应该是 DB 中立的,但实际上它必须与 MySQL 一起工作。)

作为一个具体示例,我认为 sqlite 的日期字符串输入存储为字符串 (*),因此它们以完全相同的格式返回给我。而在 MySQL 中,它们似乎被解析、规范化并以一致的格式返回。我更担心的是我没有意识到存在差异。

处理这个问题的最佳方法是什么?例如,也对 mysql 重复所有单元测试(慢 - 有没有办法制作内存中的 MySQL DB?)。只是针对一些关键领域进行mysql测试?依靠使用 MySQL 的功能测试(这是我目前的方法,但覆盖范围更广)。还有什么我没有想到的?

*:如果我给出“2012-12-25 09:12:34”,我会得到那个确切的字符串。如果我给出“2012-12-25 09:12:34 UTC”,我会返回那个确切的字符串(即这次的时区)。如果我给“2012-12-25 09:12:34 hello world”,我会返回“2012-12-25 09:12:34 hello world”:-(


在这种特殊情况下,我使用的是 PHP、PDO 和 PHPUnit。我追求与语言无关的策略,但值得注意的是,PDO 是一个非常薄的抽象,更多地与抽象连接字符串和低级 API 调用有关。它不会尝试抽象数据库之间的数据类型差异。

0 投票
3 回答
10869 浏览

database - 数据库的负载和性能测试

这是第一次,我的团队要求我对数据库进行一些我不知道如何处理的测试。通过对数据库进行测试,我的意思是,我需要看看它可以多快将记录插入其中。直到它可以承受多大的压力。就像数据库的负载和性能测试一样。我们将要使用的数据库是XPRESSmp

那么当我们需要测试数据库时,任何人都可以帮助我进行什么样的测试,以及我可以研究哪些工具。我看到的大多数文章大多与 Oracle 和 MySQL 有关。但这完全是一个新数据库。

我能想到的一种方法是编写一个具有 X 个线程的多线程程序,它将以非常高的速度将数据泵入 XMP。并继续测量每个线程花费了多少时间。我还能做些什么来测试数据库?

我的团队要求我通过您的测试来破坏数据库,但我们应该知道它在什么情况下被破坏以及背后的原因是什么。

以及在进行数据库测试时我应该了解和考虑哪些要点。

PS 我将在单独的 LnP 机器上进行此测试。

0 投票
5 回答
12607 浏览

unit-testing - 如何在 Play 框架中针对非内存数据库(如 MySQL)创建单元测试,并重置为已知状态?

我想创建单元测试,涵盖在 Play 框架 2.1.0 中使用关系数据库的代码。这有很多可能性,并且都会导致问题:

在内存 H2 数据库上进行测试

Play 框架文档建议在 H2 内存数据库上运行单元测试,即使用于开发和生产的主数据库使用其他软件(即 MySQL):

我的应用程序不使用存储过程等复杂的 RDBMS 功能,并且大多数数据库访问案例都是 ebean 调用,因此它应该与 MySQL 和 H2 兼容。

但是,evolutions 中的表创建语句使用 MySQL 特定的功能,例如指定ENGINE = InnoDBDEFAULT CHARACTER SET = utf8等。我担心如果我将删除这些专有部分CREATE TABLE,MySQL 将使用一些我无法控制且取决于版本的默认设置,所以要测试和开发应用程序,必须修改主 MySQL 配置。

有人使用过这种方法(使进化与 MySQL 和 H2 兼容)吗?

如何处理它的其他想法:

  • MySQL 和 H2 的单独演进(不是一个好主意)
  • 使 H2 忽略其他 MySQL 内容的某种方法create table(MySQL 兼容模式不起作用,它仍然会抱怨default character set)。我不知道怎么做。

在与主数据库相同的数据库驱动程序上进行测试

H2 内存数据库的唯一优势是速度快,并且在相同的数据库驱动程序上进行测试可能比开发/生产数据库更好,因为它更接近真实环境。

如何在 Play 框架中正确完成?

试过:

看起来进化在这里起作用,但是在每次测试之前最好如何清理数据库?通过创建截断每个表的自定义代码?如果它会删除表,那么进化会在下一次测试之前再次运行,还是每个play test命令应用一次?还是每次Helpers.fakeApplication()调用一次?

这里有哪些最佳实践?听说过dbunit,是否可以在没有太多痛苦和怪癖的情况下集成它?

0 投票
1 回答
84 浏览

testing - 测试两个数据库数据是否相同

对于一个测试项目,我需要测试数据库是否按要求工作;以及需要检查给定两个数据库,数据库中的数据是否相同。那么,是否有任何预定义的算法来执行此任务?

0 投票
2 回答
1554 浏览

unit-testing - 单元测试和集成测试示例

我在测试 CompanyService 的 findCompany() 方法的测试类中创建了以下四个测试。

我的理解是,前三个是单元测试。他们测试 findCompany() 方法的行为,检查该方法将如何响应不同的输入。第四个测试虽然放在同一个班级,但实际上对我来说似乎是一个集成测试。它要求首先将公司添加到数据库中,以便以后可以找到它。这引入了外部依赖项 - addCompany() 和数据库。

我走对了吗?如果是,那么我应该如何对现有对象进行单元测试?只是模拟服务来“找到”一个?我认为这会扼杀测试的意图。

我很感激这里的任何指导。

0 投票
1 回答
1692 浏览

h2 - 无法使用 Java 从 H2 数据库访问表

我使用 H2 数据库创建了一个用于数据库测试的脚本。我面临问题,无法读取数据库中的表。它抛出消息“找不到表”和下面的代码。但它能够连接数据库。

配置:数据库引擎的 h2-3.3.jar 和 h2.jar

执行脚本后显示错误消息

“org.h2.jdbc.JdbcSQLException:找不到表 KM_AUDITLOGS;SQL 语句:SELECT * FROM KM_AUDITLOGS [42102-73]”

任何人都可以帮助我吗?

0 投票
1 回答
342 浏览

qtp - 无法通过 qtp 进行数据库测试

我的任务是在 QTP 上对一个网站进行 dabase 测试,以了解注册用户的数量并检查用户名是否与之前存储的用户名重复。我被困在建立连接的第一步,因为我是 QTP 的新手.Client通过godaddy帐户给了我数据库访问权限。www.godaddy.com。

我应该如何连接 SQL Server?确切地说我应该给出什么路径?我是否需要在我的笔记本电脑中安装 QL 服务器来检查这一点,或者因为我可以通过这个站点直接访问他们的服务器,所以我可以走得更远?

Con.Open "提供者_ _ ___;服务器=__,uid=___密码=_ "

0 投票
1 回答
32 浏览

sql - 如何使用oracle从两次检索记录

我有一个名为 callinfo 的表,它有如下记录。

如何在下午 1:00 到下午 1:15 之间从 callinfo 检索记录?