简单循环测试
1.为什么要引入简单循环测试?
用来测试代码中的循环结构是否能正常执行 是否会少执行一次?多执行一次? 通过循环测试就可以得知
2.什么是简单循环?
没有嵌套的循环⇒简单循环
比如 单层的for循环 单层的while循环 单层的while循环 单层的do while循环
3.测试循环的基本步骤
- 确定要测试的代码
- 分析代码 画出流程图
- 找出循环
- 确定最大循环次数
- 确定七个要执行的循环次数
- 设计测试用例
- 编写测试代码 (根据设计好的测试用例)
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
- 画出流程图的作用主要是找出循环以及确定循环的最大次数(确定n的值)
5.2填写循环次数表格
前面知道n=10 (最大循环次数)
一共要设计七个循环次数
循环次数 | 0次 | 1次 | 2次 | m次 | n-1次 | n次 | n+1次 |
---|---|---|---|---|---|---|---|
num的值 | 0 | 1 | 2 | 5 | 9 | 10 | 11 |
Q:如何确定m的取值
2<m<n-1 (等价划分的思想)
Q: 明明最大循环次数为n次,为什么还要测试n+1次的情况?
测试n+1可以用来确定 循环是否会多执行一次 相当于测试越界后是否还能得到预期结果
5.3设计测试用例
测试用例编号 | 输入(循环次数) | 预期结果 |
---|---|---|
test01 | 1 | 1的阶乘=1 |
test02 | 2 | 2的阶乘=2 |
test03 | 3 | 3的阶乘=6 |
test04 | 5 | 5的阶乘=120 |
test05 | 9 | 9的阶乘=362880 |
test06 | 10 | 10的阶乘=3628800 |
test07 | 11 | 请输入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时@Testpublic void test01() {int result=factorial.getFactorial(0);assertEquals(0,result);}//num=1时@Testpublic void test02() {int result=factorial.getFactorial(1);assertEquals(1,result);}//num=2时@Testpublic void test03() {int result=factorial.getFactorial(2);assertEquals(2,result);}//num=5时@Testpublic void test04() {int result=factorial.getFactorial(5);assertEquals(120,result);}//num=9时@Testpublic void test05() {int result=factorial.getFactorial(9);assertEquals(362880,result);}//num=10时@Testpublic void test06() {int result=factorial.getFactorial(10);assertEquals(3628800,result);}//num=11时@Testpublic void test07() {int result=factorial.getFactorial(11);assertEquals(0,result);}}
- 运行结果
END 总结
- 简答循环测试 针对的是 没有嵌套的循环(单层循环)
- 在进行简单测试时需要设计七个循环值 其中包括n+1(测试边界情况)
- 循环测试中包含 边界值测试的思想和等价划分的思想(m的取值)
- 在进行循环测试之前需要弄明白 最大的循环次数n是多少(画出流程图)
- 设计测用例后再写测试代码 有参照, 而不是一上来边写代码边设计测试用例
?descriptionFromFileType=function+toLocaleUpperCase()+{+[native+code]+}+File&mimeType=application/octet-stream&fileName=简单循环测试.md&fileType=undefined&fileExtension=md