软 件 学 院
上 机 实 验 告
课程名称: 实验二
实验项目: 白盒测试
实 验 室:
姓 名: 王泽华 学 :
专业班级: 软件19-17 实验时间: 2022.05.12
实验成绩 |
评阅教师 |
辽宁工程技术大学实验 告
课程名称:
实验 名称 |
实验二 白盒测试 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
实验 学时 |
2学时 |
实验类型 |
设计性 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
实验 目的 |
1.掌握白盒测试技术; 2.能够运用其进行测试用例的设计,并进行方法的比较研究和总结。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
实验 内容 |
三角形问题的测试用例的设计: 输入三个整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形(特殊的还有直角三角形),以及构不成三角形。 例如:现在要求输入三个整数a、b、c,必须满足以下条件(请大家自行设计边的范畴!): 条件1 1≤a≤100 条件4 a<b+ c 条件2 1≤b≤100 条件5 b<a+ c 条件3 1≤c≤100 条件6 c<a+ b 如果输入值a、b、c不满足条件1、条件2和条件3 ,程序给出“边的取值超出允许范围”的信息。 如果输入值a、b、c 满足条件1、条件2和条件3,则输出下列四种情况之一: (1)如果不满足条件4、条件5和条件6中的一个,则程序输出为“非三角形”; (2)如果三条边相等,则程序输出为“等边三角形”; (3)如果恰好有两条边相等,则程序输出为“等腰三角形”; (4)如果三条边都不相等,则程序输出为“一般三角形”。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
实验平台与实验准备 |
1.实验环境:主流PC机一套,要求安装windows操作系统、OFFICE工具 2.知识准备: (1)软件白盒测试技术; (2)划分测试用例的原理和方法的同时,运用其设计测试用例。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
实验过程(步骤)及实验结果分析 |
对于三角形问题进行分析: 选用白盒测试方法为其设计测试用例; 可供选择的方法有: ①逻辑覆盖法: 语句覆盖是指选择足够的测试用例,使得程序中每个语句至少执行一次。 判定覆盖是指选择足够的测试用例,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。 条件覆盖是指选择语句多数的测试用例,使得程序判定中的每个条件能获得各种不同的结果。 判定/条件覆盖是指选择足够多的测试用例,使得程序判定中每个条件取得条件可能的值,并使每个判定取到各种可能的结果(每个分支都通过一次)。即满足条件覆盖,又满足判定覆盖。 条件组合覆盖是指选择足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次(以判定为单位 找条件组合)。 注: A.条件组合只针对同一个判断语句存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合; B.不同的判断语句内的条件取值之间无需组合; C.对于但条件的判断语句,只需要满足自己的所有取值即可。 路径覆盖的含义是,选取足够多的测试数据,使程序的每条可能路径都至少执行一次。 ②基本路径测试法: 基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证被测程序的每个可执行语句至少被执行一次。 (2)给出预定输入和输出,以及实际输出结果; (3)根据不同的方法采取不同的测试用例编写步骤(可参考参考案例题); (4)进行实验总结。 代码如下: package text; import java.util.Scanner; public class Triangle { public static void main(String[] args) { int a=0; int b=0; int c=0; try (Scanner sc = new Scanner(System.in)) { System.out.print(“请输入a:”); a = sc.nextInt(); System.out.print(“请输入b:”); b = sc.nextInt(); System.out.print(“请输入c:”); c = sc.nextInt(); } if ((1<=a && a<=100) && (1<=b && b<=100) && (1<=c && c<=100)) { if (a<b+c && b<a+c && c<a+b) { if (a==b && b==c) { System.out.println(“等边三角形”); }else if (a==b || a==c || b==c) { System.out.println(“等腰三角形”); }else { System.out.println(“一般三角形”); } }else { System.out.println(“非三角形”); } }else { System.out.println(“边的取值超出允许范围”); } } } 流程图如下:
测试用例:
测试用例:
对于第一个判定:(1<=a && a<=100) && (1<=b && b<=100) && (1<=c && c<=100)取真时为T1,取假时为F1; 对于第二个判定:a<b+c && b<a+c && c<a+b 取真时为T2,取假时为F2; 对于第三个判定:a==b && b==c 取真时为T3,取假时为F3; 对于第四个判定:a==b 取真时为T4,取假时为F4; a==c 取真时为T5,取假时为F5; b==c 取真时为T6,取假时为F6; 测试用例设计:
|