logo资料库

实验三 白盒测试(逻辑覆盖+基路径).doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
实验时间:4-6学时
实验三 白盒测试(逻辑覆盖+基路径) 实验目的:1. 掌握按逻辑覆盖方法设计测试用例 2. 掌握基路径测试方法设计测试用例 3. 初步熟悉如何利用程序插装技术进行逻辑覆 盖率分析 实验时间:4-6 学时 实验内容: 一、读以下三角形程序: 1、分析程序流程图,确定程序分支;设计分别满足语句覆盖、路径覆盖、条件 覆盖及条件组合覆盖和路径覆盖的测试用例; 2、画出控制流图,并计算圈复杂度,得到独立路径集合,采用基路径法设计测 试用例。 用测试用例对程序进行测试,记录测试结果,比较两种测试方法,并对结果进行 分析。 如果存在缺陷则修改程序,继续测试; 驱动的程序的主函数请自己编写! 源程序清单: /** 判断三角形的类 */ public class TriangleTestMethod { /** 判断三角形的种类。参数a, b, c分别为三角形的三边, * 返回的参数值为0,表示非三角形; * 为1,表示普通三角形; * 为2,表示等腰三角形; * 为3,表示等边三角形。 */ public static int comfirm(int a, int b, int c) { if((a + b > c) && (b + c > a) && (a + c > b)) { // 判断为三角形
if((a == b) && (b ==c)) // 判断为等边三角形 if((a == b) || (b == c) || (a == c)) // 判断为等腰三角形 return 3; return 2; else // 判断为普通三角形 return 1; } else { // 为非三角形 return 0; } } } 二、前一日函数PreDate是NextDate的逆函数(代码实现见下) 实现功能为:输入1800 年到2050 年之间的某个日期,函数返回这一天的前一天 的日期。(此处不考虑无效输入),请采用基路径方法对前一日函数进行测试用 例设计,并利用程序插装技术对测试用例的判定覆盖率进行检查分析。 代码:(被测函数为PreDate) #include"stdio.h" typedef struct MyDate{ int month; int day; int year; }MyDate; MyDate PreDate(MyDate date); int Leapyear(int year); void Print(MyDate date); MyDate PreDate(MyDate date) //输入日期有效性检查中其他模块实现,此处假设输入日期都是合法数据 { 1.MyDate yesterday; 2.yesterday.month = date.month; // initialization 3.yesterday.day = date.day; 4.yesterday.year = date.year; 5.int days_month[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
//初始化每月天数,其中2月不确定,初始化为0 6.if(date.day>1) 7.yesterday.day=date.day-1; else { 8.if(date.month==1) { } 9.yesterday.year=date.year-1; 10.yesterday.month=12; 11.yesterday.day=31; 12.else if(date.month==3) { 13.if(Leapyear(date.year)) { 14.yesterday.month=2; 15.yesterday.day=29; } else { 16.yesterday.month=2; 17.yesterday.day=28; } } else { 18.yesterday.month=date.month-1; 19.yesterday.day=days_month[date.month-1]; } } 20.return yesterday; } 21.int Leapyear(int year) { 22.if((year%4==0&&year%100!=0) || (year%400==0)) 23.return 1; 24.else return 0; } void Print(MyDate date) { 25.printf("%d--%d--%d\n",date.year,date.month,date.day); }
分享到:
收藏