详解单元测试、集成测试、系统测试
1、单元测试
与编码同步进⾏,针对软件最⼩组成单元进⾏测试,主要采⽤⽩盒测试⽅法,从被测对象的内部结构出发设计测试⽤例
到底怎么才算最⼩单元呢,最⼩单元实际是认为定义的,⼀个⽅法,⼀个类都可以理解为“最⼩
单元”。
- 测试阶段:编码后或者编码前(TDD)
- 测试对象:最⼩模块
- 测试⼈员:⽩盒测试⼯程师或开发⼯程师
- 测试依据:代码和注释+详细设计⽂档
- 测试⽅法:⽩盒测试
- 测试内容:模块接⼝测试、局部数据结构测试、路径测试、错误处理测试、边界测试
针对上⾯给出的冒泡排序,我们尝试实现⼀个简单的单元测试。
public class Main {public static void bubbleSort(int[] arr) {int n = arr.length;for (int i = 0; i < n; i++) {// 每轮遍历将最⼤的数移到末尾for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}}public static void main(String[] args) {// 排序⽆序数组Test01();// 排序有序数组Test02();// 排序空数组Test03();// 排序有重复数组数组Test04();}private static void Test04() {int[] act_array1= {1, 1, 29, 12, 12, 9, 9};int[] expect_array1 = {1, 1, 9, 9, 12, 12, 29};//排序⽆序数组bubbleSort(act_array1);boolean isSame = Arrays.equals(act_array1, expect_array1);//判断两个数组内容是不是⼀样if(isSame == false) {System.out.println("测试不通过");} else {System.out.println("测试通过");}}private static void Test03() {int[] act_array1= {};int[] expect_array1 = {};//排序⽆序数组bubbleSort(act_array1);boolean isSame = Arrays.equals(act_array1, expect_array1);//判断两个数组内容是不是⼀样if(isSame == false) {System.out.println("测试不通过");} else {System.out.println("测试通过");}}private static void Test02() {int[] act_array1= {1, 2, 3, 4, 5};int[] expect_array1 = {1, 2, 3, 4, 5};//排序⽆序数组bubbleSort(act_array1);boolean isSame = Arrays.equals(act_array1, expect_array1);//判断两个数组内容是不是⼀样if(isSame == false) {System.out.println("测试不通过");} else {System.out.println("测试通过");}}private static void Test01() {int[] act_array1= {64, 34, 25, 12, 22, 11, 90};int[] expect_array1 = {11, 12, 22, 25, 34, 64, 90};//排序⽆序数组bubbleSort(act_array1);boolean isSame = Arrays.equals(act_array1, expect_array1);//判断两个数组内容是不是⼀样if(isSame == false) {System.out.println("测试不通过");} else {System.out.println("测试通过");}}
}
2、集成测试
集成测试也称联合测试(联调)、组装测试,将程序模块采⽤适当的集成策略组装起来,对系统的接口及集成后的功能进⾏正确性检测的测试⼯作。集成主要⽬的是检查软件单位之间的接⼝是否正确
- 测试阶段:⼀般单元测试之后进⾏
- 测试对象:模块间的接⼝
- 测试⼈员:⽩盒测试⼯程师或开发⼯程师
- 测试依据:单元测试的模块+概要设计⽂档
- 测试⽅法:⿊盒测试与⽩盒测试相结合
- 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模
块缺陷对系统的影响
3、系统测试
对通过集成测试的系统进⾏整体测试,验证系统功能性和⾮功能性需求的实现。
- 测试阶段:集成测试通过之后
测试对象:整个系统(软、硬件)
测试⼈员:⿊盒测试⼯程师
测试依据:需求规格说明⽂档
测试⽅法:⿊盒测试
测试内容:功能、界⾯、可靠性、易⽤性、性能、兼容性、安全性等