RELL软件测试简历怎么,2.8数据流测试

实用软件工程课程体系 软件测试 结构性测试 数据流测试 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 程序结构分析 程序结构分析程序结构分析 检查程序的控制结构 以验证程序结构的一些规则 在程序编写过程中是否得到遵循 在此基础上得到 有关结构成分的语法树并揭示控制结构的缺陷 检查程序的控制结构 以验证程序结构的一些规则 在程序编写过程中是否得到遵循 在此基础上得到 有关结构成分的语法树并揭示控制结构的缺陷 控制流分析控制流分析 数据流分析数据流分析 静态 分析 方法 静态 分析 方法 查找定义 引用缺陷查找定义 引用缺陷 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 程序结构分析 控制流分析控制流分析 数据流分析数据流分析 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 1 控制流分析 原因原因 程序结构的基本要求程序结构的基本要求 结构分析结构分析 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 1 控制流分析 原因 非结构化程序给测试 排错和程序维护带来困难非结构化程序给测试 排错和程序维护带来困难 人们要求程序是结构良好的人们要求程序是结构良好的 需要系统地检查程序的控制结构需要系统地检查程序的控制结构 采用控制流图采用控制流图 类似程序图类似程序图 可以进行简化可以进行简化 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 1 控制流分析 原因 程序控制流视角 从程序元素和它们执行顺序之间的联系观察 程序 程序控制流视角 从程序元素和它们执行顺序之间的联系观察 程序 控制流图 控制流图 Control Flow 用于描述程序控制流 用于描述程序控制流 出发点 程序许多错误发生在程序错误的执行流程中 追踪程 序的执行流程有助于发现程序错误 出发点 程序许多错误发生在程序错误的执行流程中 追踪程 序的执行流程有助于发现程序错误 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 1 控制流分析 基本要求 程序不应包含程序不应包含 转向不存在的标号 转向不存在的标号 无用的语句标号 无用的语句标号 从程序入口进入后无法到达的语句 从程序入口进入后无法到达的语句 不能达到停机语句的语句 不能达到停机语句的语句 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 1 控制流分析 结构分析 利用基本结构化的程序进行结构化程序设计利用基本结构化的程序进行结构化程序设计 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 程序结构分析 控制流分析控制流分析 数据流分析数据流分析 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 最初是随着编译系统要生成有效的目标码而出现的 主要用于代码 优化 最初是随着编译系统要生成有效的目标码而出现的 主要用于代码 优化 现在主要为发现现在主要为发现定义定义 引用异常引用异常缺陷缺陷 变量被定义 但从来没有使用 引用 变量被定义 但从来没有使用 引用 所使用的变量没有被定义 所使用的变量没有被定义 变量在使用之前被定义两次 变量在使用之前被定义两次 指关注变量接受值的点和使用 或引 用 这些值的点的结构性测试形式 指关注变量接受值的点和使用 或引 用 这些值的点的结构性测试形式 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 程序数据流视角 程序是一个程序元素对数据访问的过程程序数据流视角 程序是一个程序元素对数据访问的过程 数据流关系 数据数据流关系 数据 定义定义 使用使用 对对 使用程序图来描述数据定义使用程序图来描述数据定义 使用对使用对 出发点 对数据的不正确处理出发点 对数据的不正确处理 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 数据流测试用作路径测试的数据流测试用作路径测试的 真实性检查真实性检查 定义 使用测试定义 使用测试 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 G P 程序图 程序图 构造方式同前 语句片段代表节点 边代表节点序列构造方式同前 语句片段代表节点 边代表节点序列 单入口 单出口 且不允许从某个节点到其自身的边单入口 单出口 且不允许从某个节点到其自身的边 P 程序 程序 V 一组程序变量 一组程序变量 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 节点是语句或语句的一部分 边表示语句的控制流程节点是语句或语句的一部分 边表示语句的控制流程 If then 1 2 3 1 2 前测试循环前测试循环 1 2 后测试循环后测试循环 1 2 3 串行串行 If then else Choose case 1 32 4 1 42 5 3 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 定义节点 定义节点 DEF v n 节点是变量的定义节点 当且仅当变量节点是变量的定义节点 当且仅当变量v的值由对应节点的值由对应节点 n的语句片段处的语句片段处定义 定义 使用节点 使用节点 USE v n 节点节点n是变量是变量v的使用节点 当且仅当变量的使用节点 当且仅当变量v的值在对应节点的值在对应节点n的语句片段处的语句片段处 使用 使用 谓词使用 谓词使用 P use 计算使用 计算使用 C use 使用节点使用节点USE v n 是一个谓词使用 当且仅当语句是一个谓词使用 当且仅当语句n是谓词语句 否则 是谓词语句 否则 USE v n 是计算使用 是计算使用 Vv PGn 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 定义节点 定义节点 DEF v n 执行时 与该变量关联的存储单元的内容会执行时 与该变量关联的存储单元的内容会改变改变 使用节点 使用节点 USE v n 执行时 与该变量关联的存储单元的内容执行时 与该变量关联的存储单元的内容保持不变保持不变 谓词使用 谓词使用 P use 计算使用 计算使用 C use 对应谓词使用的节点的外度对应谓词使用的节点的外度 2 对应计算使用的节点的外度对应计算使用的节点的外度 1 输入语句 赋值语句 循环控制语句和过程调用输入语句 赋值语句 循环控制语句和过程调用 输出语句 赋值语句 条件语句 循环控制语句和过程调用输出语句 赋值语句 条件语句 循环控制语句和过程调用 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 变量的定义和使用变量的定义和使用 例例1 a b DEF 1 a USES 1 b 例例2 a a b DEF 1 a USES 1 a b 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 定义定义 使用路径 使用路径 du path 关于变量关于变量v的定义的定义 使用路径是使用路径是PATHS P 中的路径 使得对某个 存 在定义和使用节点 中的路径 使得对某个 存 在定义和使用节点DEF v m 和和USE v n 使得 使得m和和n是该路径的最初和最终 节点 是该路径的最初和最终 节点 定义清除路径 定义清除路径 dc path 关于变量关于变量v的定义的定义 清除路径是具有最初和最终节点清除路径是具有最初和最终节点DEF v m 和和USE v n 的的 PATH P 中的路径 使得该路径中没有其他节点是中的路径 使得该路径中没有其他节点是v的定义节点 的定义节点 定义 使用路径和定义清除路径描述了跨 从值被定义的点到值被使用的点的源语 句的数据流 定义 使用路径和定义清除路径描述了跨 从值被定义的点到值被使用的点的源语 句的数据流 Vv 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 不是定义清除的定义 使用路径 是潜在 有问题的地方 不是定义清除的定义 使用路径 是潜在 有问题的地方 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 变量的定义和使用变量的定义和使用 1 a 5 定义定义 a 2 While C1 3if C2 4b a a 使用使用 a 5a a 1 定义且使用定义且使用a 6 7print a 使用使用 a 8Print b 使用使用 b 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 Du path dc path 1234 y 12345 y 1234567 n 567 y 1 2 3 4 5 6 7 8 1 2 3 DD路径图路径图 程序图程序图 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 定义定义 使用节点使用节点 变量变量定义节点定义节点使用节点使用节点 A1 54 5 7 B48 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 定义定义 使用路径使用路径 变量变量路径 开始 结束 节点路径 开始 结束 节点是定义清除吗 是定义清除吗 a1 4 1 5 1 7 5 7 是 否 否 是 b4 8是 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 定义定义 使用路径测试覆盖指标使用路径测试覆盖指标 数据流指标假设所有程序变量都标识了定义节点和使用节 点 且关于各变量都表示了定义 数据流指标假设所有程序变量都标识了定义节点和使用节 点 且关于各变量都表示了定义 使用路径使用路径 T 拥有变量集合 拥有变量集合V的程序的程序P的程序图的程序图G P 中的一个路径集合中的一个路径集合 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 全定义准则全定义准则 集合集合T满足程序满足程序P的全定义准则 当且仅当所有变量 的全定义准则 当且仅当所有变量 T包含从包含从v的每个 定义节点到 的每个 定义节点到v的的一个使用一个使用的定义清除路径 的定义清除路径 全使用准则全使用准则 集合集合T满足程序满足程序P的全使用准则 当且仅当所有变量 的全使用准则 当且仅当所有变量 T包含从包含从v的每个 定义节点到 的每个 定义节点到v的的所有使用以及到所有所有使用以及到所有USE v n 后续节点后续节点的定义清除路径 的定义清除路径 Vv Vv 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 全谓词使用全谓词使用 部分计算使用准则部分计算使用准则 集合集合T满足程序满足程序P的全谓词使用的全谓词使用 部分计算使用准则 当且仅当所有变 量 部分计算使用准则 当且仅当所有变 量 T包含从包含从v的每个定义节点到的每个定义节点到v的的所有谓词使用所有谓词使用的定义清除路径 且 若 的定义清除路径 且 若v的一个定义没有谓词使用 则定义清除路径导致至少一个计算使用 的一个定义没有谓词使用 则定义清除路径导致至少一个计算使用 全计算使用全计算使用 部分谓词使用准则部分谓词使用准则 集合集合T满足程序满足程序P的全计算使用的全计算使用 部分谓词使用准则 当且仅当所有变 量 部分谓词使用准则 当且仅当所有变 量 T包含从包含从v的每个定义节点到的每个定义节点到v的的所有计算使用所有计算使用的定义清除路径 且 若 的定义清除路径 且 若v的一个定义没有计算使用 则定义清除路径导致至少一个谓词使用 的一个定义没有计算使用 则定义清除路径导致至少一个谓词使用 Vv Vv 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 全定义全定义 使用路径准则使用路径准则 集合集合T满足程序满足程序P的全定义的全定义 使用路径准则 当且仅当所有变量 使用路径准则 当且仅当所有变量 T 包含从包含从v的每个定义节点到的每个定义节点到v的的所有使用所有使用 以及到所有 以及到所有USE v n 后续节点的 定义清除路径 且这些路径要么有一次的环经过 要么没有环路 后续节点的 定义清除路径 且这些路径要么有一次的环经过 要么没有环路 Vv 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 3 2 数据流分析 定义 使用测试 数据流覆盖指标层次结构数据流覆盖指标层次结构 全路径全路径 全定义全定义 使用路径使用路径 全使用全使用 全计算使用全计算使用 部分谓词使用部分谓词使用全谓词使用全谓词使用 部分计算使用部分计算使用 全定义全定义全谓词使用全谓词使用 全边全边 全节点全节点 定义 使用测试提供一种检查缺陷可 能发生点的严格和系统化的方法 定义 使用测试提供一种检查缺陷可 能发生点的严格和系统化的方法 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 白盒测试 白盒测试 White box testing 白盒的 实现是已知的 并被用来标识测试用例 白盒的 实现是已知的 并被用来标识测试用例 程序的结构和处理过程象白盒子一样透明 允许测试人员 利用 程序的结构和处理过程象白盒子一样透明 允许测试人员 利用程序内部的逻辑结构及有关信息程序内部的逻辑结构及有关信息 设计或选择测试用 例 对程序所有逻辑路径进行测试 设计或选择测试用 例 对程序所有逻辑路径进行测试 输入输出输入输出 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 结构性测试基于被测程序的源代码结构性测试基于被测程序的源代码 结构性测试方法支持严格定义 数学分析和精确度量结构性测试方法支持严格定义 数学分析和精确度量 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 什么时候测试可以停止 什么时候测试可以停止 太常见太常见 时间用光时间用光 软件可靠性模型 支持该选择 软件可靠性模型 支持该选择 继续测试未产生新的失效继续测试未产生新的失效 继续测试未发现新的缺陷继续测试未发现新的缺陷 若已遵循测试规则和指导方针 则 该选择是很好的 否则类似选择 若已遵循测试规则和指导方针 则 该选择是很好的 否则类似选择1 好的选择好的选择 无法考虑新的测试用例无法考虑新的测试用例 回报很小回报很小 非常好的选择非常好的选择 达到所要求的覆盖达到所要求的覆盖 无法保证无法保证 所有缺陷都已经清除所有缺陷都已经清除 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 逻辑覆盖逻辑覆盖 路径测试路径测试 程序结构分析程序结构分析 是以程序内部的逻辑结 构为基础设计测试用例 的技术 是以程序内部的逻辑结 构为基础设计测试用例 的技术 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 逻辑覆盖 语句覆盖语句覆盖 判定覆盖判定覆盖 条件覆盖条件覆盖 判定判定 条件覆盖条件覆盖 条件组合覆盖条件组合覆盖 路径覆盖路径覆盖 每一可执行语句至少执行一次 每一可执行语句至少执行一次 语句覆盖是最弱的逻辑覆盖准则语句覆盖是最弱的逻辑覆盖准则 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 逻辑覆盖 语句覆盖语句覆盖 判定覆盖判定覆盖 条件覆盖条件覆盖 判定判定 条件覆盖条件覆盖 条件组合覆盖条件组合覆盖 路径覆盖路径覆盖 在 的基础上 每个判定的 真 假分支至少执行一次 在 的基础上 每个判定的 真 假分支至少执行一次 不一定能发现判断的条件中存在的 错误 不一定能发现判断的条件中存在的 错误 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 逻辑覆盖 语句覆盖语句覆盖 判定覆盖判定覆盖 条件覆盖条件覆盖 判定判定 条件覆盖条件覆盖 条件组合覆盖条件组合覆盖 路径覆盖路径覆盖 在 的基础上 每个判定的 每个条件的可能取值至少执 行一次 在 的基础上 每个判定的 每个条件的可能取值至少执 行一次 条件覆盖 判定覆盖条件覆盖 判定覆盖 不一定 不一定 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 逻辑覆盖 语句覆盖语句覆盖 判定覆盖判定覆盖 条件覆盖条件覆盖 判定判定 条件覆盖条件覆盖 条件组合覆盖条件组合覆盖 路径覆盖路径覆盖 即判定覆盖 条件覆盖 即 同时考虑条件的组合值及 判定结果的检验 即判定覆盖 条件覆盖 即 同时考虑条件的组合值及 判定结果的检验 不一定能发现逻辑表达式中 的错误 不一定能发现逻辑表达式中 的错误 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 逻辑覆盖 语句覆盖语句覆盖 判定覆盖判定覆盖 条件覆盖条件覆盖 判定判定 条件覆盖条件覆盖 条件组合覆盖条件组合覆盖 路径覆盖路径覆盖 每个判定表达式中条件的各种 可能组合都至少执行一次 每个判定表达式中条件的各种 可能组合都至少执行一次 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 逻辑覆盖 语句覆盖语句覆盖 判定覆盖判定覆盖 条件覆盖条件覆盖 判定判定 条件覆盖条件覆盖 条件组合覆盖条件组合覆盖 路径覆盖路径覆盖 程序中每条可能的路径都至 少执行一次 若图中有环 则 每个环至少执行一次 程序中每条可能的路径都至 少执行一次 若图中有环 则 每个环至少执行一次 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 逻辑覆盖 语句覆盖语句覆盖 判定覆盖判定覆盖 条件覆盖条件覆盖 判定判定 条件覆盖条件覆盖 条件组合覆盖条件组合覆盖 路径覆盖路径覆盖 无论哪种测试覆盖 即 使覆盖率达100 都 不能保证找出所有隐 藏的缺陷 无论哪种测试覆盖 即 使覆盖率达100 都 不能保证找出所有隐 藏的缺陷 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 逻辑覆盖 K A Foster的的ESTCA覆盖准则覆盖准则 Error Sensitive Test Cases Analysis 对于对于A Rell B rell可以是可以是 型的分支谓词 选择型的分支谓词 选择A B 使测试执行 到该分支语句时 使测试执行 到该分支语句时 AB的情况分别出现一次 的情况分别出现一次 对于对于A Rell C rell可以是可以是 A为常量为常量 型的分支谓词 当型的分支谓词 当rell为为 时 选择 时 选择A使得使得A C M M时距时距C最小的机器允许正数 若最小的机器允许正数 若A和和C均为整型 数 均为整型 数 M 1 当 当rell为为 1的最大链长度 1的最大链 由一个节点组成 出度 0 由一个节点组成 入度 2或出度 2 由一个节点组成 入度 1且出度 1 由一个节点组成 出度 0 由一个节点组成 入度 2或出度 2 由一个节点组成 入度 1且出度 1 对应唯一的源节点对应唯一的源节点对应唯一的源节点对应唯一的源节点 对应唯一的汇节点对应唯一的汇节点对应唯一的汇节点对应唯一的汇节点 对应条件语句对应条件语句对应条件语句对应条件语句 用于短分支用于短分支用于短分支用于短分支 对应串行语句对应串行语句对应串行语句对应串行语句 Initial Node Terminal Node Interior Nodes a 2 connected chain 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 路径测试 DD 路径图 路径图 给定采用命令式语句编写的一段程序 其给定采用命令式语句编写的一段程序 其DD路径 图是有向图 其中 节点表示程序图的 路径 图是有向图 其中 节点表示程序图的DD 路径 边表示连续 路径 边表示连续DD 路径之间的控制流 路径之间的控制流 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 路径测试 DD 路径 路径 测试覆盖指标测试覆盖指标 基路径测试基路径测试 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 路径测试 测试覆盖指标 基于程序图 测试覆盖指标 基于程序图 C0所有语句所有语句 C1所有所有DD 路径路径 判断分支 判断分支 C1p 所有判断的每种分支所有判断的每种分支 C2 C1覆盖覆盖 循环覆盖循环覆盖 Cd C1覆盖覆盖 DD 路径的所有依赖对偶路径的所有依赖对偶 CMCC Cik Cstat 多条件覆盖多条件覆盖 包含最多包含最多k次循环的所有程序路径 通常次循环的所有程序路径 通常k 2 路径具有 路径具有 统计重要性统计重要性 的部分 所有可能的执行路径 指标 覆盖描述 的部分 所有可能的执行路径 指标 覆盖描述 C 语句覆盖语句覆盖语句覆盖语句覆盖 点覆盖 点覆盖 点覆盖 点覆盖 判定覆盖判定覆盖判定覆盖判定覆盖 边覆盖 边覆盖 边覆盖 边覆盖 条件覆盖条件覆盖条件覆盖条件覆盖 路径测试路径测试路径测试路径测试 循环覆盖循环覆盖循环覆盖循环覆盖 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 路径测试 语句与判断测试语句与判断测试 DD 路径测试路径测试 要求找出一组测试用例 使得当执行时 程序 图的所有 要求找出一组测试用例 使得当执行时 程序 图的所有节点节点至少执行一次至少执行一次 对于对于C1指标 要求执行每个判断分支 则应遍历指标 要求执行每个判断分支 则应遍历 DD 路径图中每条边 路径图中每条边 对于对于C1p覆盖 若为条件语句 则应覆盖真 假分 支 若为 覆盖 若为条件语句 则应覆盖真 假分 支 若为CASE语句 应覆盖每个子句 语句 应覆盖每个子句 对于较长的对于较长的DD 路径 代表复杂计算 应采用多个 功能性测试 尤其是边界值和特殊值测试 路径 代表复杂计算 应采用多个 功能性测试 尤其是边界值和特殊值测试 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 路径测试 DD 路径的依赖对偶路径的依赖对偶 循环覆盖循环覆盖 即数据流测试即数据流测试 串联循环串联循环 嵌套循环嵌套循环 连锁循环连锁循环 非结构循环非结构循环 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 路径测试 多条件覆盖多条件覆盖 研究研究DD 路径的复合条件中可能出现分支的不同方式路径的复合条件中可能出现分支的不同方式 条件测试路径选择条件测试路径选择 构造真值表构造真值表 将复合判断修改为嵌套的简单将复合判断修改为嵌套的简单if then else逻辑 产生更多要覆盖的 逻辑 产生更多要覆盖的DD 路径路径 嵌套型分支结构嵌套型分支结构 连锁型分支结构连锁型分支结构 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 路径测试 DD 路径 路径 测试覆盖指标测试覆盖指标 基路径测试基路径测试 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 路径测试 基路径测试基路径测试 基本思想 基本思想 找出一组独立路径进行测试 数学基础 数学基础 将程序看作一种向量空间 该空间的基是要测试的非常有 意义的元素集合 若基无问题 则用基表述的一切都无问题 步骤 步骤 从程序代码生成 程序图从程序代码生成 程序图 计算圈复杂度计算圈复杂度 确定基路径集合确定基路径集合 设计测试用例设计测试用例 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 路径测试 基路径测试的优点基路径测试的优点 给出了必须进行的测试的下限给出了必须进行的测试的下限 提供了用作功能性测试交叉检查的一组指标提供了用作功能性测试交叉检查的一组指标 若发现同一条程序路径被多个功能性测试用例 遍历 则可怀疑该 若发现同一条程序路径被多个功能性测试用例 遍历 则可怀疑该冗余冗余不会发现新的缺陷不会发现新的缺陷 若未达到一定的DD 路径覆盖 则可知功能性测 试用例中存在 若未达到一定的DD 路径覆盖 则可知功能性测 试用例中存在漏洞漏洞 利用源代码的性质标识合适的覆盖指标利用源代码的性质标识合适的覆盖指标 采用这些指标交叉检查功能性测试用例采用这些指标交叉检查功能性测试用例 若未达到要求的覆盖 则根据有意义的 路径标识额外的测试用例 若未达到要求的覆盖 则根据有意义的 路径标识额外的测试用例 策 略 策 略 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 路径测试 基路径测试的不足基路径测试的不足 仍然离代码太远 难以发现不可行路径仍然离代码太远 难以发现不可行路径 路径测试将代码采用有向图表示和程序路径公 式化 掩盖了代码中的重要信息 路径测试将代码采用有向图表示和程序路径公 式化 掩盖了代码中的重要信息 数据流测试数据流测试 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 逻辑覆盖逻辑覆盖 路径测试路径测试 程序结构分析程序结构分析 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 程序结构分析 程序结构分析程序结构分析 检查程序的控制结构 以验证程序结构的一些规则 在程序编写过程中是否得到遵循 在此基础上得到 有关结构成分的语法树并揭示控制结构的缺陷 检查程序的控制结构 以验证程序结构的一些规则 在程序编写过程中是否得到遵循 在此基础上得到 有关结构成分的语法树并揭示控制结构的缺陷 控制流分析控制流分析 数据流分析数据流分析 静态 分析 方法 静态 分析 方法 查找定义 引用缺陷查找定义 引用缺陷 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 程序结构分析 控制流分析 利用基本结构化的程序进行结构化程序设计控制流分析 利用基本结构化的程序进行结构化程序设计 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 程序结构分析 数据流分析 用作路径测试的数据流分析 用作路径测试的 真实性检查真实性检查 定义 使用测试定义 使用测试 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 程序结构分析 定义节点 定义节点 DEF v n 使用节点 使用节点 USE v n 谓词使用 谓词使用 P use 计算使用 计算使用 C use 定义定义 使用路径 使用路径 du path 定义清除路径 定义清除路径 dc path 定义 使用路径和定义清除路径描述了跨从值被定义的点到值被使用的点 的源语句的数据流 定义 使用路径和定义清除路径描述了跨从值被定义的点到值被使用的点 的源语句的数据流 不是定义清除的定义 使用路径 是潜在有问题的地方 不是定义清除的定义 使用路径 是潜在有问题的地方 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 程序结构分析 定义定义 使用路径测试覆盖指标使用路径测试覆盖指标 全定义准则全定义准则 全使用准则全使用准则 全谓词使用全谓词使用 部分计算使用准则部分计算使用准则 全计算使用全计算使用 部分谓词使用准则部分谓词使用准则 全定义全定义 使用路径准则使用路径准则 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 程序结构分析 数据流覆盖指标层次结构数据流覆盖指标层次结构 定义 使用测试提供一种检查缺陷可能发生点的严格 和系统化的方法 定义 使用测试提供一种检查缺陷可能发生点的严格 和系统化的方法 全路径全路径 全定义全定义 使用路径使用路径 全路径全路径 全计算使用全计算使用 部分谓词使用部分谓词使用全谓词使用全谓词使用 部分计算使用部分计算使用 全定义全定义全谓词使用全谓词使用 全边全边 全节点全节点 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 结构性测试充当对功能性测试的交叉检查结构性测试充当对功能性测试的交叉检查 功能性测试的漏洞与冗余功能性测试的漏洞与冗余 用于方法评估的指标用于方法评估的指标 举例举例 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 传统三角形程序图传统三角形程序图 源节点 汇节点源节点 汇节点 圈复杂度圈复杂度 基路径基路径 等边三角形等边三角形等腰三角形等腰三角形非三角形非三角形不等边三角形不等边三角形 输入输入a b c Match 0 match match 1a b Y N a c Y match match 2 b c Y match match 3 N N match 0 match 1 a b c match 2 Y a b c a c b Y N Y N Y N match 3 N Y Y N N Y N b c a Y N b c a N a b c Y Y N 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 三角形中的路径 路径节点序列描述 P1 1 2 3 4 5 6 7 13 16 18 20 等边三角形 P2 1 3 5 6 7 13 16 18 19 15 等腰三角形 b c P3 1 3 5 6 7 13 16 18 19 12 非三角形 b c P4 1 3 5 6 7 13 16 17 15 等腰三角形 a c P5 1 3 5 6 7 13 16 17 12 非三角形 a c P6 1 3 5 6 7 13 14 15 等腰三角形 a b P7 1 3 5 6 7 13 14 12 非三角形 a b P8 1 3 5 6 7 8 12 非三角形 a b c P9 1 3 5 6 7 8 9 12 非三角形 b c a P10 1 3 5 6 7 8 9 10 12 非三角形 a c b P11 1 3 5 6 7 8 9 10 11 不等边三角形 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 一般边界测试的路径覆盖一般边界测试的路径覆盖 TC abcOutput路径 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 100 100 100 100 100 100 100 100 100 100 1 2 100 199 200 100 100 100 100 100 1 2 100 199 200 100 100 100 100 100 1 2 100 199 200 100 100 100 100 100 100 100 100 100 100 等腰三角形 等腰三角形 等边三角形 等腰三角形 非三角形 等腰三角形 等腰三角形 等边三角形 等腰三角形 非三角形 等腰三角形 等腰三角形 等腰三角形 等边三角形 非三角形 P6 P6 P1 P6 P7 P4 P4 P1 P4 P5 P2 P2 P1 P2 p3 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 一般边界测试的路径覆盖一般边界测试的路径覆盖 覆盖路径 覆盖路径 p1 p2 p3 p4 p5 p6 p7 未覆盖路径 未覆盖路径 p8 p9 p10 p11 最坏情况测试的路径覆盖最坏情况测试的路径覆盖 125个用例非常冗余个用例非常冗余 功能测试覆盖分析表功能测试覆盖分析表 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 一般3 3 1 3 1 3 1 0 0 0 0 最坏5 12 6 11 6 12 7 17 18 19 12 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 用于方法评估的指标用于方法评估的指标 假设功能性测试技术M生成m个测试用例 并根据标识被测单元中的s个 元素的结构性测试指标S来跟踪这些测试用例 但执行m个测试用例 时 经过n个结构性测试元素 则 假设功能性测试技术M生成m个测试用例 并根据标识被测单元中的s个 元素的结构性测试指标S来跟踪这些测试用例 但执行m个测试用例 时 经过n个结构性测试元素 则 方法方法M关于指标关于指标S的覆盖 的覆盖 n s 记做 记做C M S 方法方法M关于指标关于指标S的冗余 的冗余 m s 记做 记做R M S 方法方法M关于指标关于指标S的净冗余 的净冗余 m n 记做 记做NR M S 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 一般地 结构性测试指标越精细 会产生更多的元素 一般地 结构性测试指标越精细 会产生更多的元素 s越 大 因此 给定功能性测试方法通过更严格的结构性测试指 标评估时有效性会变得很低 越 大 因此 给定功能性测试方法通过更严格的结构性测试指 标评估时有效性会变得很低 保险金问题保险金问题 程序图程序图 源节点 汇节点源节点 汇节点 圈复杂度圈复杂度 基路径基路径 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 用户的一个帐户将要透支 就从该用户的其它帐户把不够的钱转移到这个帐 户里 用户的一个帐户将要透支 就从该用户的其它帐户把不够的钱转移到这个帐 户里 public void performOverdraftProtection Account account float withdrawalAmount 1 float transferAmountNeeded withdrawalAmount account getAvailableBalance 2 Customer customer account getCustomer 3 Collection overdraftAccounts customer getOverdraftAccounts 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 4 for Iterator iter overdraftAccounts iterator iter hasNext 5 Account overdraftAccount Account iter next 6 if overdraftAccount account continue end if 7 if transferAmountNeeded overdraftAccount getAvailableBalance 8 overdraftAccount debit transferAmountNeeded 9 account credit transferAmountNeeded 10 return end if 11 end for 12 throw new InsufficientBalanceException Insufficient funds in overdraft accounts end performOverdraftProtection 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 没有对函数的参数没有对函数的参数float withdrawalAmount参数合法性检查 如果参 数非法 函数应该返回某个特定的返回值 参数合法性检查 如果参 数非法 函数应该返回某个特定的返回值 语句语句1中 未对中 未对transferAmountNeeded的合法性检查 如果得到的是 负数 该函数应该返回某个特定的返回值 的合法性检查 如果得到的是 负数 该函数应该返回某个特定的返回值 语句语句7 10中 按照编程规范 中 按照编程规范 if与与else必须要配套使用 在必须要配套使用 在if和和else中必 然会有返回值 中必 然会有返回值 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 该单元功能实现在于改变全局变量 或抛出一个该单元功能实现在于改变全局变量 或抛出一个Exception 当函数有返回值时 可直接在测试驱动里调用该函数 把结 果与期望值比较 当函数有返回值时 可直接在测试驱动里调用该函数 把结 果与期望值比较 而现在函数无返回值 该如何确定期望值 如何把这两种可 能与期望值对照起来 告诉测试员是不是一致 有没有 而现在函数无返回值 该如何确定期望值 如何把这两种可 能与期望值对照起来 告诉测试员是不是一致 有没有bug 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 只能通过添加测试代码的方式只能通过添加测试代码的方式 可以定义一个全局变量可以定义一个全局变量 int g iExceptionFlag TRUE 然后在然后在 InsufficientBalanceException Insufficient funds in overdraft accounts 的处理中 增加代码的处理中 增加代码g iExceptionFlag FALSE 然后通过判断然后通过判断g iExceptionFlag 如果等于 如果等于TRUE 就测试通过 如果 等于 就测试通过 如果 等于FALSE则测试不通过则测试不通过 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 测试过程中 添加测试代码是很常见的事情 不过要注意添加 的测试代码要可控 否则会影响测试效果 测试过程中 添加测试代码是很常见的事情 不过要注意添加 的测试代码要可控 否则会影响测试效果 实用软件工程 软件测试 2005年年6月月29日日Janus Consulting 结构性测试回顾 如果如果transferAmountNeeded算出来为负数 那么算出来为负数 那么 overdraftAccount debit transferAmountNeeded 时 会不会把当前帐户的钱 转移到其他的帐户 时 会不会把当前帐户的钱 转移到其他的帐户 如果一个帐户要透支如果一个帐户要透支50元 而其他的元 而其他的6个帐号每个只有个帐号每个只有10元 那么钱就无法法 透支了 是否跟需求相符合 元 那么钱就无法法 透支了 是否跟需求相符合 语句语句8 9中 如果第一句执行通过 而第二句执行错误时 会不会一个帐号 的钱被去除 而被透支帐号的钱又没有加入呢 不知事务处理是怎么处理 的 中 如果第一句执行通过 而第二句执行错误时 会不会一个帐号 的钱被去除 而被透支帐号的钱又没有加入呢 不知事务处理是怎么处理 的 输入的帐号不存在呢 输入的帐号不存在呢

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值