一、实验题目 :软件测试
二、实验目的
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:正常情况下的排序
预期输入:{3, 1, 4, 1, 5, 9, 2, 6}
预期结果:{1, 1, 2, 3, 4, 5, 6, 9}
用例1与预期结果一致
// 测试用例2:空数组
预期输入:{}
预期结果:{}
用例2与预期结果一致
// 测试用例3:只有一个元素的数组
预期输入:{7}
预期结果:{7}
用例3与预期结果一致
// 测试用例4:已经排好序的数组
预期输入:{1, 2, 3, 4, 5}
预期结果:{1, 2, 3, 4, 5}
用例4与预期结果一致
// 测试用例5:逆序数组
预期输入:{5, 4, 3, 2, 1}
预期结果:{1, 2, 3, 4, 5}
用例5与预期结果一致
// 测试用例6:包含重复元素的数组
预期输入:{2, 1, 3, 2, 4, 3}
预期结果:{1, 2, 2, 3, 3, 4}
用例6与预期结果一致
六、单元测试结果截图
七、实验中遇到的问题及解决方法
在冒泡排序中,第 1 轮需要比较 n -1 次,第 2 轮需要比较 n -2 次……第 n -1 轮需 要比较 1 次。因此,总的比较次数为 (n -1) +(n -2) +…+1 ≈ (n^2)/2。这个比较次数恒定为该数值,和输入数据的排列顺序无关。不过,交换数字的次数和输入数据的排列顺序有关。假设出现某种极端情况,如输 入数据正好以从小到大的顺序排列,那么便不需要任何交换操作;反过来,输入数据要 是以从大到小的顺序排列,那么每次比较数字后便都要进行交换。因此,冒泡排序的时间复杂度为 O(n^2 )。
在本次实验中,我们使用Junit对一个简单的计算器程序进行了单元测试。我们首先创建了一个Sort类,其中包含了bullonSort方法。然后,我们对方法编写了对应的测试类,我们使用Junit运行器运行了所有的测试类,并查看了测试结果。通过本次实验,我们掌握了Junit的基本用法和特点,了解了单元测试的重要性和意义,提高了软件质量和可靠性。我们也发现了一些需要改进的地方,例如如何编写更有效的测试用例,如何处理异常情况,如何提高测试覆盖率等。
问题1:我想要在非测试文件夹下执行单元测试,但是我明明引入了junit4的依赖,但就是无法使用@Test注解。
解决方法2:后来发现原因就在于这个
问题2:数据的顺序排好之后,冒泡算法仍然会继续进行下一轮的比较。很显然,后面的比较没有意义的
解决方案2:设置bool变量flag(用于标记),如果发生了交换flag设置为true;如果没有交换就设置为false。这样当一轮比较结束后如果flag仍为false,即:这一轮没有发生交换,说明数据的顺序已经排好,没有必要继续进行下去。那么,就可以结束排序了。