沈阳航空航天大学
软件工程第二次作业

院(系): 计算机学院
专 业: 计算机科学与技术
班 级: -
学 号: -
姓 名: -
带队教师: -

2024 年 4 月 7 日

作业信息 沈阳航空航天大学计算机学院2024软件工程作业
课程目标 熟悉一个“高质量”软件的开发过程
作业目标 单元测试练习

请在作业最后部分填写如下表格记录本次工作详细信息
项目 记录结果
日期 2024.4.7
开始时间 12:30
结束时间 17:30
编码行数 100
错误数量 0

(1) 请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例
在此,我选择使用判定/条件覆盖标准设计测试用例,这种测试覆盖标准主要关注程序决策点(如if语句、switch语句)的条件和它们的结果(真或假)。目标是确保每个判断点的所有可能结果至少被执行一次。
我将基于四则运算式生成器程序设计测试用例。该程序包含多个决策点,包括年级的选择(1到6年级)和各年级内部的运算类型选择(加法、减法、乘法、(对于四到六年级)除法)。我们将专注于“年级选择”和“一年级内的运算类型选择”两个决策点。

  1. 测试目的
    验证四则运算式生成器是否能够根据输入的年级和题目数量,正确地生成符合要求的练习题。
  2. 测试范围
    年级选择判断:确保程序可以根据不同的年级输入(1-6年级),选择正确的题目生成逻辑。
    一年级运算类型选择判断:验证对于一年级,程序能够正确地生成仅包含加法或减法的运算式。
  3. 测试方法
    采用判定/条件覆盖方法,设计测试用例,确保每个判断点的所有可能结果至少被执行一次。
  4. 测试用例
    用例 1:年级选择判断 - 一年级
    输入数据: 年级=1, 题目数量=5
    预期结果: 程序生成5个一年级的加法或减法练习题,每个题目的运算数和结果不超过20。
    运行结果:

图1 测试一运行结果
用例 2:年级选择判断 - 二年级
输入数据: 年级=2, 题目数量=5
预期结果: 程序生成5个二年级的加法和减法混合练习题,每个题目的运算数和结果不超过50。
运行结果:

图2 测试二运行结果
用例 3:一年级运算类型选择判断
输入数据: 年级=1, 题目数量=10
预期结果: 程序生成10个一年级的练习题,这些题目应随机包含加法或减法,每个题目的运算数和结果不超过20。此测试用例的目的是观察生成的练习题中加法和减法的分布,以验证程序确实在随机选择运算类型。

图3 测试三运行结果
(2) 请利用自动测试工具对程序进行测试
我将使用Googletest进行测试 。测试覆盖了四个主要功能:
generate_first_grade(int num)
generate_second_grade(int num)
generate_third_grade(int num)
generate_fourth_to_sixth_grade(int num, int max_value)
同时,测试也覆盖了辅助函数perform_operation(int a, int b, char op)。
1.测试方法
测试方法采用单元测试,特别是判定/条件覆盖,以确保所有的分支和条件都被执行到。此外,还通过修改std::cout的缓冲区来捕获函数的输出,以便于对输出内容进行验证。
2.测试案例
PerformOperation测试:验证了perform_operation函数对加、减、乘、除四种操作的正确性,包括了除数为零的特殊情况。
年级函数测试:对每个年级生成函数进行了测试,主要检查生成的问题是否满足年级规定的数值范围,以及是否按照预期格式输出。由于数学问题生成包含随机元素,因此这部分测试强调手动验证输出格式的正确性,并没有深入到自动验证计算结果的正确性。
(3) 请将程序运行结果和自动测试分析结果截图粘贴到文档中
图4 自动测试运行结果一

图5 自动测试运行结果二
测试结果:所有测试案例均能成功执行。
验证了题目生成逻辑的正确性,包括操作数的范围和操作符的适用性。
特别注意到除法操作中除以零的处理,保证了程序的鲁棒性。
结论:
通过判定/条件覆盖测试,我们确认了数学题目生成程序能够按照各年级的要求正确生成数学题目。测试覆盖了所有基本操作和年级特定的逻辑路径,验证了程序的正确性和鲁棒性。

 posted on 2024-04-10 22:31  wangxiaorui  阅读(1)  评论(0编辑  收藏  举报