软件测试 白盒测试案例--代码输入日期计算星期数

软件测试 专栏收录该内容
7 篇文章 0 订阅

软件测试 白盒测试案例–代码输入日期计算星期数

一、实验内容

以下代码为输入日期计算星期数。对其代码进行白盒测试,设计测试用例。

import java.util.Scanner;
public class Calander {	/**	 * @param args 	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
			int Year, W;    //W星期
			int Month, Day;
			Scanner scan = new Scanner(System.in);
			System.out.println("Please enter the year:");
			Year = scan.nextInt();
			System.out.println("please input the month:");
			Month = scan.nextInt();
		  /*if(Month<=0||Month>=13)
		   *{
		   	 System.out.println("please input the month again");
			 Month = scan.nextInt();
			 }*/
			System.out.println("please input the day:");
			Day = scan.nextInt();
			/*if(Day<=0||Day>=31)
				{
					System.out.println("please input the date again");
					Day = scan.nextInt();
				}	*/		
					//System.out.println(Y);              
			int temp = ((Year - 1) + (Year - 1) / 4 - (Year - 1) / 100 + (Year - 1)/400)%7;   
//公元元年的第一天为周一。
	        //(year-1)/4-(year-1)/100+(year-1)/400计算闰年的个数
			W = temp%7+1;     //W用于计算今年第一天的星期
			int count = W;
			int day = 0;
			for(int m=1;m<=Month-1;m++) //i for month;
			{    	
				if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
				{
					day=31;
				}
				else if(m==4||m==6||m==9||m==11)
				{
					day=30;
				}
					else if(m==2)
						{  					
							if((Year%4==0&&Year%100!=0)||(Year%100==0&&Year%400==0))
								day=29;
							else
								day=28;
						}
				count+=day;
			}//count 合计本年已结束月份的总天数  
			 W=(count+Day-1)%7;
			 System.out.print(Year+"年"+Month+"月"+Day+"日"+"是星期");
			 switch(W)
			 	{
			 		case 1 :
			 			System.out.print("一");break;
			 		case 2 :
			 			System.out.print("二");break;
			 		case 3 :
			 			System.out.print("三");break;
			 		case 4 :
			 			System.out.print("四");break;
			 		case 5 :
			 			System.out.print("五");break;
			 		case 6 :
			 			System.out.print("六");break;
			 		case 0 :
			 			System.out.print("天");break;
			 	}
			 	System.out.print("。");
	}
}

二、实验步骤

  1. 使用VISIO等工具画出程序流程图;

  2. 画出程序控制流图;

  3. 列出可采用的圈复杂度计算方法,检查环路复杂度(圈复杂度);

  4. 根椐环路复杂度,设计相应测试用例。

  5. 确定覆盖率工具,给出上述程序代码的三种覆盖率的情况。

三、实验结果

  1. 绘制程序流程图;

    software-testing/20200501205204

  2. 绘制程序控制流图;

    software-testing/20200501205250

  3. 列出圈复杂度的计算过程;

    3.1 V(G) = 区域数量(由节点、连线包围的区域,包括图形外部区域)

    V(G) = 24

    3.2 V(G) = 简单可预测节点数量 + 1

    V(G) = 23 + 1 = 24

    (注:简单可预测节点——3,4,5,6,7,8,9,11,12,13,14,15,16,17,19,20,21,22,24,25,26,27,28)

    3.3 V(G) = 连线数量 - 节点数量 + 2

    V(G) = 55 - 33 + 2 = 24

  4. 提交相应的测试用例表,以及测试用例所对应的路径。

    software-testing/20200501205529

  5. 列出所使用的覆盖率工具以及选用的三种覆盖率标准,给出上述程序代码的三种覆盖率的测试情况。

    本次测试覆盖率环境为Intellij IDEA、windows 10,工具为JaCoCo。三种覆盖率标准分别为判定覆盖(DC)、判定—条件覆盖(CDC)、基本路径覆盖(BPC),具体测试情况如下所示。

    5.1 判定覆盖(DC)

    software-testing/20200501205629

    software-testing/20200501205709

    5.2 判定—条件覆盖(CDC)

    software-testing/20200501205811

    software-testing/20200501205838

    5.3 基本路径覆盖(BPC)

    software-testing/20200501205942 software-testing/20200501210031

  • 4
    点赞
  • 0
    评论
  • 22
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值