实验三-软件测试
一、实验题目 :软件测试
二、实验目的
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对象或模拟数据来替代实际的数据访问操作,避免对数据库的依赖。

浙公网安备 33010602011771号