目录
白盒测试
循环结构的程序代码
用Java语言的冒泡排序
@Test
public void bubbleSort(){
int sortArr[] = {10,1,2,4,6,7,8,9,3,5};
//冒泡排序主要算法代码实现
for (int i = 0; i < sortArr.length - 1; i++) {
for (int j = 0; j < sortArr.length - 1 - i; j++) {
if (sortArr[j] > sortArr[j + 1]) {
int temp = sortArr[j];
sortArr[j] = sortArr[j + 1];
sortArr[j + 1] = temp;
}
}
}
for (int i = 0; i < sortArr.length; i++) {
System.out.print(sortArr[i] + "\t");
}
//输出结果如下:1 2 3 4 5 6 7 8 9 10
}
控制流图
首先得到冒泡排序的流程图:

根据流程图得到控制流图:

基本路径测试
环路复杂度:4
测试1:
S → a → b → E
测试数据:
int sortArr[] = {};
测试2:
S → a → b → c → d → e → f → g → c → d → h → b → E
测试数据:
int sortArr[] = {3,2};
测试3:
S → a → b → c → d → h → b → E
测试数据:
int sortArr[] = {3};
测试4:
S → a → b → c → d → e → g → c → d → h → b → E
测试数据:
int sortArr[] = {1, 2};
主路径测试
主路径:
SabE Sabcdefg Sabcdh Sabcdeg
bcdhb dhbcd hbcdh
cdegc gcdeg egcde degcd
cdefgc gcdefg fgcdef efgcde defgcd
egcdhbE efgcdhbE
测试路径:
| 测试路径 | 覆盖的主路径 | 测试数据sortArr[] |
| S → a → b → E | SabE | {} |
| S→a→b→c→d→e→f→g→c→d→h→b→E | efgcdhbE,Sabcdefg,defgcd,cdefgc | {3,2} |
| S → a → b → c →d→h→b→E | Sabcdh,bcdhb | {3} |
| S→a→b→c→d→e→g→c→d→h→b→E | Sabcdeg,cdegc,degcd | {1,2} |
| S→a→b→c→d→e→g→c→d→e→g→c→d→h→b→E | gcdeg,egcde | {1,2,3} |
| S→a→b→c→d→e→f→g→c→d→e→f→g→c→d→h→b→E | gcdefg,fgcdef,efgcde | {3,2,1} |
| 无法设计测试路径 | dhbcd,hbcdh |
变异测试
源程序结果:输出有序数组,如:
变异一:
for (int i = 0; i < sortArr.length - 1; i++)
变为:for (int i = 0; i <= sortArr.length - 1; i++)
测试数据1:int sortArr[] = {3,2,1};
输出结果:

(没有检测出差错)
测试数据2:int sortArr[] = {1,2,3};
输出结果:

(没有检测出差错)
变异二:
for (int j = 0; j < sortArr.length - 1 - i; j++)
变为:for (int j = 0; j <= sortArr.length - 1 - i; j++)
测试数据1:int sortArr[] = {1,2,3};
输出结果:

(检测出差错,与源程序不同)
测试数据2:int sortArr[] = {3,2,1};
输出结果:

(检测出差错,与源程序不同)
文章详细探讨了白盒测试中的控制流图、基本路径测试在冒泡排序程序中的应用,包括测试路径覆盖和变异测试对程序正确性的验证。通过Java实现的冒泡排序代码展示了测试过程。

1万+

被折叠的 条评论
为什么被折叠?



