thsk 发表于 2006-11-17 23:22:50

testbed作单元测试的疑问?

我有个函数的入口参数是一个指针,我想生成多个测试用例,包括NULL,"","132","ABC"...就是像c++test那样可以生成很多特殊值和随机值进行测试,不知道如何实现,请高手指点一下。另外整数我只能指定步长,也不能生成随机数进行测试,也不能进行特殊值测试。

VisualUnit 发表于 2006-11-18 09:19:18

还是用人工定义测试用例吧

使用任何测试工具都不要指望主要依靠自动生成的测试用例,例如,下面的最简单代码的最简单错误:
int Add(int i, int j)
{
    return i-j;//错误是把+写成-
}
即使是这种最简单代码中的最简单错误,完全依靠自动生成的测试用例,不论你用什么工具,就算生成并运行一亿个测试用例,也发现不了,原因很简单,测试工具不会自动了解代码的功能。自动测试用例一般只能发现有行为特征的错误,例如某个测试用例下,程序崩溃了,但这种错误所占的比例很少。

自动生成的测试用例相当于“三步法”中的第三步,只是一个补充,下面把“三步法”贴出来供参考。

    对于一段程序来说,“等价类”通常是有限的,因此,从理论上来说,“现实的彻底测试”是完全可能的,但如何把所有的等价类都找出来呢?经过长时间摸索和改进,我们提出了“三步法”:
    1. 根据代码的功能,人工设计测试用例进行基本功能测试;
    2. 统计白盒覆盖率,为未覆盖的逻辑单位设计测试用例,实现完整的白盒覆盖,比较理想的覆盖率是实现100%语句、条件、分支、路径覆盖;
    3. 自动生成大量的测试用例,捕捉可能的漏网之鱼。

    第1步的测试用例通常是现成的,因为详细设计文档会规定程序的基本功能,没有文档的,程序员在编程时也要想清楚程序的功能,这些基本功能就是基本测试用例;
    第2步是在第1步的基础上,检查未覆盖的逻辑单位,由于未覆盖的逻辑单位通常对应未测试的等价类,因此第2步可以找出第1步所遗漏的测试用例;
    第3步由工具自动生成测试用例进行测试,捕捉某些特殊输入未处理而产生的错误,一些特殊输入需要进行判断和处理,如果程序员忘了,由于相关代码不存在,所以白盒覆盖不能发现,这些特殊输入通常会产生有特征错误,例如程序崩溃或产生异常或运行超时,这正好是自动测试可以发现的。

[ 本帖最后由 VisualUnit 于 2006-11-18 09:21 编辑 ]

thsk 发表于 2006-11-19 12:44:27

自己顶一下
页: [1]
查看完整版本: testbed作单元测试的疑问?