(白盒测试)简单循环测试

简单循环测试

1.为什么要引入简单循环测试?

用来测试代码中的循环结构是否能正常执行 是否会少执行一次?多执行一次? 通过循环测试就可以得知

2.什么是简单循环?

没有嵌套的循环⇒简单循环

比如 单层的for循环 单层的while循环 单层的while循环 单层的do while循环

3.测试循环的基本步骤

  1. 确定要测试的代码
  2. 分析代码 画出流程图
    1. 找出循环
    2. 确定最大循环次数
  3. 确定七个要执行的循环次数
  4. 设计测试用例
  5. 编写测试代码 (根据设计好的测试用例)

4.被测程序代码

package com.jaylan.example.simple_cycle_test;
//求10以内阶乘
public class Factorial {
    public int getFactorial(int num) {
	int result =1;
	int i=1;
	//判断num是否在范围内
	if(num>=1&& num<=10)
	{
	    while(i<=num)
	    {
		result=result*i;
		 i++;
	    }
	    System.out.println(num+"的阶乘="+result);
	}
	else
	{
	    System.out.println("请输入1-10之间的整数!");
	    result=0;
	}
	return result;
	
    }

}

5.进行简单循环测试

5.1画出程序的流程

  • 分析代码弄清楚有哪里有循环 循环的最大次是多少

看代码可知最大的循次数为10 即n=10

image.png

  • 画出流程图的作用主要是找出循环以及确定循环的最大次数(确定n的值)

5.2填写循环次数表格

前面知道n=10 (最大循环次数)

一共要设计七个循环次数

循环次数0次1次2次m次n-1次n次n+1次
num的值012591011

image.png

Q:如何确定m的取值

2<m<n-1 (等价划分的思想)

Q: 明明最大循环次数为n次,为什么还要测试n+1次的情况?

测试n+1可以用来确定 循环是否会多执行一次 相当于测试越界后是否还能得到预期结果

5.3设计测试用例

测试用例编号输入(循环次数)预期结果
test0111的阶乘=1
test0222的阶乘=2
test0333的阶乘=6
test0455的阶乘=120
test0599的阶乘=362880
test061010的阶乘=3628800
test0711请输入1-10之间的整数!
  • 一共有需要七条测试用例

5.4编写测试代码

  • 根据设计好的测试用例编写测代码(对照上面设计好的测试用例)
package com.jaylan.example.simple_cycle_test;

import static org.junit.Assert.*;

import org.junit.Test;

public class FactorialTest {
    Factorial factorial =new Factorial();
    
    //num=0时
    @Test
    public void test01() {
	int result=factorial.getFactorial(0);
	assertEquals(0,result);
    }
    
    //num=1时
    @Test
    public void test02() {
	int result=factorial.getFactorial(1);
	assertEquals(1,result);
	
    }
    
    //num=2时
    @Test
    public void test03() {
	int result=factorial.getFactorial(2);
	assertEquals(2,result);
    }
    
    //num=5时
    @Test
    public void test04() {
	int result=factorial.getFactorial(5);
	assertEquals(120,result);
	
    }
    //num=9时
    @Test
    public void test05() {
	int result=factorial.getFactorial(9);
	assertEquals(362880,result);
    }
    //num=10时
    @Test
    public void test06() {
	int result=factorial.getFactorial(10);
	assertEquals(3628800,result);
    }
    //num=11时
    @Test
    public void test07() {
	int result=factorial.getFactorial(11);
	assertEquals(0,result);

    }

}
  • 运行结果

image.png

END 总结

  • 简答循环测试 针对的是 没有嵌套的循环(单层循环)
  • 在进行简单测试时需要设计七个循环值 其中包括n+1(测试边界情况)
  • 循环测试中包含 边界值测试的思想和等价划分的思想(m的取值)
  • 在进行循环测试之前需要弄明白 最大的循环次数n是多少(画出流程图)
  • 设计测用例后再写测试代码 有参照, 而不是一上来边写代码边设计测试用例

?descriptionFromFileType=function+toLocaleUpperCase()+{+[native+code]+}+File&mimeType=application/octet-stream&fileName=简单循环测试.md&fileType=undefined&fileExtension=md

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值