实验三-软件测试
一、实验题目 :软件测试
二、实验目的
1、熟悉开发环境下的自动化测试工具;
2、利用自动化测试工具进行自动化单元测试。
三、实验内容
1、选择开发环境,IDEA或PYCHARM任选其一;
本次实验选择的Pycharm。
2、基于所选择的开发环境实现对输入的n个整数进行排序的代码;
本次实验选择的是直接插入排序法,因为其平均情况为O(n²),最好情况为O(n),最坏情况为O(n²)辅助空间为O(1),稳定性为稳定。结合本次实验情况,较为合适。
3、对所编写代码设计测试用例;
见图5-1单元测试用例图,表5-1单元测试用例表
4、基于所选择的开发环境开展单元测试。
利用unittest对所编写代码进行单元测试,并产生三种不同风格网页报告。
四、实验要求
1、预先准备的代码要求独立编写,严禁抄袭,具体排序算法可以自由选择一种;
2、利用平台提供的单元测试工具对代码中的方法或函数进行单元测试,截取测试结果。
五、设计单元测试用例
本次代码逻辑流程图如下,将以此为根据设计单元测试用例。详见图5-1程序流程图。
图5-1 代码程序流程图
根据以上代码程序流程图,可以设计相关的单元测试用例,详见表5-1单元测试用例设计表。
表5-1 单元测试用例设计表
测试用例编号 | 功能点 | 用例说明 | 前置条件 | 输入 | 执行步骤 | 预期结果 | 重要程度 | 执行用例测试结果 |
---|---|---|---|---|---|---|---|---|
1 | 判断元素个数 | 使得数组元素个数为0 | 输入n=0 | n=0 | a-b-d | 输出为空 | 低 | 通过 |
2 | 输入乱序测试 | 乱序输入元素,测试能否正常排序 | 输入n=5 | 25,11,76,99,6 | a-b-c-e-f-g-i | 6,11,25,76,99 | 高 | 通过 |
3 | 输入顺序测试 | 顺序输入元素,测试能否正常排序 | 输入n=6 | 1,2,3,4,5,6 | a-b-c-e-f-h-j | 1,2,3,4,5,6 | 高 | 通过 |
4 | 输入逆序测试 | 逆序输入元素,测试能否正常排序 | 输入n=4 | 99,88,77,33 | a-b-c-e-f-g-i | 33,77,88,99 | 高 | 通过 |
5 | 输入乱序混杂相等数值 | 乱序输入元素,含有接邻等值元素 | 输入n=6 | 32,1,3,3,3,0 | a-b-c-e-f-(h/g)-(j/i) | 0,1,3,3,3,32 | 高 | 通过 |
6 | 输入乱序混杂相等数值 | 乱序输入元素,含有不接邻等值元素 | 输入n=6 | 7,75,7,9,7,1 | a-b-c-e-f-(h/g)-(j/i) | 1,7,7,7,9,75 | 高 | 通过 |
判定覆盖:1/2/3
条件覆盖:(1,2)/(1,3)
判定条件覆盖:5/6
条件组合覆盖:5/6
路径覆盖:(1,5/6)
六、单元测试结果截图
图6-1 直接插入法代码运行测试结果图
图6-2 生成报告代码运行测试结果图
图6-3 单元测试报告风格一图
图6-4 单元测试报告风格一用例查看详情图
图6-5 单元测试报告风格二图
图6-6 单元测试报告风格二用例查看详情图
图6-7 单元测试报告风格三图
图6-8 单元测试报告风格三用例查看详情图
七、实验中遇到的问题及解决方法
1.问题:太多了。
解决办法:悟。
2.问题:函数定义在测试类之后
解决办法:在Python中,解释器是从上到下逐行解释代码的。如果函数定义在测试类之后,那么在解释器执行到测试类时,它还没有见到函数的定义,所以会报错说找不到这个函数。解决这个问题的方法是将函数定义移到测试类之前。
3.问题:当存在多个具有相同值的元素时,排序算法没有保持它们的相对顺序。
解决办法:使用稳定的排序算法。
4.代码中出现逻辑错误导致单元测试无法通过。
解决方法:首先要检查代码逻辑是否正确,可以通过调试工具逐步跟踪代码执行过程,查看变量取值是否符合预期。如果发现问题,及时修改代码并重新运行单元测试。
5.单元测试覆盖率不够,无法全面检验代码功能。
解决方法:可以通过工具查看代码覆盖率报告,找出未被测试到的代码块,补充相应的测试用例。确保尽可能覆盖所有代码路径,提高测试的全面性。
6.单元测试环境配置问题导致无法正常运行测试。
解决方法:检查测试环境的配置是否正确,确保所选用的测试框架(如Junit或unittest)与开发环境兼容。可以查阅相关文档或搜索解决方案,保证环境设置正确。
7.测试用例设计不合理或不充分。
解决方法:重新审视测试用例设计,确保覆盖各种边界情况和特殊情况。可以尝试使用边界值分析、等价类划分等测试方法,提高测试用例的有效性。
8.单元测试结果不稳定,有时通过有时不通过。
解决方法:检查代码中是否存在依赖外部因素的情况,如随机数、时间等。可以考虑对这些因素进行模拟或者使用mock对象进行测试,确保测试结果的稳定性。
八、参考链接
gitee网站链接:
https://gitee.com/mooncirlight/TianCangCang-warehouse
生成报告演示视频链接(B站)
【20240428_154753】 https://www.bilibili.com/video/BV1jp421D7tn/?share_source=copy_web&vd_source=4169b898899da0e6a289d13f4cbe3ed2