软件工程第二次作业
作业信息 沈阳航空航天大学计算机学院2024软件工程作业
课程目标 熟悉一个“高质量”软件的开发过程
作业目标 单元测试练习
源代码:
请在作业最后部分填写如下表格记录本次工作详细信息
项目 记录结果
日期 2024.04.09
开始时间 2024.04.09
结束时间 2024.04.10
结束时间 2024.04.10
编码行数 37行
错误数量 2个
错误:1.scanf忘记后缀
2.max未定义头文件
(1) 请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例
(2) 请利用自动测试工具对程序进行测试
(3) 请将程序运行结果和自动测试分析结果截图粘贴到文档中
(1. 请首先说明选择哪种覆盖标准,然后按照单元测试方法设计测试用例,并详细给出测试用例选择过程
2. 说明选择哪种自动测试工具进行测试,将使用该工具和上面用例进行测试的几组测试结果截图,并对测试结果进行分析。
3. 请附上测试代码的Github地址)
(https://img2024.cnblogs.com/blog/3417761/202404/3417761-20240410190608474-194050693.png)
图1 程序运行结果
1.判定/条件覆盖
n=0;
n=7,a[]={1,2,3,4,5,6,7};
n=6,a[]={-7,10,-5,-12,-9,1};
n=5,a[]={-5,-9,-12,-7,-3};
2.测试工具
利用VS自带的GOOLE test进行相关测试。
(https://img2024.cnblogs.com/blog/3417761/202404/3417761-20240410190631212-1196086064.png)
图2 样例测试
总结:单元测试是软件开发过程中一个至关重要的环节,它的主要目的是验证软件中的最小可测试单元(通常是模块或类)的行为是否符合预期。在软件开发流程中,单元测试通常位于编码阶段之后,集成测试之前,是确保软件质量的重要步骤。
在进行单元测试时,我们会关注以下几个方面:
测试覆盖率:测试覆盖率是衡量单元测试是否充分的一个重要指标。它表示被测试的代码占总代码的比例。通常,我们希望测试覆盖率尽可能高,以确保大部分代码都得到了测试。然而,测试覆盖率并非绝对,有时即使覆盖率很高,也可能遗漏一些关键的逻辑或边界情况。
测试方法:单元测试的基本方法包括人工静态分析、自动静态分析、自动动态测试和人工动态测试。人工静态分析是通过阅读代码来查找错误,而自动静态分析则是使用工具扫描代码以发现并报告可能的错误。自动动态测试则是通过工具自动生成测试用例并执行被测试程序,而人工动态测试则需要测试人员设定程序的输入和预期输出,并判断实际输出是否符合预期。
测试内容:单元测试的内容非常丰富,包括但不限于输出给标准函数的参数的个数、属性和顺序是否正确,全局变量的定义是否一致,局部数据结构是否一致和正确,路径测试(运算的优先次序、常见的比较和控制流),错误处理测试,以及边界测试(例如循环的次数,最大或最小值)等。
测试环境:在进行单元测试时,需要建立测试环境,包括被测模块的桩模块或驱动模块。驱动模块相当于所测模块的主程序,它接收测试数据,把这些数据传送给所测模块,最后再输出实际结果。桩模块则用以代替所测模块调用的子模块。
测试的自动化与效率:为了提高测试效率,单元测试应尽可能实现自动化,减少人工干预。此外,保持单元测试小巧和快速也很重要,这有助于减少开发迭代周期。同时,应确保测试能够很容易地运行,例如通过简单的命令或按钮即可启动。
测试结果的评估与反馈:对执行的测试进行覆盖率分析,以便得到精确的代码执行覆盖率,并调查哪些代码未被执行。对于失败的测试,应立即进行修正,并确保新的测试用例能够成功运行,同时现有测试用例也不会因代码变更而失败。
我们要通过自我的不断完善完成作业和及时掌握新的内容。
浙公网安备 33010602011771号