1、内部资料,严禁外协人员接触,测试部一、二级工程师任职资格培训课程,软件测试技术基础,测试研究管理部 软件测试技术基础课程开发小组 郑育红、向昌达、李旭成、穆西宏、陈果林、任伟良、戎兵2003年9月2日,课程目标,掌握软件测试的基础知识 掌握白盒测试概念和方法 掌握黑盒测试概念和方法,目录,第一章 软件测试基础 第二章 白盒测试第三章 黑盒测试,第一章 软件测试基础,1.1 软件测试的定义 1.2 软件测试的目的 1.3 软件测试的一般原则 1.4 软件测试的方式 1.5 IPD流程的主要测试活动,1.1 软件测试的定义,1、软件测试是在软件投入运行前对需求、设计和编码的结果进行复查;,2、软件
2、测试是根据开发各阶段的需求、设计文档和代码而精心设计的一批用例,利用这些测试用例去运行程序,以及发现程序错误的过程。,1.2 软件测试的目的,发现错误!,例如:发现需求、设计和实现的错误,1.3 软件测试的一般原则,1、尽早地、不断地进行软件测试;,2、明确测试输入预置条件和与之对应的预期输出结果;,3、避免测试自己编写的程序;,4、在测试设计时应充分考虑异常的输入情况;,5、充分考虑程序测试中的群集现象,80的错误集中在20的程序模块;,6、排除测试的随意性;,7、对测试结果做全面检查;,8、妥善保存测试计划,测试用例,出错统计和最终分析结果;,9、所有的测试应该追溯到用户需求;,10、测试
3、应该从“小规模“开始,逐步转向“大规模“即渐增式build测试。,1.4 软件测试的方式,如:针对需求分析、概要设计、详细设计以及编码各阶段所得到的文档的评审,以及对代码的走读和检视等;,2、动态测试;执行程序而开展的一项列活动,1、静态测试:无需执行程序而开展的一项活动,如:针对源代码进行的单元测试、集成测试和系统测试等;,1.5 IPD流程的主要测试活动,目录,第一章 软件测试基础 第二章 白盒测试第三章 黑盒测试,第二章 白盒测试,2.1 白盒测试的定义 2.2 程序结构分析 2.3 逻辑覆盖 2.4 其他白盒测试方法简单介绍 2.5 白盒测试的实际应用,2.1 白盒测试的定义,白盒测试
4、是根据被测程序的内部结构设计测试用例的一种测试方法.,输入,输出,if() else ,被测对象,2.2 程序结构分析,程序的结构形式是白盒测试的主要依据。程序结构分析包括:(1)控制流分析(2)数据流分析(3)信息流分析,2.2.1 控制流分析,通过控制流图矩阵来表示程序的控制流程图。分析程序的控制流是为了使编写出的程序有好的结构。对于程序结构提出以下4点基本要求,这 些要求是写出的程序不应包含: 转向并不存在的标号; 没有用的语句标号; 从程序入口进入后无法达到的语句; 不能达到停机语句的语句。目前主要是通过编译器和程序分析工具来 实现程序控制流分析。,2.2.2 数据流分析,数据流分析是
5、分析程序中未定义变量的使用和未曾使用的变量定义。目前通过编译器或程序分析工具通过数据流分析 利用数据流分析的结果可以进行代码编译优化。,2.2.3 信息流分析,目前信息流分析主要用在验证程序变量间信息的传输遵循保密要求。 信息流分析主要分析输出值跟输入值之间的影响关系。程序的信息流关系,为软件开发和确认提供了十分有益的工具,2.3 逻辑覆盖,2.3.1 语句覆盖 2.3.2 判定覆盖 2.3.3 条件覆盖 2.3.4 判定-条件覆盖 2.3.5 路径覆盖,2.3 逻辑覆盖(续),被测试的程序:IF ( A 1) AND ( B = 0 ) THENX = X / A IF ( A = 2) O
6、R ( X 1 ) ) THENX = X + 1该程序共有4条语句,其中2条条件判断语句,2条赋值语句。,2.3.1 语句覆盖,何为语句覆盖?设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次。该程序段的语句覆盖测试用例为那些?,2.3.2 判定覆盖,何为判定覆盖?设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。又称分支覆盖。该程序段的判定覆盖测试用例为那些?,2.3.3 条件覆盖,何为条件覆盖?设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。该程序段的条件覆盖测试用例为那
7、些?,2.3.4 判定-条件覆盖,何为判定-条件覆盖?设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。 该程序段的判定-条件覆盖测试用例为那些?,2.3.5 路径覆盖,何为路径覆盖?设计足够多测试用例,要求覆盖程序中所有可能的路径。 该程序段的路径覆盖测试用例为那些?,2.4 其他白盒测试方法简介,程序插装 (2) 域测试 (3) 符号测试 (4) Z路径覆盖 (5) 程序变异,2.4.1 程序插装,往被测程序中插入操作来实现测试。 程序插装技术能够按用户的要求,获取程序的各种执行过程中的信息,成为测试工作的有效手段。 在程序中的特定部位
8、插入某些用以判断变量特性的语句,使得程序执行中这些语句得以证实,从而使程序的运行特性得到证实。我们把插入的这些语句称为断言 。 使用断言就是程序插装的一种有效方法,2.4.2 域测试,域测试的“域”是指程序的输入空间。 输入空间又可分为不同的子空间,每一子空间对应一种不同的计算。 子空间的划分是由程序中分支语句中的谓词决定的。 域测试正是在分析输入域的基础上,选择适当的测试点以后进行测试的。 域测试有两个致命的弱点,一是为进行域测试对程序提出的限制过多,二是当程序存在很多路径时,所需的测试点也就很多。,2.4.3 符号测试,符号测试的基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号
9、值,这一方法也是因此而得名。 普通测试执行的是算术运算,符号测试则是执行代数运算。因此符号测试可以认为是普通测试的一个自然的扩充。,2.4.4 Z路径覆盖,完成路径测试的理想情况是做到路径覆盖,但路径太多。因此对循环机制进行简化,从而极大地减少路径的数量,使得覆盖这些有限的路径成为可能。我们称简化循环意义下的路径覆盖为Z路径覆盖。 对于程序中的所有路径可以用路径树来表示 设法遍历了所有的叶结点,那就得到了所有的路径,生成每个路径的测试用例,就可以做到Z路径覆盖测试。,2.4.5 程序变异,程序变异方法与前面提到的结构测试和功能测试都不一样,它是一种错误驱动测试。错误驱动测试方法,是指该方法是针
10、对某类特定程序错误的。 错误驱动测试主要有两种,即程序强变异和程序弱变异。,2.5 白盒测试的实际应用,应用于单元测试 要求最少达到语句覆盖 对于比较核心的模块做到判定条件覆盖 利用覆盖准则来设计用例 程序插装使用最多,目录,第一章 软件测试基础 第二章 白盒测试 第三章 黑盒测试,第三章 黑盒测试,3.1 黑盒测试定义 3.2 常见的黑盒测试方法 3.3 等价类方法演练 3.4 其他黑盒测试方法 3.5 黑盒测试方法的实际应用,3.1 黑盒测试定义,黑盒测试又称为功能测试、数据驱动测试或基于规格说明的测试 黑盒测试相对于白盒测试而言,并不关心被测对象的内部实现,而是针对被测对象提供的外部功能
11、与规格出发来设计测试用例进行测试,被测对象,输入,输出,3.2 常见的黑盒测试方法,3.2.1 等价类划分,3.2.2 边界值分析,3.2.3 错误推测,3.2.4 因果图,3.2.5 判定表,3.2.6 正交分析,3.2.7 功能图,3.2.1 等价类划分,定义:,特点:,将全部输入数据合理划分为若干等价类,在每一 个等价类中选取一个数据作为测试的输入条件, 这样所取得的测试效果与选择等价类内所有数据 作为测试的输入所取的测试效果是一样的,典型、常用 测试效率得到提高,3.2.1 等价类划分(续),等价类划分方法应用介绍,第一步:划分等价类,第二步:边界值分析(可选步骤),第三步:多个输入间
12、关系分析(可选步骤),第四步:生成测试用例,3.2.1 等价类划分(续)应用介绍,划分等价类 有效等价类与无效等价类 等价类划分原则 等价类划分表确定测试用例,3.2.1 等价类划分(续)实例(三角形判断),3.2.1 等价类划分(续)实例(用户ID与密码),某网管用户登录界面要求输入用户ID和密码才能登录,对该用户登录功能进行测试。用户ID、密码要求不能为空。用户ID为4位数字,不能以“0”开头;用户密码为6位数字,不能以“0”开头。 演练要求: 划分等价类 生成测试用例,3.2.2 边界值分析,定义:,特点:,经验告诉我们,大量的错误是发生在输入或输出 范围的边界上,边界值分析就是在划分的
13、等价类 区域的边界及其附近进行测试数据的选取,典型、常用测试方法 经常会和等价类划分方法配合使用,3.2.2 边界值分析(续),边界值分析方法应用介绍,第一步:确定输入的范围,第二步:确定范围的边界值,第三步:多个输入关系分析(可选步骤),第四步:生成测试用例,3.2.2 边界值分析(续),输入满足以下条件时可以运用边界值分析方法进行分析:输入条件规定了一个值的范围输入条件规定了值的个数输入条件规定了值的先后顺序,边界的定义:上点:域边界上的点离点:离上点最近的点内点:域内的任意点,3.2.2 边界值分析(续)应用实例,3.2.3 错误推测法,定义:,错误推测法是基于经验和直觉推测程序中所有
14、可能存在的各种错误,从而有针对性的进行测 试的方法。,特点:,分析过程简单、可操作性强,测试用例的设计更加具有针对性、有效性,3.2.3 错误推测法(续),错误推测法应用介绍,第一步:确定被测对象范围,第二步:在测试经验库中查找相关内容,第三步:根据测试经验库中查找出的相关内容设计测试用例,3.2.3 错误推测法(续)应用实例,例如在进行某产品某版本测试用例设计时首先对该产品或其他同类型产品的网上问题情况进行分析,得到一个网上问题分析报告。分析报告中有对于网上问题出现的位置、几率、严重程度、原因进行的分析,那么在进行该版本测试用例设计时就可根据该报告中分析的结论有针对性的设计相应的测试用例。,
15、3.2.4 因果图分析方法,定义:,特点:,考虑了多个输入之间的组合情况,等价类划分和边界值分析着重考虑了对于一个 输入条件的分析,但是他们都没有考虑到如果 存在多个输入条件时的他们之间的组合与联系。 因果图方法运用图的方法对多个输入之间的组 合以及输入、输出之间的因果关系进行了分析。,3.2.4 因果图分析方法(续),因果图方法应用介绍,第一步:确定被测对象的输入与输出,第二步:通过语义分析给出输入与输出之间的 因果关系,第三步:根据因果关系分析画出因果图,第四步:将因果图转换为判定表,第五步:根据判定表设计测试用例,3.2.4 因果图分析方法(续),因果图分析相关逻辑符号:,3.2.4 因
16、果图分析方法(续),因果图分析相关约束符号:,3.2.4 因果图分析方法(续)应用实例,3.2.5 判定表方法,定义:,采用表格的形式,列出所有条件和所有结果的组 合,做到无遗漏的覆盖。,特点:,1、判定表适合于条件项各自独立,互不影响的情况。2、判定表使用的技巧在于,把条件项划分清晰,对 条件进行合理得组合,使得到得规则数最小。,3.2.5 判定表方法(续),判定表分析步骤。,第一步:确定规则个数。假如有n个条件,每个 条件有两个取值,就有2的n次方个规则,第二步:列出所有的条件桩和动作桩,第三步:填入条件项,第四步:填入动作项。得到初始判定表,第五步:简化。合并相似规则和动作,3.2.5
17、判定表方法(续),条件桩(Condition Stub):列出了问题得所有条件,通常认为列出得条件的次序无关紧要。 动作桩(Action Stub):列出了问题规定可能采取的操作,这些操作的排列顺序没有约束。 条件项(Condition Entry):列出针对它左列条件的取值,在所有可能情况下的真假值。 动作项(Action Entry ):列出在条件项的各种取值情况下应该采取的动作。 规则:任何一个条件组合的特定取值及其相应要执行的操作。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,即条件项和动作项有多少列。,3.2.6 正交试验设计方法
18、,定义:,正交试验设计法,是从大量的试验点中选取适量 的有代表性的点,应用依据伽罗华理论推导出的 正交表,合理地安排实验的一种科学的实验设计 方法。利用这种方法,可使所有的因子和水平在 试验中均匀地分配与搭配,均匀地有规律地变化。,特点:,采用正交实验设计方法进行测试用例的设计能够 有效地、合理地减少测试的工时与费用。 兼顾测试成本与测试充分性的均衡,提高测试效率。,3.2.6 正交试验设计方法(续),正交试验设计方法应用步骤,第一步:提取功能说明,构造因子-状态表影响 实验指标的条件称为因子,而影响实验因子的条 件叫因子的状态;,第二步:加权筛选,生成因素分析表 对因子与状 态的选择可按其重
19、要程度分别加 权。可根据各个 因子及状态的作用大小、出现频率的大小以及测 试的需要,确定权值的大小,第三步:利用正交表构造测试数据集 正交表的推 导依据Galois 理论,3.2.7 功能图方法,定义:,功能图方法就是根据对被测功能的状态迁移图以及逻辑功能图的覆盖进行测试用例设计的方法;,特点:,功能图方法借鉴了白盒测试方法的思想 功能图方法是一种常用的且实用的黑盒测试方法,3.2.7 功能图方法(续),功能图方法应用步骤:,第一步:画出状态迁移图,第二步:在每个状态中生成局部测试用例,第三步:利用规则生成测试路径,第四步:测试用例合成,3.2.7 功能图方法(续) 应用实例,3.4 其他黑盒测试方法,(1)比较测试,(2)随机测试,3.5 黑盒测试方法的实际应用,以上介绍的黑盒测试方法中,等价类、边界值、功能图、错误推测这几种方法是最常使用的方法,要重点掌握黑盒测试方法主要应用在产品集成测试、系统测试阶段,但是有些黑盒测试方法也可应用在单元测试阶段,3.5 黑盒测试方法实际应用(续),不同的黑盒测试方法具有不同的优点,注意根据实际情况选择不同的黑盒测试方法进行测试黑盒测试方法在实际应用往往不是孤立的,大部分情况下这些方法是要结合起来使用,谢谢大家!,