实验三-软件测试

一、实验题目 :软件测试

二、实验目的

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:2,3,1

期望输出:1,2,3

用例2:3,0,1

期望输出:0,1,3

实际输出:2,1,3

六、单元测试结果截图

说明:用例1当中,该用例中需要将第3个元素交换到第1个位置,测试运行通过,出现对勾箭头。

说明:当预期和实际输出不一致时,会反映下标为1的元素出现错误。

七、实验中遇到的问题及解决方法

快速排序代码:

public class QuickSort {
public static int[] quickSort(int[] array, int low, int high) {
if (low < high) {
// 找到 pivot 并重新排列数组
int pi = partition(array, low, high);

        // 递归地对左半部分进行排序
        quickSort(array, low, pi - 1);

        // 递归地对右半部分进行排序
        quickSort(array, pi + 1, high);
    }
    return array;
}
// 这是一个分区过程,它返回 pivot 的索引
private static int partition(int[] array, int low, int high) {
    int pivot = array[high]; // 选择最右边的元素作为 pivot
    int i = (low - 1); // 索引 i 用于指示小于 pivot 的元素的边界

    for (int j = low; j < high; j++) {
        // 如果当前元素小于或等于 pivot
        if (array[j] <= pivot) {
            i++; // 增加 i
            // 交换 array[i] 和 array[j]
            int temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
    }

    // 交换 pivot 和 array[i+1]
    int temp = array[i + 1];
    array[i + 1] = array[high];
    array[high] = temp;

    return i + 1;
}

}

单元测试代码:

import org.junit.Assert;
import org.junit.Test;

import static org.junit.Assert.*;

public class QuickSortTest {

@Test
public void quickSort() {

// System.out.println();
int []arr = {2,3,1};
int []text = {1,2,3};
Assert.assertArrayEquals(text,QuickSort.quickSort(arr ,0 ,arr.length-1));
}
}

遇到问题及方法

问题:
测试环境与实际生产环境存在差异,导致测试结果不准确。
测试数据准备不足或数据污染导致测试失败。
解决方法:
1、尽可能使测试环境接近生产环境,包括使用的数据库、文件系统、网络配置等。
2、使用Docker等容器化技术,快速搭建与生产环境一致的测试环境。
3、利用测试框架(如JUnit、TestNG等)的配置功能,为不同的测试场景提供不同的环境配置。
4、使用测试数据工厂或数据库测试框架(如DBUnit)准备测试数据。
5、在测试前后对数据库进行清理,确保测试数据不会污染数据库。
6、使用Mock对象或模拟数据来替代实际的数据访问操作,避免对数据库的依赖。

posted @ 2024-05-07 16:22  qq001122  阅读(50)  评论(0)    收藏  举报