白盒测试(java)-语句、判定覆盖实例讲解(一)

389 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

src=http___i.cqdj.cc_forum_201307_27_160601dupc4j8gucap6mld.gif&refer=http___i.cqdj.gif

   您好,我是游手好闲的小羊!

一、什么是白盒测试

白盒测试又称为结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。盒子指的是被测试的软件,白盒指的是盒子是可视的,测试人员清楚盒子内部的东西以及里面是如何运作的。

二、白盒测试题目讲解

题1:根据输入执行下列不同的数学计算并显示结果。编写程序,并设计测 试数据进行语句覆盖测试。输入数据打印出“输入x 值:”、“输入k 值:”。 执行算式一log(x  k)输出文字“算式一值:”和 y 的值,执行 k x 输出文字“算 式二值:”和y 的值;执行 xk 输出文字“算式三值:”和y 的值。其中变量x、k 均须为正整数,若x≤0 或k≤0,则提示:“输入不符合要求。”;若x≥30, 则提示:“数据超过范围。”。

image.png

代码:

import java.util.Scanner ;
class demo1{
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		System.out.println("输入x值:");
		int x=sc.nextInt();
		System.out.println("输入k值:");
		int k=sc.nextInt();
		if(x<=0||k<=0){
			System.out.println("输入不符合要求。");
		}
		else{
			if(x<10){
				System.out.println("算式一值:y="+Math.log(x*k));
			}
			else if(x<20){
				System.out.println("算式二值:y="+Math.pow(x,k));
			}
			else if(x<30){
				System.out.println("算式三值:y="+Math.pow(x,1/k));
			}
			else
				System.out.println("数据超过范围。");
		}
	}
}

讲解:本题用到是白盒的语句覆盖,也就是要设计x和k的值确保每个语句能得到输出就完成了,那么我可以设计x和k的值为: 语句覆盖测试数据:

  • 1组测试数据与运行结果截图 (x=-1,k=1)
  • 2组测试数据与运行结果截图 (x=5,k=1)
  • 3组测试数据与运行结果截图(x=15,k=1)
  • 4组测试数据与运行结果截图(x=25,k=1)
  • 5测试数据与运行结果截图(x=30,k=1)

题2:填写快递单时通常需要确定接收人的姓名、手机号和地址。其中要 求手机号是11 位数字字符,地址为字母开头的10 个(含10)以内字母或字母 数字共同组成。填写正确则提示“OK”,否则根据实际情况提示“**不符合要求” (**为手机号或地址),退出。编写程序实现此快递单信息的输入,并设计测试 数据进行判定覆盖测试。输入数据打印出“输入手机号:”、“输入地址:”。

代码:

import java.util.Scanner;
class demo2{
public static void main(String[] args){
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入手机号:");
	String phone=sc.next();
	System.out.println("请输入地址:");
	String address=sc.next();
	boolean mphont=phone.matches("^[0-9]{11}$");
	boolean maddress=address.matches("^[A-Z]{1}[a-zA-Z0-9]*$");
	if(!mphont){
		System.out.println("手机号不符合要求");
	}else if(!maddress||address.length()>10){
		System.out.println("地址不符合要求");
	}else{
		System.out.println("OK");
		}
	}
}

讲解:本题用到判定覆盖,那么设计测试数据为:

  • 1组测试数据与运行结果截图 (phone="173759196022",address="Abcd21")
  • 2组测试数据与运行结果截图 (phone="17375919602",address="bafasd")
  • 3组测试数据与运行结果截图(phone="17375919602",address="Aafasd")

拓展:白盒测试的主要目的是干啥的?

  1. 保证一个模块中的所有独立路径至少被执行一次;
  2. 对所有的逻辑值均需要测试真、假两个分支;
  3. 在上下边界及可操作范围内运行所有循环;
  4. 检查内部数据结构以确保其有效性。

本期讲解就到这里,下次再见,我是带你学习的小羊!