- 一、概述
- 二、黑盒测试(只知道输入和预期输出、不需要了解内部结构与内部特性)
- 三、单元测试
- 四、白盒测试(已知源代码与程序结构)
- 五、测试管理
- 六、测试管理工具
- 七、功能测试与性能测试
- 八、软件质量模型与度量
- 九、软件质量度量工具
一、概述
1.1软件测试(以需求为中心,通过设计测试用例,保证系统满足需求)
建立缺陷预防的思想,通过统计抽样等方式不断改进测试,自动工具完全支持测试用例的运行,开展各种与测试有关的度量活动。
首要目的不是发现bug,而是确保被测系统满足需求。
测试不能丢给用户去做。
精确、完备、无冗余、简单、易于调试
阶段
1.定义需求(委托方提出)
2.分析需求(双方共同执行,生成需求规格说明)
3.实现需求(开发人员)
4.校验需求(测试人员)
执行
1.人工化
2.自动化
方法
1.动态测试
2.静态检查
人工动态测试
(提供被测对象、准备相关预期、设计测试用例、搭建测试环境、运行测试用例、检查测试结果、记录测试过程、报告发现的缺陷、执行回归测试)
人工静态测试
(提供被测对象、准备用户需求、阅读代码、阅读文档、报告发现的缺陷、执行回归测试)
自动动态测试
(提供被测对象、准备用户需求、搭建测试环境、设计测试用例、编写测试脚本、运行测试用例、检查测试结果、记录测试过程、报告发现的缺陷、执行回归测试)
方法评价标准
覆盖度高、数量少、冗余度低、缺陷定位能力高、复杂度低。
具体流程
1.计划
(时间、计划人、使用方法、涉及资源、遵循标准、测试对象、可能的风险)
输入:需求规格说明、项目计划
输出:测试计划
2.设计
(设计测试样例、设计测试过程)
输入:需求、设计文档、测试计划
输出:测试用例、测试过程
3.实施
(运行测试用例、检查测试结果、提交测试报告)
输入:测试用例、测试过程、需求
输出:测试驱动模块、测试桩模块、(测试脚本)
4.评估
(评估测试系统、评估被测系统)
输入:测试用例、缺陷报告、测试标准
输出:测试评估报告
1.2软件缺陷(功能超过需求规格说明中指出的范围,即用户不满意)
核心:抓住用户需求
措施:软件质量控制
纠编:测试人员不应对所有缺陷负责
常见情况
需求模糊不清(需要需求规格说明)
需求变化无常(应确保需求稳定)
1.3测试用例(时间、成本、质量)
输入数据
1.正常数据
2.错误数据
(满足数据类型但不在范围内、不完全满足数据类型、输入条件缺失)
3.边界数据
操作步骤
1.4软件质量(反映软件具有明确或隐含需要能力的特性总和,可以通过软件测试验证,但不能通过它提高)
二、黑盒测试(只知道输入和预期输出、不需要了解内部结构与内部特性)
可以理解为从输入域到输出域的映射。
简单有效、开发与测试可以并行、对测试人员技术要求低。
2.1边界值测试
1.寻找边界
2.定义邻域(每个邻域大小可不同)
3.选择测试数据
4.设计用例
2.2等价类测试
1.划分等价类(即某段区域内数据性质相同)
可以将一段区域分为一个有效等价类(测试功能是否实现)与两个无效等价类(测试容错性)
2.设计测试用例
弱覆盖(覆盖所有等价类,无法完全覆盖整个输入域,有多种方法覆盖等价类)
比如被两个条件划分成 n ∗ m n*m n∗m块等价类,只需要 m a x ( m , n ) max(m,n) max(m,n)个数据即可。
强覆盖(覆盖所有等价类的组合)
一般采用强覆盖,开发周期紧迫时用弱覆盖。
比如被两个条件划分成 n ∗ m n*m n∗m块等价类,需要 m n mn mn个。
缺陷:
1.可能会改变输入域(比如原输入域是由多个条件约束得到的,但用等价类测试可能会让输入域变为多个条件取并集)
2.对于无效等价类不需要等价类测试(???)
3.可能有漏洞和冗余(在多条件约束下,某些时候一些等价类可以被合并)
2.3决策表测试(在某些情况下,将部分等价类合并,减少冗余)
(???)
2.4组合测试(即两两组合)
记 k k k为参数个数(互相独立),第 i i i个有 n i n_i ni种取值方法( n 0 ≥ n 1 ≥ n 2 ≥ . . . ≥ n k − 1 n_0\geq n_1 \geq n_2\geq ...\geq n_{k-1} n0≥n1≥n2≥...≥nk−1),两两组合需要 ∏ i = 0 k − 1 n i \prod_{i=0}^{k-1}n_i ∏i=0k−1