软件黑盒测试的测评,软件评测师资料:黑盒测试与白盒测试例题

本文介绍了一趟划分算法在快速排序中的应用,并通过流程图详细解析了其工作原理。针对该算法的特点,设计了路径覆盖测试用例,确保了不同循环次数下的全面测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【例题】下面是快速排序算法中的一趟划分算法,其中dataist是数据表,它有两个数据成员:一是元素类型为Eement的数组V,另一个是数组大小n.算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey ( ),一是交换两数组元素内容的操作Swap( ):

int Partition ( dataist &ist, int ow, int high ) {

//在区间[ ow, high ]以第一个对象为基准进行一次划分,k返回基准对象回放位置。

int  k = ow;  Eement pivot = ist.V[ow];  //基准对象

for ( int i = ow+1; i <= high; i++ )  //检测整个序列,进行划分

if ( ist.V[i].getKey ( ) < pivot.getKey( ) && ++ k != i )

Swap ( ist.V[k], ist.V[i] );  //小于基准的交换到左侧去

Swap ( ist.V[ow], ist.V[k] );  //将基准对象就位

return k;  //返回基准对象位置

}

(1) 试画出它的程序流程图;

(2) 试利用路径覆盖方法为它设计足够的测试用例(循环次数限定为0次,1次和2次)。

答案:(1)流程图如下。

(2) 测试用例设计

循环次数  输 入 条 件 输 出 结 果  执 行 路 径

ow  high  k  i  V[0]  V[1]  V[2]  k  i  V[0]  V[1]  V[2]

0 0 0  0  1 - - -  0  1 - - -  ①③

1 0 1  0  1 1 2 -  0  2 1 2 -  ①②⑤⑥③

0 1  0  1 2 1 -  1  2 1 2 -  ①②④⑥③

0 1  0  1 1 1 -  0  2 1 1 -  ①②⑤⑥③

2 0 2  0  1 1 2 3  0  3 1 2 3  ①②⑤⑥②⑤⑥③

0 2  0  1 1 2 1  0  3 1 2 1  ①②⑤⑥②⑤⑥③

0 2  0  1 2 3 1  1  3 1 2 3  ①②⑤⑥②④⑥③

0 2  0  1 3 2 1  2  3 1 2 3  ①②④⑥②④⑥③

0 2  0  1 2 1 2  1  3 1 2 2  ①②④⑥②⑤⑥③

0 2  0  1 2 1 3  1  3 1 2 3  ①②④⑥②⑤⑥③

0 2  0  1 1 1 2  0  3 1 1 2  ①②⑤⑥②⑤⑥③

0 2  0  1 2 2 1  1  3 1 2 2  ①②⑤⑥②④⑥③

0 2  0  1 2 2 2  0  3 2 2 2  ①②⑤⑥②⑤⑥③

分析:画程序流程图是设计测试用例的关键。从以往同学解题的经验来看,在画流程图时就出错了。所以首先要把流程图中的逻辑关系搞清楚再画出正确的流程图。考虑测试用例设计需要首先有测试输入数据,还要有预期的输出结果。对于此例,控制循环次数靠循环控制变量i和循环终值high.循环0次时,取ow = high,此时一次循环也不做。循环一次时,取ow +1 = high,循环二次时,取ow+2 = high.

根据BRO策略,条件V[i] < pivot && ++k≠i的约束集合为 { (, < ) },因此,测试用例设计为:

循环次数  输 入 条 件 输 出 结 果

ow  high  k  i  V[0]  V[1]  V[2]  pivot  k  i  V[0]  V[1]  V[2]

0 0 0  0  1 - - - -  0  1 - - -

1 0 1  0  1 1 2 1  0  2 1 2  (>,

0 1  0  1 2 1 2  1  2 2 1 1 2  (

0 1  0  1 1 1 1  0  2 1 1  (=,

0 1  0  1 不 可 达  (

2 0 2  0  1 1 2 3 1  00  23 1 1 2 2 3 3  (>, ,

0 2  0  1 1 2 1 1  00  23 1 1 2 2 1 1  (>,

0 2  0  1 2 3 1 2  01  23 2 2 1 3 1 2 1 3 3  (>,

0 2  0  1 不 可 达  (>,

0 2  0  1 3 2 1 3  12  23 3 3 1 2 2 2 1 1 3  (

0 2  0  1 2 1 2 2  11  23 2 2 1 1 1 2 2 2 2  (

0 2  0  1 2 1 3 2  11  23 2 2 1 1 1 2 3 3 3  (,

0 2  0  1 不 可 达  (

0 2  0  1 1 1 2 1  00  23 1 1 1 1 2 2  (=, ,

0 2  0  1 2 2 1 2  01  23 2 2 1 2 1 2 1 2 2  (=,

0 2  0  1 2 2 2 2  00  23 2 2 2 2 2 2  (=,

0 2  0  1 不 可 达  (=,

0 2  0  1 不 可 达  (

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值