实验目的

1. 理解单元测试的原理及工作内容;

2. 掌握使用程序流图设计测试用例;

3. 掌握测试用例设计方法及应用。

实验内容

(一)实验内容

请阅读附件的Java程序,根据下列要求完成实验内容(参考第5ppt

1. 绘制程序流图:分析函数int cal(Person person, int salary),绘制程序流图;

2. 提取独立路径集合:计算程序流图的环形复杂度,并提取独立路径集合;

3. 设计测试用例:根据每条独立路径,设计其测试用例(见表1);

4. 分析测试结果:运行每个测试用例,并分析其测试结果(见表1);

5. 程序修复(选做):如发现测试失败,请修复程序,并重新测试使得修复后的程序通过测试用例。

(二)要求:

1. 请按要求完成上述实验内容,在实验报告中要详细描述实验的各个步骤,图文并茂。

2. 请大家按照指定的软件工程实验报告模板,高质量的完成实验报告内容。

3. 请独立完成实验,并按时提交报告。

实验分析及过程

1. 以下是函数 cal 的主要步骤:

安全性检查:

检查输入参数 person 是否为 null,如果是,抛出 NullPointerException。

检查输入参数 salary 是否小于 0,如果是,抛出 IllegalArgumentException。

计算应纳税所得额:

初始化 res 为 salary - 5000,即月度收入减去免征额。

专项附加扣除:

子女教育:每个子女每月扣除 1000 元。

继续教育:根据是否在学以及是否获得相关证书,分别扣除 400 元或 3600 元。

住房贷款:如果有住房贷款,扣除 1000 元。

住房租金:根据不同情况扣除不同金额的租金。

赡养老人扣除:

每个月扣除 2000 元除以兄弟姐妹个数加一。

计算个人所得税:

根据阶梯税率计算个人所得税,将结果保存在 tax 中。

如果应纳税所得额小于 0,则个人所得税为 0。

返回结果:

将 tax 强制转换为整数并返回。

绘制成程序流图所下图所示。

2. 提取独立路径集合:计算程序流图的环形复杂度,并提取独立路径集合;

环形复杂度可定量度量程序的逻辑复杂性。

流图中的区域数等于环形复杂度,即13。

流图G的环形复杂度V(G)=E – N + 2,其中E是流图中边的条数,N是流图中的节点数。则V(G)=49-38+2=13

流图G的环形复杂度V(G)= P + 1,其中P流图中判定节点的数目。

即V(G)= P + 1=12+1=13。

独立路径集合过多,下方只列出五种。

(1) 1-3-5-6-8-9-12-13-14-16-17-18-33-34

(2) 1-3-5-6-7-8-10-11-12-35-37-14-15-16-17-19-21-23-24-33-34

(3) 1-3-5-6-8-9-12-13-14-15-16-17—19-21-23-25-27-28-33-34

(4) 1-2

(5) 1-3

3. 设计测试用例:根据每条独立路径,设计其测试用例;

4.设计测试代码,如下所示。

5.运行代码,结果如下,符合预期。

实验结论

经分析知程序正确,此次测试完成。

(by 归忆)

Logo

欢迎加入西安开发者社区!我们致力于为西安地区的开发者提供学习、合作和成长的机会。参与我们的活动,与专家分享最新技术趋势,解决挑战,探索创新。加入我们,共同打造技术社区!

更多推荐