软件测试(实验二)-白盒测试

目录

一.实验目的

二.实验要求

三.实验内容

 题目一:基本路径法,判断是否为闰年

 题目二:三角形的逻辑覆盖

 题目三:代码插桩法


一.实验目的

上机练习主要针对本章中需要重点掌握的知识点,以及在白盒测试方法中容易出错的内容进行练习,通过上机练习可以考察同学对知识点的掌握情况,对白盒测试方法的熟练程度。

二.实验要求

上机:(考察知识点为实例:判断年份是否为闰年、实例:三角形的逻辑覆盖实例:求3个数的中间值

形式:单独完成

三.实验内容

 题目一:基本路径法,判断是否为闰年

以判断闰年问题的C语言程序代码为例,实现如何通过基本路径法设计测试用例,要求如下:

1. 设计程序判断输入的年份是否为闰年;

代码如下:

#include<stdio.h>
void main() {
    int year;

    scanf("%d", &year);

    if (year % 4 == 0 ) {

        if (year % 100 != 0) {

            printf("闰年");

        }

        else if(year%400==0) {

            printf("闰年");
    
        }

        else {

           printf("不是闰年");

        }

    }

    else

    {

        printf("不是闰年");

    }
}

2. 画出程序的流程图; 

3. 画出程序的控制流图; 

4.设计判断闰年问题的测试用例。

路径1:1→2→8

路径2: 1→3→4→6→8

路径3:1→3→4→7→8

路径4: 1→3→5→8

测试用例如下:

测试用例

测试路径

输入数据

预期结果

Test1

1→2→8

Year==2003

不是闰年

Test2

1→3→4→6→8

Year==2000

闰年

Test3

1→3→4→7→8

Year==1900

不是闰年

Test4

1→3→5→8

Year==2028

闰年

 题目二:三角形的逻辑覆盖

根据三角形3边的关系,实现一个判断三角形的程序,要求如下:

1. 根据三角形3边的关系写出一段判断三角形的代码

#include<stdio.h>
void mian() {
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);
	if (a + b > c && a + c > b && b + c > a) {
		if (a == b && b == c) {
			printf("等边三角形");
		}
		else if (a = b || b == c || a == c) {
			printf("等腰三角形");
		}
		else {
			printf("普通三角形");
		}
	}
	else {
		printf("不是三角形");
	}

}

2. 画出流程图; 

3. 绘制程序的控制流图; 

4. 设计三角形程序判定覆盖测试用例

编号

测试用例

路径

预期结果

a

b

c

Test1

1

2

3

1→2→8

不是三角形

Test2

3

4

3

1→3→4→6→8

等腰三角形

Test3

3

4

5

1→3→4→7→8

普通三角形

Test4

3

3

3

1→3→5→8

等边三角形

题目三:代码插桩法

使用源代码插桩法求3个数的中间值,要求如下:

1. 从键盘输入3个数并求中间值的源代码;

#include<stdio.h>
int main() {
	int a, b, c;
		scanf("%d %d %d", &a, &b, &c);
		if (a > b) {
			if (b > c) {
				printf("中间值为%d", b);
			}
			else {
				if (a > c) {
					printf("中间值为%d", c);
				}
				else {
					printf("中间值为%d", a);
				}
			}
		}
		else if (a < b) {
			if (b < c) {
				printf("中间值为%d", b);
			}
			else {
				if (a > c) {
					printf("中间值为%d", a);
				}
				else {
					printf("中间值为%d", c);
				}
			}
		}
		else {
			printf("中间值为%d", a);
		}
		printf("\n");
}

2. 查看源程序执行的过程,获取插桩后的代码; 

插桩后的代码:

#include<stdio.h>
#define LINE() fprintf(__POINT__,"%3d",__LINE__)
FILE* __POINT__;
void main()
{
	if ((__POINT__ = fopen("test.txt", "w")) == NULL)
		fprintf(stderr, "不能打开test.txt文件");
	int a, b, c;
		LINE(),scanf("%d %d %d", &a, &b, &c);
		if (LINE(),a > b) {
			if (LINE(),b > c) {
				printf("中间值为%d", b);
			}
			else {
				if (LINE(),a > c) {
					LINE(),printf("中间值为%d", c);
				}
				else {
					LINE(),printf("中间值为%d", a);
				}
			}
		}
		else if (LINE(),a < b) {
			if (LINE(),b < c) {
				LINE(),printf("中间值为%d", b);
			}
			else {
				if (LINE(),a > c) {
					LINE(),printf("中间值为%d", a);
				}
				else {
					LINE(),printf("中间值为%d", c);
				}
			}
		}
		else {
			LINE(),printf("中间值为%d", a);
		}
		LINE(),printf("\n");
	}

3. 根据3个数的不同组合方式设计测试用例

测试用例

测试数据

预期结果

Test1

1,1,2

1

Test2

1,2,3

2

Test3

3,2,1

2

Test4

3,3,3

3

Test5

6,4,5

4

Test6

6,8,4

8

Test7

8,4,9

4

4. 得到程序的输出结果与程序执行路径。

测试用例

输出结果

执行路径

Test1

1

9→10→23→37→39

Test2

2

9→10→23→24→25→39

Test3

2

9→10→11→39

Test4

3

9→10→23→37→39

Test5

4

9→10→11→15→16→39

Test6

8

9→10→23→24→28→29→39

Test7

4

9→10→11→15→19→39

解释:

1. 执行路径在test.txt中获得

2. test.txt保存在当前文件所在路径下

3. 复制路径步骤如下:

  • 32
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值