网络测试框架和重复

时间:2019-03-07 05:36:18

标签: c# unit-testing .net-core nunit xunit

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

背景

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

什么是正确的单元测试框架?我们有1000多个表,是否需要针对1000个表进行验证该计数和值的单独测试此过程?并在VS Test Explorer中编写1000个Nunit / Xunit测试?

例如;复制SQL表(客户,付款,库存)。

客户A --->客户B

库存--->库存B

付款B --->付款B

示例:运行测试用例以验证计数,并将结果复制到数据测试表中,并使用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)

1 个答案:

答案 0 :(得分:1)

您所描述的测试级别比单元测试要广泛。最后我会再说。

您要验证操作是否已针对1000个表完成并且所有操作都正确。这是一个非常高级的测试……我将其称为集成测试。可以,但是很费时间。

我想减少时间的是

  1. 进行简短测试,确定应创建的每个表均已实际创建。
  2. 随机选择n表进行完整测试。
  3. 根据将来出现的错误添加更多测试。

理想情况下,我会参数化n并在需要时进行详尽的测试。例如,随机测试不会发现名称中带有空格的问题,但这是不太可能发生的。

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

  1. 将数据层放置在可以模拟的接口后面。
  2. 创建一个更新1个表的方法。使用模拟程序彻底测试该方法。
  3. 现在模拟包含该方法的对象。
  4. 在执行完整复制时,测试该方法被调用必要的次数,并具有正确的表名。