测试过程
单元测试
针对单元内部逻辑进行的测试
特点
明确的名称
独立的功能
输入输出参数
可以被调用
集成测试
针对小整体的外部规格、和内部单元之间的接口进行的测试
系统测试
将产品作为一个整体,在真实的运行环境中,针对用户需求进行的测试
| 单元测试 | 集成测试 | 系统测试 | |
|---|---|---|---|
| 测试依据 | 详细设计说明书LLD | 概要设计说明书HLD | 软件需求说明书SRS |
| 测试关注点 | 单元的内部逻辑 | 小整体的规格,以及和其他小整体之间的接口 | 需求 |
| 测试方法 | 白盒测试方法 | 灰盒测试方法 | 黑盒测试方法 |
| 测试设计方法 | 采用各种逻辑覆盖率的测试设计方法 | 采用各种黑盒测试的测试设计方法 | 根据关注规格还是关注互相之间调用的接口,分别使用黑盒测试的测试设计方法和逻辑覆盖率的测试设计方法 |
| 测试覆盖完整性的评估标准 | 覆盖完整性采用逻辑覆盖率的评估标准 | 覆盖完整性采用接口覆盖率的评估标准 | 覆盖完整性采用需求覆盖率的评估标准 |
| 测试策略 | 孤立的测试策略,自顶向下的测试策略,自底向上的测试策略 | 大爆炸的组装策略,自顶向下的组装策略,自底向上的组装策略,三明治组装策略,基于业务功能的组装策略,基干集成的组装策略 | 针对不同质量特性分别进行测试的策略 |
| 测试环境 | 开发环境 | 开发环境 | 运行环境 |
| 执行顺序 | 先执行单元测试 | 然后执行集成测试 | 最后执行系统测试 |
| alpha测试 | beta测试 | |
|---|---|---|
| 测试人数 | 人数极少 | 人数较少 |
| 测试环境 | 在内部的测试环境中执行 | 在用户的真实使用环境中执行 |
| 测试过程 | 用户在项目成员指导和控制下执行验收测试 | 用户自由使用执行验收测试 |
| 社会影响 | 测试结果不公开,对社会无影响 | 公开在市场中进行,虽然用户较少,但对市场有一定的影响 |
回归测试 Regression Testing
因为产品的修改,需要再次执行的测试,叫回归测试
产品修改的原因:需求变更导致的修改,修复缺陷
回归测试可以发生在任何一个测试阶段,可以采用任何测试方法
回归测试的目的
1.检验修改是否正确
2.检验没有修改的内容是否受到了影响
回归测试的策略
1.完全重复的回归测试策略
无论只修改了哪些内容,都需要将所有内容全部重新测试
2.选择性的回归测试策略
表示只挑选一部分进行回归测试,其他内容不做回归测试
覆盖修改法 —— 只回归测试本次修改的内容,没有修改的内容都不做测试
周边影响法 —— 不仅仅回归测试修改的内容,还要分析哪些内容可能会受影响,凡是可能会受影响的内容也做回归测试
指标达成法 —— 自行定义回归测试要达到的指标,按照该指标挑选内容进行测试
测试模型
瀑布模型
类似于软件生命周期的瀑布模型,只不过将测试阶段拆分成单元测试、集成测试、系统测试和验收测试4个阶段
揭示了软件测试分阶段执行的特性,按照先单元测试、然后集成测试、再系统测试、最后验收测试的过程
V模型
将瀑布模型中的测试阶段反折向上,构成V字型的线条
揭示了单元测试活动和详细设计活动有对应关系、集成测试和概要设计有对应关系、系统测试和需求分析有对应关系
H模型 X模型
揭示了开发和测试并行进行的特性
揭示了软件测试分为前期准备阶段和后期执行阶段
揭示了测试从准备转入执行的时间节点由开发决定
双V模型 W模型
同时揭示了V模型和H模型的特性
既有测试分单元、集成、系统的分阶段进行的特性
同时又区分单元测试准备和执行、集成测试准备和执行、系统测试准备和执行
还表示了单元测试和详细设计的关系、集成测试和概要设计的关系、系统测试和需求分析的关系
揭示了软件测试的前期准备和后期执行相分离的特性,越早准备、就越晚执行
测试的4个活动
测试计划活动 - 准备阶段
制定测试计划
4W
who —— 规划测试团队,明确人员职责
where
when
what —— 任务分解,明确每个人物的目标、标准、交付物,预估所需资源、人员,并排列计划
测试设计活动 - 准备阶段
针对计划中的每个人物设计如何实施
如何搭建测试环境
如何分析业务,设计测试用例
如何准备测试数据
如何执行测试
如何编写缺陷报告、管理缺陷
如何进行回归测试
测试实现活动 - 准备阶段
编写&评审测试用例
评审测试需求
分析业务,进行测试须的设计
评审思维导图中的测试项
针对每个测试项,采用恰当的测试用例设计方法来设计若干用例
评审用例
测试执行活动
搭建测试环境
如果有服务器端环境,大部分情况由开发or发布人员进行服务器端的环境搭建
如果有客户端环境,都是由测试人员自行安装
准备测试数据
初始化的批量测试数据导入,通常由开发人员完成,导入数据库的sql语句
后续的零散的测试数据导入,由测试人员自行完成
生成:使用被测试软件or其他已证明可用的工具来获得的数据,可以直接反映软件的质量
构造:使用数据库等其他手段人为创造的测试数据,方便快捷,但如果构造不正确,则会认为的引入缺陷
执行预测试
采用冒烟测试的方法
不追求测试覆盖的完整性,而只运行软件主流程,初步检验软件能否使用的测试方法