软件测试用例的几种设计方法

软件测试用例的几种设计方法,第1张

一、等价类划分法

所谓「等价」,就是具有相同属性或者方法的集合,这个集合中某个个体所表现的特征与其他个体完全一致。

由此可知,等价类划分就是将所有可能的输入数据,划分成若干个等价类,然后从每个部分中选取具有代表性的数据当做测试用例进行合理的分类,分为有效等价类和无效等价类。

例如,规定的用户名长度区间为4~8个字,那么它的有效等价类是用户名长度在[4,8],无效等价类为用户名长度大于8位,或用户名长度小于4位。

二、边界值

测试经验告诉我们,在测试有时会涉及到大量的数据,遍历所有数据会使测试效率低下,如果是手工执行,更加难以覆盖所有数据。这时更有效率的做法是,先划分等价类,再从等价类中选择部分参数测试,边界值是等价类所有可选参数中最容易出问题的地方,所以我们一般会选择边界值作为测试的重点,边界值法的应用步骤如下:

1.先根据等价类法划分有效等价类和无效等价类,确定上点、离点及内点。上点是边界上的点,离点是离上点最近的点,内点则是边界有效范围内的任意一点。同样以用户名长度为4~8位为例,4和8为上点,3和9为离点,6则为内点。

2.设计一个新的测试用例,使其尽可能地覆盖所有尚未覆盖的有效等价类,直到所有有效等价类完全覆盖。

3.设计一个新的测试用例,使其仅覆盖一个无效等价类,直到所有无效等价类都被覆盖。

三、判定表法

判定表又称策略表、决策表,能表示输入条件的组合,以及与每一输入组合对应的动作组合。判定表法适合逻辑判断比较复杂的场景,通过穷举条件获得结果,对结果再进行优化合并,具体又明确地表达复杂地逻辑关系和多种条件组合情况。

判定表主要由条件桩和动作桩两部分组成。条件桩是功能要满足地所有条件,动作桩则是所有可能的 *** 作以及产生的结果。

判定表能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。其缺点是判定表的建立过程较烦杂,当条件过多时,需要分析的逻辑组合呈2的倍数增长。测试工程师可根据实际情况与等价类划分法、边界值法结合使用。

四、正交试验法

正交试验法是研究多因素、多水平组合的一种实验法,它是利用正交表来对实验进行设计,通过少数的实验替代全面实验。正交表中所有参与试验的、影响试验结果的条件成为因子,影响试验因子的取值或输入的成为水平。

在设计测试用例时,采用正交试验法能够有效地、合理地减少测试的工作量与和成本。正交试验的一般流程包括以下几个步骤:

1)分析测试需求,获取因子和水平

2)根据因子和水平选择合适的正交表

3)替换正交表中的因子和水平,获取试验次数

4)根据经验或者其他因素补充试验次数

5)细化输出获得测试用例

以上是一些常见的测试用例设计方法,希望能够解答你的问题。

以下是一个冒泡排序程序的示例代码,它可以对输入的任意数量整数进行排序:

```c

#include <stdio.h>

void bubble_sort(int list[], int n) {

int i, j, temp

for(i = 0i <n-1i++) {

for(j = 0j <n-i-1j++) {

if(list[j] >list[j+1]) {

temp = list[j]

list[j] = list[j+1]

list[j+1] = temp

}

}

}

}

int main() {

int n, i

printf("请输入要排序的整数个数:")

scanf("%d", &n)

int list[n]

printf("请输入%d个整数:", n)

for(i = 0i <ni++) {

scanf("%d", &list[i])

}

bubble_sort(list, n)

printf("排序后的结果是:")

for(i = 0i <ni++) {

printf("%d ", list[i])

}

return 0

}

```

接下来是测试用例,包括了多种情况,以验证算法在各种情况下的正常工作:

```c

#include <stdio.h>

int main() {

// 测试用例1:对3个整数进行排序

int list1[] = {2, 1, 3}

bubble_sort(list1, 3)

printf("测试用例1:[2, 1, 3] ->[1, 2, 3]

")

for(int i = 0i <3i++) {

printf("%d ", list1[i])

}

printf("

")

// 测试用例2:对10个整数进行排序

int list2[] = {56, 89, 17, 21, 2, 76, 12, 9, 47, 62}

bubble_sort(list2, 10)

printf("测试用例2:[56, 89, 17, 21, 2, 76, 12, 9, 47, 62] ->[2, 9, 12, 17, 21, 47, 56, 62, 76, 89]

")

for(int i = 0i <10i++) {

printf("%d ", list2[i])

}

printf("

")

// 测试用例3:对1个整数进行排序

int list3[] = {5}

bubble_sort(list3, 1)

printf("测试用例3:[5] ->[5]

")

for(int i = 0i <1i++) {

printf("%d ", list3[i])

}

printf("

")

return 0

}

```

测试结果显示,算法可以正常地对数组进行排序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11186909.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存