软件工程PPT
基本路径测试
第一步:画出控制流图 流程图用来描述程序控制结构。可将流程图映 射到一个相应的流图(假设流程图的菱形决定框 中不包含复合条件)。在流图中,每一个圆,称 为流图的结点,代表一个或多个语句。一个处理 方框序列和一个菱形决测框可被映射为一个结点, 流图中的箭头,称为边或连接,代表控制流,类 似于流程图中的箭头。一条边必须终止于一个结 点,即使该结点并不代表任何语句。由边和结点 限定的范围称为区域。计算区域时应包括图外部 的范围。
2.2白盒测试
源程序
分析
测试用例
被测程序 覆盖情况分析
执行路径
图2-7 白盒测试过程示意图
白盒测试主要对程序进行的检查点:
(1)保证一个模块中的所有独立执行路径 至少测试一次; (2)对所有逻辑判定取值“true”和“fal se”的两种情况都至少测试一次; (3)在循环边界和运行界限内执行循环体; (4)测试内部数据结构的有效性。
2.2.2白盒测试的用例设计 白盒测试用例设计技术就是研究如何用 最少的测试用例最大限度地发现软件中的错 误,目前主要有基本路径测试、等价类划分 /边界值分析测试、覆盖测试、循环测试、 数据流测试、程序插桩测试、变异测试等等 方法。
2.2.2白盒测试的用例设计
一、基本路径测试 概念:基本路径测试就是在程序控制流 图的基础上,通过分析控制构造的环形复杂 性,导出基本可执行路径集合,从而设计测 试用例的方法。 设计出的测试用例要保证在测试中,程 序的每一个可执行语句至少执行一次。
集合的划分: 划分的含义就是将一个整体分成小块,使 得所有事物都在某个小块中,不会遗漏。 划分的定义: 给定集合B,以及B的一组子集A1,A2,A3, ‥‥,An,这些子集是B的一个划分, 当且仅当A1∪A2∪ ‥‥ ∪ An=B, 且 i≠j=>Ai∩Aj=Ф
划分的概念对于测试人员非常重要,在 测试中往往一方面要保证B的所有元素都在 某个子集中,另一方面要保证任意一个元 素都不会同时出现在两个子集中。 有效的划分可以保证功能测试时的完备 性与无冗余性。防止有些内容没有被测试, 而另一些内容被测试多遍的情况。 功能性测试的主要困难之一,就是难以 找到合适的划分。
2.1用于测试的离散数学和图论基础
一般而言,在功能性测试中,通常要 用到离散数学知识,而在结构性测试领域中, 则要用到一些关于图论的知识。
2.1.1集合论
集合论可分为:自然和不言自明两种。 自然的集合论把集合看作是基本术语,我们 把集合看作一个单位,或一个整体引用多个 事物。
集合的表示法有以下两种: 1、将集合所有元素一一列出的表示法叫 做“枚举法”,但有时也可以只列出一部 分元素。 M1={1月,2月,3月,4月‥‥‥} 2、用一个集合所具有的共同性质来刻画 这个集合。 N={t:t是等边三角形}
1、程序图 程序图定义:节点要么是整个语句,要 么是语句的一部分,边表示控制流(从节 点i到节点j有一条边,当且仅当对应节点j的 语句或语句的一部分,可以立即在节点i对 应的语句或语句的一部分之后执行)。 程序的有向图公式化能够非常准确地描 述基本结构化程序设计的构造,例如:串 行、选择和循环等可以用有向图表示。
独立路径
独立路径:至少沿一条新的边移动的路径
1 2,3 6 4,5
路径1:1-11 路径2:1-2-3-4-5-10-1-11 路径3:1-2-3-6-8-9-10-1-11
7
9
8
路径4:1-2-3-6-7-9-10-1-11 对以上路径的遍历,就是至 少一次地执行了程序中的所 有语句。
10 11
有限状态机与流程图的转换
针对这两大类的程序,通常描述它们的 方法也不太一样,对于前者,我们通常用控 制流程图或是数据流程图来描述,对于后者 则常用有限状态机或状态图来描述。 流程图中最重要的部份是 “处理过 程" 单元,程序由几个主要的处理单元组合 而成,有限状态机中最主要的是程序目前的 状态,每一个状态总结记录程序由开始到目 前所有接到的输入。
3、从执行的过程来看,测试是一个发 现错误、改正错误、重新测试的过程;而 调试是一个推理过程。
4、从准备工作来看,测试从已知的条 件开始,使用预先定义的程序;调试一般 是以不可知的内部条件开始,做统一性调 试。
5、从执行的计划性来看,测试是有计 划的并要进行测试设计;而调试则不受时 间约束。 6、从执行的人员来看,测试经常是由 独立的测试组在不了解软件设计的条件下 完成的,而调试必须由程序员来完成。 7、从所使用的工具来看,大多数白盒 测试的执行和设计可有工具支持,而调试 程序员能利用的工具主要机事件发生的可能性的数量指
标。 在独立随机事件中,如果某一事件在全 部事件中出现的频率,在更大的范围内比较 明显的稳定在某一固定常数附近。就可以认 为这个事件发生的概率为这个常数。对于任 何事件的概率值一定介于 0和 1之间。
2.1.6用于测试的图
图(又叫做线性图)是一种由两种集合定 义的抽象数据结构,即一个节点集合和一 个构成节点之间连接的集合。 图中节点的度是以该节点作为端点的边的 条数。 在本节中将介绍的两种图: 程序图 有限状态机
• 任何过程设计都要被翻译成控制流图。
控制流图
• 在将程序流程图简化成控制流图时,应注 意: –在选择或多分支结构中,分支的汇聚处 应有一个汇聚结点。 –边和结点圈定的区域叫做区域,当对区 域计数时,图形外的区域也应记为一个 区域。
控制流图
待测试程序
1 2 6
节点
用流图表示的待测试程序
1 2,3 4,5
空闲 非法卡显示屏幕 S1;退卡 合法卡 显示屏幕S2 不正确的PIN 显示屏幕S3 等待第一次 PIN输入尝试 等待第二次 PIN输入尝试 正确PIN显示屏幕S5 等待事务选择
不正确的PIN 显示屏幕S4
不正确的PIN 显示屏幕S3
正确PIN 显示屏幕S5
等待第三次 PIN输入尝试
图2-2 用于PIN尝试的有限状态机
有限状态机与流程图的转换
有限状态机与流程图的转换
有限状态机与流程图的转换 状态图明显在架构上比流程图要简 单,包容的模型也比较丰富,需做的 假设比较少。另外,状态图比较重视 事件/动作的完成,比较不在意是哪一 个程序完成的。流程图则很在意动作 是如何完成的。
2.2白盒测试
白盒测试是一种可视的测试软件的方法, 即它把测试对象看作一个透明的盒子,测试 人员要了解程序结构和处理过程,按照程序 内部逻辑测试程序,检查程序中的每条通路 是否按照预定要求正确工作。白盒测试的过 程如图2-7所示:
基本路径测试
• 前提条件 测试进入的前提条件是在测试人员已经 对被测试对象有了一定的了解,基本上明确了 被测试软件的逻辑结构。
• 测试过程
过程是通过针对程序逻辑结构设计和加 载测试用例,驱动程序执行,以对程序路径进 行测试。测试结果是分析实际的测试结果与预 期的结果是否一致。
基本路径测试
• 包括以下4个步骤: 1. 程序的控制流图:描述程序控制流的一种图 示方法。 2. 程序圈复杂度:从程序的环路复杂性可导出 程序基本路径集合中的独立路径条数,这是 确定程序中每个可执行语句至少执行一次所 必须的测试用例数目的上界。 3. 导出测试用例:根据圈复杂度和程序结构设 计用例数据输入和预期结果。 4. 准备测试用例:确保基本路径集中的每一条 路径的执行。
车库门有限状态机
• 假设由两个按钮来控制门:一个称为开钮而另一个 称为关钮。当门是在关闭状态,按住开钮会使得门 进入上升状态,于此期间在马达控制之下,门将逐 渐的开启。 在门完全打开之后,即进入打开状态。再按住关钮 会使门进入下降状态,于此期间门将逐渐的关闭。 从状态途中可以清楚的看出门不能立即地从打开状 态至关闭状态,反过来亦如此。 而且,也可能轮流的按开钮与关扭,使门在上升与 下降状态之间转变,使得门的动作像玩偶一样。最 后,此模型说明当门是在关闭状态时按关钮或者门 是在打开状态时按开钮,将不会引起任何状态的改 变,所以什么事情都不会发生。
串行
If-Then-Else
If-Then
条件
前测试环路
后测试环路
图2-1 结构化程序设计构造的有向图
2、有限状态机 有限状态机是需求规格说明的一种标准的表 示方法。有限状态机是一种有向图,其中状态是 节点,转移是边。 图2-2是一个简单的自动柜员机(SATM)系统。 该图描述了用于个人标识编号PIN尝试部分的有限 状态机。这种机器包含5 个状态(空闲、等待第 一次PIN尝试等等)和8个用边表示的转移。转移 上的标签所遵循的规则是,“分子”是引起转移 的事件,“分母”是与该转移关联的行为。
第二章 软件测试基础
[本章要点] • 白盒测试和黑盒测试的定义; • 常见的白盒和黑盒测试设计技术; • 白盒测试与黑盒测试的区别; • 测试计划和测试报告的编制; • 测试用例的定义和编制方法。
[本章目标] 理解并掌握白盒测试和黑盒测试,以 及二者的优缺点和各自的应用范围; 能够熟练使用几种常见测试用例设计 技术; 了解测试计划和测试文档的作用,以 及应该包含的内容和制定方法; 了解测试报告的基本内容,以及测试 用例的基本内容和编制方法。
在软件测试领域,白盒测试可以用在 三种测试类型中:
1、单元测试 2、集成测试 3、回归测试
2.2.1白盒测试与调试的异同
1、从承担的任务来看,白盒测试同其 他类型测试一样,它的任务是发现所开发的 项目中的缺陷;但是,调试不属于测试,其 任务是纠正软件中的缺陷。 2、从最终的结果来看,白盒测试有预 知的结果,不可预知的只是程序是否通过测 试,并且成功测试的结果是发现错误的症状, 从而引起调试的进行;而调试的结果是消除 项目中的错误。
边
3 7
6
8
9 10 11
4
5
7
9
8
10
区域
11