单元测试、集成测试、系统测试
一、单元测试
1、概念
-
单元测试是指对于软件设计的最小单元(软件组成单元)进行测试。
-
软件组成单元
- 面向过程的编程语言:c语言,函数
- 面向对象的编程语言:java,类或者类当中的方法
-
测试重点
- 单元内部的数据结构
- 输入条件的边界
- 程序执行的路径
- 单元间的数据接口
- 出错处理:例,计算器中除数为0
2、单元测试策略
-
概念
驱动程序driver:主要用来接收数据,并传递给被测试单元,以及输出测试结果
桩程序stub:用来代替被测试单元需要调用的子单元
-
孤立的单元测试策略
- 方法:不考虑单元间的联系,仅针对每个单元进行独立的测试,设置驱动和桩
- 优点:简单、可以并行开展
- 缺点:驱动和桩的开发工作量大
-
自顶向下的单元测试策略
-
方法
先对于顶层的单元进行测试
对于顶层的下一层单元进行测试,将已测试过的顶层的单元作为驱动
以此类推,直到所有单元测试完成
-
优点:节省驱动程序开发的工作量
-
缺点:随着底层单元的不断加入,程序越来越复杂,测试维护成本高
-
-
自底向上的单元测试策略
-
方法:
先测试底层的单元
再对于底层单元的上一层进行测试,将已测试过的底层单元作为桩程序
以此类推,直到所有单元测试完成
-
优点:可以节省桩程序开发的工作量
-
缺点:顶层控制单元最后测试,底层单元对于上层影响较大,不是纯粹的单元测试
3、单元测试过程和输出物
- 计划:单元测试计划
- 设计:单元测试方案
- 实现:单元测试用例、单元测试规程
- 执行:缺陷报告、单元测试报告
二、集成测试
1、概念
-
在单元测试的基础上,按照设计(HLD)的要求将模块组装起来,测试组装后的功能以及模块间的接口。
-
测试方法:主要方法属于灰盒测试
-
集成测试的层次:单元》模块》子系统》系统
-
测试重点:
-
组装后的功能:
功能是否实现
一个模块是否会对其他的模块产生影响
-
接口间的数据传递:
是否存在数据丢失
是否存在异常修改
-
2、集成测试策略
-
大爆炸集成
-
方法:先对每个模块单独进行测试,设置驱动和桩,然后全部组装起来进行测试
-
优点:
可以迅速完成测试
需要的驱动和桩,以及测试用例的数量相对较少
-
缺点:
一次性组装所有模块是比较困难的,不可避免地存在较多问题
一次性组装后,某些问题可能存在漏测
-
适用范围:
维护项目
规模较小的项目
-
-
自顶向下集成
-
方法:
采用和设计一样的顺序进行拼装,从顶层模块开始向下层模块进行集成.
深度优先:优先集成下一层的模块
广度优先:优先集成同一层的模块
-
优点:
驱动开发相对较少
如果是深度优先策略,可以优先完成一个完整功能的测试
-
缺点:
桩程序成本较高
底层组件的测试被推迟了
-
适用范围:
产品结构稳定,顶层变化小
-
-
自底向上集成
-
方法:
从底层模块开始,往上层逐步进行集成
-
优点:
桩程序的工作量相对减少
底层模块的集成是可以并行的
-
缺点:
驱动工作量较大
顶层模块的验证被推迟
-
适用范围:
底层模块较为稳定,变化较少,高层接口变动较频繁的产品
-
-
三明治集成
-
方法:
将系统划分成三层:顶层、中间层(目标层)、底层
从定层开始使用自顶向下的策略集成
自底层开始采用自底向上的策略集成
最后在目标层汇合
-
优点:
集合了自顶向下和自底向上的优点
-
缺点:
中间层(目标层)测试不充分
改进:再加上对于中间层采用独立的测试策略进行测试
-
适用范围:
适用于大多数的项目
-
-
其他
- 基干集成
- 分层集成
- 基于功能集成
- 基于消息集成
- 基于进度集成
- 基于风险集成
3、集成测试过程和输出物
- 计划:集成测试计划
- 设计:集成测试方案
- 实现:集成测试用例、集成测试规程
- 执行:缺陷报告、集成测试报告
三、系统测试
1、概念
- 将已经集成好的软件,作为整个系统的一部分,与其他部分(硬件,系统软件,数据,人员等)结合在一起,在实际运行环境下,进行的测试活动。
- 目的:验证与需求规格是否相符
2、系统测试常见类型
-
功能测试
- 最基本的测试类型
- 验证软件的功能与需求规格是否一致
- 方法:人工测试、自动化测试
-
性能测试
-
软件系统在运行时所表现出的性能
-
时间特性:
app测试:app的启动时间
web测试:网页响应时间
-
资源利用特性:
软件运行时CPU占用率
内存的占用
带宽的占用
-
测试方法:
工具和自动化
-
-
压力测试
- 测试系统在资源超负荷,长时间运行情况下的性能
- 例:网站连续运行1个月后,10万用户并发访问,测试登录请求能否在30秒内完成
-
负载测试
- 对比测试系统在高负载情况下的性能表现
- 例:分别测试网站在5万,10万,20万,50万用户并发情况下,系统的响应时间
-
容量测试
- 测试系统能够正确处理的最大的数据的容量
- 例子:测试网站最大并发访问人数
-
GUI测试
-
测试对象:
简单界面元素:按钮、输入框
组合界面元素:下拉菜单、工具栏
完整界面:窗口
-
-
安装测试
安装前:安装文件、文档
安装中:安装步骤、参数
安装后:生成的文件、卸载
升级
-
稳定性测试(可靠性测试)
- 测试系统在一定的负载,长时间下能否正常运行
- 通常使用自动化方式进行测试
- 例子:app测试中的monkey测试
-
安全性测试
-
测试系统的安全性,保障数据的完整性和保密性
例:保障已授权的用户正常访问数据、阻止未授权的用户访问数据
-
-
其他
配置测试、恢复性测试(异常测试)、备份测试、
健壮性测试、文档测试、在线帮助测试、网络测试
3、系统测试过程
-
计划
- 需求分析:确定测试需求
- 系统测试计划-评审
-
设计
- 系统测试方案-评审
-
实现
- 系统测试用例-评审
- 系统测试规程
- 预测试项
-
执行
-
搭建测试环境
真实环境、仿真环境
-
准备测试数据
数据来源:手工构造、产品原生数据、工具捕获的数据、随机数据
-
执行预测试
只有预测试通过,才转系统测试
提交预测试报告
-
执行系统测试用例、提交缺陷报告并跟踪
-
回归测试
-
每日提交测试日报、提交系统测试报告
-