实验三-软件测试
一、实验题目 :软件测试
二、实验目的
1、熟悉开发环境下的自动化测试工具;
1、利用自动化测试工具进行自动化单元测试。
三、实验内容
1、选择开发环境,IDEA或PYCHARM任选其一;
2、基于所选择的开发环境实现对输入的n个整数进行排序的代码;
3、对所编写代码设计测试用例;
4、基于所选择的开发环境开展单元测试。
IDEA环境:
利用Junit对所编写代码进行单元测试
https://blog.csdn.net/antony9118/article/details/51736135
PYCHARM环境:
利用unittest对所编写代码进行单元测试
https://zhuanlan.zhihu.com/p/688994644
四、实验要求
1、预先准备的代码要求独立编写,严禁抄袭,具体排序算法可以自由选择一种;
2、利用平台提供的单元测试工具对代码中的方法或函数进行单元测试,截取测试结果。
五、设计单元测试用例
测试用例基于条件覆盖:
测试用例1 :正序列表 [1,2,3,4,5] 预期输出:[1,2,3,4,5]
测试用例2 :倒序列表 [5,4,3,2,1] 预期输出:[1,2,3,4,5]
测试用例3 :重复元素列表 [3, 2, 2, 1, 4, 3, 1] 预期输出:[1, 1, 2, 2, 3, 3, 4]
测试用例4 :随机元素列表 [64, 34, 25, 12, 22, 11, 90] 预期输出:[11,12,22,25,34,64,90]
测试用例5 :空列表 [ ] 预期输出:[ ]
测试用例6 :只含有一个元素列表 [7] 预期输出:[7]
六、单元测试结果截图
七、实验中遇到的问题及解决方法
基于条件覆盖的测试用例设计,以下是对之前给出的测试用例进行的总结:
测试用例1(正序列表):
目的:验证当输入列表已经是正序时,排序函数是否能够正确识别并返回原列表。
条件覆盖:此测试用例覆盖了排序函数中可能存在的“无需交换”的条件,即当相邻元素已经按正确顺序排列时,不执行交换操作。
测试用例2(倒序列表):
目的:验证当输入列表是倒序时,排序函数是否能够正确地将其反转并输出正序列表。
条件覆盖:此测试用例确保排序函数中的“需要交换”条件被充分测试,特别是当所有元素都需要进行交换以达到正序时。
测试用例3(重复元素列表):
目的:验证排序函数能够正确处理包含重复元素的列表,并按正确顺序排列这些元素。
条件覆盖:这个测试用例确保排序函数中的比较逻辑能够处理重复元素,不会因为重复元素而跳过必要的比较或交换操作。
测试用例4(随机元素列表):
目的:测试排序函数对随机元素列表的通用性,确保它能对各种不同的元素组合进行正确的排序。
条件覆盖:此测试用例涵盖了排序函数中可能出现的各种比较和交换情况,包括不同大小元素之间的比较和交换。
测试用例5(空列表):
目的:验证排序函数能够正确处理空列表,并返回相同的空列表作为结果。
条件覆盖:此测试用例确保排序函数在输入为空列表时不会引发错误或异常,并且能够正确返回结果。
测试用例6(只含有一个元素列表):
目的:验证排序函数能够正确处理只含有一个元素的列表,并返回相同的列表作为结果。
条件覆盖:这个测试用例确保排序函数在输入为单元素列表时不会进行任何不必要的操作或交换,直接返回原列表
会产生如下问题:
1.测试失败:
冒泡排序函数实现有误,测试失败。确保排序算法能够正确地对所有测试用例进行排序。
测试用例设计不当也导致测试失败。
2.数据类型问题:
冒泡排序函数没有正确处理非数字类型的数据,或者没有处理列表中的None值或其他不可比较的对象,那么测试会抛出异常。
3.列表修改问题:
冒泡排序函数修改了原始列表而不是返回一个新的排序后列表,这会在某些测试情况下导致问题。特别是当测试用例期望函数返回一个新的列表时。
4.断言失败:
测试断言(如self.assertEqual)与函数实际返回的结果不匹配,测试将失败。
为了更好地解决这些问题,我采取以下措施:
1.设计全面的测试用例,覆盖各种边界情况和异常情况。
2.确保函数能够处理各种数据类型,并正确处理不可比较的对象。
3.如果函数应该返回一个新的列表而不是修改原始列表,请确保遵守这一约定。
gitte地址:https://gitee.com/li-mu9/soft-engineering-experiment/blob/master/Bubble_sort_test.py
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步