举个例子:
int sum(int* ary, int n);
我已经为它编写了一些测试用例
TEST("sum case 1")
{
int a1[] = {1,2,3,4};
ASSERT(sum(a1, 4) == 10);
}
TEST("sum case 2 negative")
{
int a2[] = {-1,-2,-3};
ASSERT(sum(a2, 3) == -6);
}
TEST("sum case 3 0 number")
{
ASSERT(sum(NULL, 0) == 0);
}
TEST("sum case 4 big number")
{
int a4[] = {1243142325,23423525,23525245,124313}
ASSERT(sum(a4) == .... );
}
TEST("sum case 5 mix")
{
int a5[] = {1243142325, -1, 0, -2224313}
ASSERT(sum(a5) == .... );
}
有时当我写一个函数时,我担心会遗漏一些可能的情况。然后我停下来并努力思考其他可能的情况,如负整数,null,非常大的数字和其他奇怪的输入。
花费我的时间并让我觉得有必要为一个功能编写这么多案例吗?我应该编写多少个案例才能使测试可靠?或者我应该先写正常的情况,然后如果我有空闲时间再写一些案例?
答案 0 :(得分:0)
您可以专注于两种类型的测试 - 白盒和黑盒测试。
对于黑匣子测试,你会想要做你已经描述过的,找到极值和边界情况。其中包括border-valua analysis和error guessing
对于 White Box 测试,您假设已测试功能的代码已知。您将希望涵盖该代码的任意数量的行或“分支”。您可以遵循几个指标,甚至使用工具来支持对coverage的分析。
如果您开始测试更高级别的代码(例如,不仅仅是单元测试),您将更多地关注用户故事和功能。在这里,您将重现所描述的用户操作并断言这些操作是可能的,并产生预期的结果/输出。