实验3-软件测试

一、实验题目 :软件测试

二、实验目的

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、利用平台提供的单元测试工具对代码中的方法或函数进行单元测试,截取测试结果。

五、设计单元测试用例
对于Java 代码,我编写满足条件覆盖的测试用例,并对用例进行总结:
源代码:https://gitee.com/lu-sijia-0722/sort/blob/master/SortLab/Sort.java
https://gitee.com/lu-sijia-0722/sort/blob/master/SortLab/SortTest.java

  1. 测试用例1:

    • 输入:5, 3, 8, 1
    • 预期输出:1 3 5 8(数组排序后的结果)
  2. 测试用例2:

    • 输入:10, 20, 5, 15, 25
    • 预期输出:5 10 15 20 25(数组排序后的结果)
  3. 测试用例3:

    • 输入:-2, 0, -5, 10, 3, 8
    • 预期输出:-5 -2 0 3 8 10(数组排序后的结果)

六、单元测试结果截图

总结:以上测试3个用例满足了条件覆盖,且覆盖了不同情况下的输入,包括正数、负数、零以及多个数字的情况。测试用例能够检验排序算法的正确性和鲁棒性。
七、实验中遇到的问题及解决方法
在冒泡排序中,第 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的基本用法和特点,了解了单元测试的重要性和意义,提高了软件质量和可靠性。我们也发现了一些需要改进的地方,例如如何编写更有效的测试用例,如何处理异常情况,如何提高测试覆盖率等。
问题:数据的顺序排好之后,冒泡算法仍然会继续进行下一轮的比较。很显然,后面的比较没有意义的
解决方案:设置bool变量flag(用于标记),如果发生了交换flag设置为true;如果没有交换就设置为false。这样当一轮比较结束后如果flag仍为false,即:这一轮没有发生交换,说明数据的顺序已经排好,没有必要继续进行下去。那么,就可以结束排序了。

posted @ 2024-04-26 15:20  LlSsJ  阅读(53)  评论(1)    收藏  举报