|
>“但是这5个参数间没有什么特殊联系”
>“没有关联的话就没有必要”
什么是特殊联系?什么是关联?有没有明确的定义?
以下函数有两个参数a和b,请问它们有没有“联系”?
void foo(int a, int b) {
return 1/(a-b);
}
void bar(int a, int b){
int c = 0;
if (a > 0) {
c += 1;
}
if (b > 0) {
c -= 1;
}
return 1/c;
}
在函数foo中,a和b共同影响到输出(数据流影响);在函数bar中,a和b影响到控制流,间接影响到输出。在特定取值组合下,这两个函数都会出现除零的错误。组合测试可能有助于发现这两个函数的问题。
1. 在楼主的例子中,5个参数“共同影响输出”。在不了解源代码的情况下,难以判断它们对数据流和控制流产生了什么样的影响(对于大规模代码,即便有源代码,可能也不容易分析清楚)。使用组合测试,可能是有帮助的。
2. 在我看来,“参数之间没有关联”是一种模糊的表达。更直接的表达应该是:单因素错误,2因素错误,3因素错误……在测试时间有限的情况下,只能运行有限的测试用例。这时,要问自己:发生单因素错误的可能性有多大?两个因素共同作用导致错误的可能性如何?
3.在特定的领域有特定的错误模型。例如PC机,单个硬件发生故障的概率比较大(例如内存错误、显卡风扇停转导致过热),两个硬件共同导致的问题较少(例如主板和内存的兼容性差导致蓝屏),三个硬件共同导致的问题更少。在你的应用领域,错误模型是怎样的? |
|