网络测试框架和重复

Net Testing Framework and Repetition

编写数据仓库测试用例的正确测试协议是什么?

背景:

我们正在将多个 SQL table 从源 A 复制到源 B,使用一个应用动态 SQL 的特殊过程。该过程查找 Table A 中具有 information_schema 的列。列,验证它们是否存在于 Table B 中,然后复制。

什么是正确的单元测试框架?我们有超过 1000 tables,我们是否需要单独测试此过程 1000 tables 验证计数和值?并在 VS 测试资源管理器中编写 1000 Nunit/Xunit 个测试?

例如;正在复制 SQL table(客户、付款、库存)。

客户 A ---> 客户 B

库存 ---> 库存 B

付款 B ---> 付款 B

示例:运行 测试用例验证计数,并将结果复制到数据测试 table 中,使用 for/while 循环

insert into dbo.TestResultTable(TestFlag)
utilize for loop   -- make sure counts are equal for every copy
set @TestFlag = (select count(*) from CustomerA = select count(*) from CustomerB)
set @TestFlag = (select count(*) from InventoryA = select count(*) from InventoryB)
set @TestFlag = (select count(*) from PaymentsA = select count(*) from PaymentsB)

您描述的测试级别比单元测试更广泛。我会在最后回到那个。

您想验证操作是否已完成 1000 table 秒并且一切正确。这是一个非常高级的测试......我称之为集成测试。没关系,但显然这很耗时。

我会做些什么来减少时间

  1. 简单测试一下,每个应该创建的table,实际上都创建了。
  2. 随机 select n tables 进行完整测试。
  3. 根据将来出现的错误添加进一步的测试。

理想情况下,我会参数化 n 并允许在需要时进行详尽的测试。例如,随机测试不会发现某个名称中包含 space 时出现的问题,但这种情况不太可能发生。

现在让我们假设您真的想要对所有这些进行单元测试(我愿意)...

  1. 将您的数据层置于您可以模拟的接口之后。
  2. 创建一个更新 1 table 的方法。使用 mock 详尽地测试该方法。
  3. 现在模拟包含该方法的对象。
  4. 在进行完整复制时,测试该方法是否被调用了必要的次数,并使用正确的 table 名称。