[ug-bjosug] 请教一下,操作系统代码中的概率极小的代码路径是如何测试的?
Oliver Yang
Oliver.Yang在Sun.COM
星期四 一月 19 23:29:12 PST 2006
Kingsun Soong wrote:
> 出于性能考虑,我发现很多代码是这样分支的,比如出现A的概率是0.9,出现B
> 的概率是0.099,出现C的概率是0.00099,出现D 的概率是0.00001,那么处理分
> 支的代码总是这样的:
> Handle A
> else
> Handle B
> else
> Handle C
> else
> Handle D
> Handle D的代码出现的概率非常小的话,如何测试到这部分代码路径以保证其正
> 确性呢?
> 如果说要刻意创造出现D的条件,在有些时候也是非常困难的,因为要出现该条
> 件需要操作系统中其它很多部分都要配合发生相应的改变,如果这些改变只是通
> 过修改内存中的值就可以办到也好说,如果还需要硬件在适当的时机产生相应的
> 中断呢?
理论上说,首先要进行白盒测试。比如,developer要对自己的代码进行unit
test,来确保这一点。
然后就是黑盒测试了,要想测试覆盖比较全面,需要特定的工具去分析测试覆盖
率,来帮助测试人员发现哪些地方没有覆盖到。
在应用层,分析测试覆盖率的工具比较多,在内核上,也有类似工具,比如linux
的gcov。我们也可以用dtrace来测试solaris内核的代码覆盖率。
但我不知道,内核代码覆盖率的工具究竟可以达到什么程度?是函数级的?还是可
以精确到一个代码分支。
关于邮件列表 ug-bjosug 的更多信息