目录
前言
重点一览
软件测试
基本原则
目标
测试用例
软件缺陷
调试与测试
测试与质量保证
软件测试的评估准则
黑盒测试
定义
等价类划分
边界值分析
状态测试
白盒测试
定义
逻辑覆盖测试
控制流图覆盖测试
基本路径测试
灰盒测试
静态测试
含义
范围
目的
基本思想
三种评审类型
前言
本复习笔记基于王玉林老师的课堂PPT与复习大纲,供自己期末复习与学弟学妹参考用。
重点一览
软件测试
基本原则
- 穷尽测试是不可能的:决定哪些更重要
- 测试无法显示潜在的软件缺陷:不能保证没有错误
- 测试活动应该尽早进行:越早发现修改成本越低
- 软件缺陷具有群聚性:一个问题出错导致多个错误现象出现
- 注意杀虫剂现象:用异样的测试用例是不可取的(可能是少数能通过的特例)
- 应尽量由独立的测试团队进行测试:自己测试自己是不可取的(想不到特殊情况)
目标
- 确认系统满足其预期的使用和用户的需要
- 确认解决了所需解决的问题
- 为测试的过程建立责任和可解释性
- 便于及早发现软件和系统的异常
- 及早提供软件和系统的性能评估
- 为管理提供真实信息,以决定在当前状态下发布产品在商业上的风险
- 鉴别出程序在功能等方面的异常聚集之处
测试用例
定义:是测试输入、执行条件,以及预期结果的集合
目的:为特定目的开发,如执行特定的程序路径或验证与指定的需求相符合
软件缺陷
满足下面条件之一即发生软件缺陷:
- 未完成:软件未实现产品说明书要求的功能。
- 有错误:软件出现了产品说明书指明不能出现的错误。
- 画蛇添足:软件实现了产品说明书未提到的功能
- 隐含需求未实现:软件未实现产品说明书虽未明确提及但应该实现的目标。
- 不好用:软件难以理解、不易使用、运行缓慢
调试与测试
相同点:都包含处理软件缺陷和查看代码的过程
不同点:测试的目标时发现软件缺陷的存在;调试的目标是定位与修复缺陷。
测试与质量保证
- 软件测试人员的目标:尽早找出软件缺陷并确保缺陷得以修复
- 软件质量保证人员的主要职责:创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法
软件测试的评估准则
覆盖率:测试集合T/测试需求集合TB
故障插入:测试前有意地插入一些故障到程序中,发现率=发现的插入错误数/总错误数
变异分值:程序进行多次变异,用同样的测试用例进行测试,评估这些测试用例探测程序变异间差异的能力,如错误的标识符或运算符等。
黑盒测试
定义
黑盒测试指忽略系统或组件的内部机制,仅关注于那些特定输入响应及相应执行条件的输出测试,也称功能性测试。
把测试对象看做一个黑盒子,测试人员完全不考虑程序内部逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
分类
等价类划分
含义:等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少许有代表性的数据作为测试用例
步骤:对输入域进行建模、对参数进行等价类划分、对参数进行恰当的组合。
边界值分析
边界:对输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。
边界选取:应当选取正好等于、刚刚大于、或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。
状态测试
必要性:黑盒测试阶段,程序内部的逻辑结构无从得知,因此只能通过状态测试间接验证。
含义:一种基于模型的测试,是指用状态图来描述时间序列/用例场景,由此产生测试用例
步骤:建立状态转换图、设计测试用例。
白盒测试
定义
白盒测试指考虑系统或组件内部机制的测试(如分支测试、路径测试、语句测试等),也称结构性测试。
把测试对象看作一个透明的盒子,它允许测试人员利用程序的内部逻辑结构及有关信息设计或选择测试用例,对程序的所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
逻辑覆盖测试
含义:以程序内部的逻辑结构为基础的设计测试用例的技术,属于白盒测试。
分类:
语句覆盖:每条可执行语句至少执行一次
条件覆盖:每个条件的可能取值至少执行一次
分支覆盖:每个判断的取真分支和取假分支都经历一次
条件组合覆盖:每个判断所有可能取值条件的组合都经历一次
控制流图覆盖测试
含义:把代码转换为控制流图,基于其进行测试,属于白盒测试。
注意:
- 在选择或多分支结构中,分支的汇聚处应有一个汇聚结点
- 边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域
- 如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的复合条件表达式,则需要改为一系列只有单个条件的嵌套的判断
节点覆盖:等价于语句覆盖
边覆盖:包含节点覆盖且也可以实现分支覆盖
路径覆盖:覆盖程序中所有可能的路径(基本路径测试)
基本路径测试
- 计算程序环路复杂性:
- ①V(G)=e-n+2,e:图中边的数目;n:节点数目;
- ②区域数目
- 确定线性独立性的基本集合:
- 从入口走到出口作为基线,回溯基线路径,当出度大于等于2时选择不同的边,重复直到路径数目等于V(G)
- 为每条基本路径导出测试用例:
- 确保基本路径集中的每一条路径的执行,用逻辑覆盖方法保证某条路径可被测试到,最后执行测试用例与预期结果比较
灰盒测试
黑盒和白盒测试混合方法。
介于白盒测试和黑盒测试之间的一种测试,多用于集成测试阶段,不仅关注输入输出的正确性,同时也关注程序内部的情况。
静态测试
含义
不实际运行程序,通过检查和阅读等手段发现错误、评估代码质量的软件测试技术。
范围
代码检查、静态结构分析、代码质量度量
目的
提高代码可靠性、尽早发现缺陷、审核定位易出错模块
基本思想
评审
三种评审类型
同事审查:非正式评审,初次审查
走查:开发组内部进行,开发者讲解、回答问题、记录
审查:会议形式,制定目标流程规则结果报告等