当前位置 : 主页 > 网络安全 > 测试自动化 >

单元测试 – 自动化测试感觉很像重复测试逻辑,我做得对吗?

来源:互联网 收集:自由互联 发布时间:2021-06-19
我正在C中使用CppUTest实现自动化测试. 我意识到我最终几乎要复制并粘贴要在测试中测试的逻辑,所以我可以检查预期的结果. 我做得对吗?应该不是吗? 编辑:我会尝试更好地解释:
我正在C中使用CppUTest实现自动化测试.
我意识到我最终几乎要复制并粘贴要在测试中测试的逻辑,所以我可以检查预期的结果.
我做得对吗?应该不是吗?

编辑:我会尝试更好地解释:
被测单元采用输入A,进行一些处理并返回输出B.
因此,除了进行一些黑盒检查,比如检查输出是否在可预期的范围内,我还想看看我得到的输出B是否是输入A I.E.的正确结果.如果逻辑按预期工作.
因此,例如,如果单位只是使A乘以2得到B,那么在测试中我没有其他检查方式,而是再次计算A次2以检查B以确保它没有问题.
这就是我所说的重复.

// Actual function being tested:  
int times2( int a )
{
  return a * 2;
}

.

// Test:
int test_a;
int expected_b = test_a * 2; // here I'm duplicating times2()'s logic
int actual_b = times2( test_a );
CHECK( actual_b == expected_b );

.

PS:我想我会用我的实际源代码在另一个问题中重新制定这个.

如果您的目标是为现有代码构建自动化测试,那么您可能做错了.希望你知道frobozz.Gonkulate()的结果应该用于各种输入,并且可以编写测试来检查Gonkulate()是否正在返回正确的东西.如果你必须复制Gonkulate()的复杂逻辑来找出答案,你可能想要问自己,你对逻辑开始的理解程度如何.

如果你正在尝试进行测试驱动的开发,那你肯定做错了. TDD包含许多快速周期:

>写一个测试
>看着它失败了
>让它通过
>根据需要进行重构以改善整体设计

第1步 – 首先编写测试 – 是TDD的重要组成部分.我从你的问题推断出你正在编写代码并稍后进行测试.

网友评论