软件测试方法论_第1页
软件测试方法论_第2页
软件测试方法论_第3页
软件测试方法论_第4页
软件测试方法论_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1软件测试工程师培训软件测试方法论2主要内容n1 软件测试方法概述n2 软件测试规范 n3 软件测试用例设计黑盒测试n4 软件测试用例设计白盒测试n5小结31 软件测试方法概述n1.1 软件测试活动及信息流n1.2 测试方法n1.3 生成测试用例的信息来源n1.4 小结41.1 软件测试活动及信息流n测试是从大量的测试用例中选择有限的测试用例发现软件中的大部分缺陷的一种技术n好的测试用例的4个特性:1.检测软件质量的有效性,是否能发现缺陷,或至少可能发现缺陷;2.可仿效的测试用例可以测试很多内容,因而减少测试用例的数量;3.经济性,测试用例的执行、分析和调试是否经济4.测试用例的可修改性,每次

2、软件修改后对测试用例的维护成本5测试活动 标 识 标 志 测 试 条 件 ( 确 定 测 试 什 么 ) 和 测 试 的 优 先 级 设 计 设 计 测 试 用 例 ( 确 定 怎 么 测 试 ) 开 发 开 发 测 试 ( 设 计 脚 本 、 数 据 等 ) 执 行 执 行 测 试 用 例 将 测 试 结 果 与 比 较 期 望 进 行 比 较 6测试活动n1 测试条件取决于被测试验证的项目或事件。如等价划分、边界值分析、因果图等。测试条件是被测环境的描述,可以用多种方式描述:如简单的语言,表格项形式或类似于流图的图表形式;标识测试条件的活动最好与开发活动(即V模型左边的活动)并行开展7测试

3、活动n2 设计测试用例确定“怎样测试”。测试用例(test case)是按一定顺序执行的与测试目标(test object, 测试理由或目的)相关的一系列测试。测试用例设计将产生许多测试所包括的输入值、期望结果及其他任何运行测试的有关信息,如环境要求。期望输出包括应输出或建立的内容,应修改或更新或应删除的内容。期望输出集可以是一个很大的集合。8测试活动n一个测试用例 测试用例:POS1036 先决条件: 作为数据输入员注册到定单系统显示的主菜单 数据库系统必须含有标准数据集合 确保系统中没有其他活跃的新定单活动 步骤 输入 期望输出 测试条件 1 建立用任何一个标准的订单项建立一个新订单,设置

4、订单数为 100 显示订单确认信息 VB10 VB20 2 确认订单 打印具有正确细目购置订单 VB10 3 打印新订单报表 打印的新订单报表就是新创建的订单 VB10 VB23 4 取消订单 打印正确的取消购置订单信息 VB8 5 打印新订单报表 无打印订单输出 VB8 9测试活动n3 开发测试用例包括准备测试脚本、测试输入、测试数据以及期望输出。测试脚本(test script)是 具有正规语法的数据和指令的集合,在测试执行自动工具使用中,通常以文件形式保存;必须先完成测试用例的先决条件(precondition),然后再执行测试。测试用例可能要求专门的硬件或软件,如网络环境或打印机等;期

5、望输出可以组成成文件形式用于自动工具。对于手动测试,期望输出仅仅只是简单地记录在手工测试过程或脚本中。设置用于自动比较的期望输出比设置用于手工测试的期望输出复杂得多。在自动工具中要求每项内容都要拼写正确,而在手工测试中要求没这么严格。 测试开发的任何工作可以提前进行(相对V模型左边的活动进行),以后可以节省时间。10测试活动n4 执行测试用例 对于手动测试来讲,测试者按事先准备好的手工过程进行测试,测试者输入数据、观察输出、记录发现的问题。 对于自动测试,可能只需要启动测试工具,并告诉工具执行哪些测试用例; 测试执行只能在软件开发完成后进行,即V模型右边的活动。11测试活动n5 将测试结果与期

6、望输出进行比较应该对每次测试的实际输出进行分析研究,判断软件功能是否正确。该验证可以是非正的测试者主观判断,也可以是将实际输出与期望输出进行严格准确的比较。一些信息比较,如可以在执行测试时进行显示屏幕上的信息,另一些输出比较,如修改数据库记录,只能在测试执行结束后进行。自动测试一般结合了这两种方法。12测试阶段的信息流 被测模块 设 软 系统 客 计 件 其他 户 信 需 元素 参 息 求 与 被测模块 被测模块 单元测试 单元测试 单元测试 集成测试 确认测试 系统测试 验收测试 已 经 测试 过 的模块 已集成的软件 已确认的软件 可交付的软件 13测试阶段的信息流测试阶段的输入信息有两类

7、:n软件配置:这是测试的对象,包括需求说明书、设计说明书和被测的源程序等。n测试配置:包括测试计划、测试步骤、测试用例(测试数据),以及具体实施测试的测试程序、测试工具等 141.2 测试方法n静态方法n动态方法 n黑盒测试n白盒测试15静态方法和动态方法 n静态方法的主要特征是在用计算机测试源程序时,计算机并不真正运行被测试的程序,只对被测程序进行特性分析。因此,静态方法常称为“分析”,静态分析是对被测程序进行特性分析的一些方法的总称。n动态方法的主要特征是计算机必须真正运行被测试的程序,通过输入测试用例,对其运行情况(输入/输出的对应关系)进行分析。 16黑盒测试 黑盒测试(Blackbo

8、x Testing)又称功能测试、数据驱动测试或基于规格说明的测试,是一种从用户观点出发的测试。用这种方法进行测试时,被测程序被当作一个黑盒,在不考虑程序内部结构和内部特性,测试者只知道该程序输入和输出之间的关系或程序的功能的情况下,依靠能够反映这一关系和程序功能的需求规格说明书考虑确定测试用例和推断测试结果的正确性。软件的黑盒测试被用来证实软件功能的正确性和可操作性。 17白盒测试 白盒测试(Whitebox Testing)又称结构测试、逻辑驱动测试或基于程序的测试。它依赖于对程序细节的严密检验,针对特定条件和/与循环集设计测试用例,对软件的逻辑路经进行测试。在程序的不同点检验“程序的状态

9、”以判定其实际情况是否和预期的状态相一致。软件的白盒测试用来分析程序的内部结构。18白盒测试n白盒测试要求对某些程序的结构特性做到一定程度的覆盖,或者说是“基于覆盖的测试” 。最为常见的程序结构覆盖有 :n语句覆盖:它要求被测程序的每一可执行语句在测试中尽可能都检验过,这是最弱的逻辑覆盖准则;n分支覆盖或判定覆盖:要求程序中所有判定的分支尽可能得到检验;n条件覆盖:当判定式中含有多个条件时,要求每个条件的取值均得到检验;n判定条件覆盖:同时考虑条件的组合值及判定结果的检验;n路径覆盖:只考虑对程序路径的全面检验。取得测试覆盖的方法程序插装 19白盒测试n既然黑盒测试是测试软件与需求的一致性,为

10、什么还要白盒测试?n编程是容易发生逻辑错误和作出不正确的假设n如对执行路径假设不正确,会产生设计错误,白盒测试能发现这样的错误n录入错误是随机的20黑盒测试与白盒测试的比较 黑 盒 测 试白 盒 测 试测 试 规 划根据用户的规格说明,即针对命令、信息、报表等用户界面及体现它们的输入数据与输出数据之间的对应关系,特别是针对功能进行测试。根据程序的内部结构,比如语句的控制结构,模块间的控制结构以及内部数据结构等进行测试。特点优 点能站在用户立场上进行测试。能够对程序内部的特定部位进行覆盖测试。缺 点不能测试程序内部特定部位。如果规格说明有误,则无法发现。 无法检验程序的外部特性。 无法对未实现规

11、格说明的程序内部欠缺部分进行测试。方 法 举 例基于图的测试等价类划分边值分析比较测试语句覆盖判定覆盖条件覆盖判定/条件覆盖基本路径覆盖循环覆盖模块接口测试21测试阶段与测试方法测试阶段目的执行者测试方法单元测试查找独立模块中逻辑错误、数据错误和算法错误软件工程师白盒测试集成测试查找模块之间接口错误软件工程师测试人员白盒测试、自顶向下或自底向上确认测试确认软件是否满足软件需求测试人员黑盒测试模拟用户操作系统测试对系统中各个组成部分进行综合性检验测试人员黑盒测试模拟用户操作回归测试确认软件变更后是否仍满足软件需求测试人员黑盒测试模拟用户操作测试与测试用户黑盒测试模拟用户操作验收测试确认软件是否满

12、足用户需求用户、项目组测试人员黑盒测试模拟用户操作221.3测试信息来源n基于软件规约生成测试用例n基于软件设计生成测试用例n基于程序生存测试用例231.4小结n软件测试主要工作就是确定合适的测试用例;n测试过程贯穿在整个软件开发活动中;n测试方法: 动态、静态、黑盒、白盒等242软件测试用例设计黑盒测试n2.0 概述n2.1 等价类划分n2.2 因果图 n2.3 边值分析 n2.4 判定表驱动测试n2.5 正交实验设计法n2.6 自动测试用例生成方法n2.7 小结 25 2.0 概述n这种方法是把看做,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能

13、是否符合它的功能说明。n黑盒测试又叫做或。26n黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误:n ?n 在接口上,? ?n (例如数据文件)?n ?n ?黑盒测试目标27n用黑盒测试发现程序中的错误,必须在中确定测试数据,来检查程序是否都能产生正确的输出。n但这是的。28n假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试:n可能采用的 测试数据组: 232232 264 n如果测试一 组数据需要1毫秒,一年工作365 24小时,完成所有测试需5亿年。292.1 测试用例设计方法等价等价类划分类划分n选取测试用例n等价类划

14、分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据当作测试用例。n在分析需求规格说明的基础上划分等价类,列出等价类表。 302.1.1 等价类n所谓等价类是指某个输入域的集合。它表示,如果用集合中的一个输入条件作为测试数据进行测试不能发现程序中的错误,那么使用集合中的其它输入条件进行测试也不可能发现错误。也就是说,对揭露程序中的错误来说,集合中的每个输入条件是等效的。 31有效等价类和无效等价类n在考虑等价类时,应该注意区别两种不同的情况:n*有效等价类:有效等价类指的是对程序的规格说明是有意义的、合理的输入数据所构成的集合。在具体问题中,有效等价类可以有一个,也可以是

15、多个。n*无效等价类:无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。32等价类n输入条件 有效等价类 无效等价类n输入条件:项数可以从1到999 n有效等价类为“1项数999” n无效等价类为“项数999” 332.1.2 经典例子n“输入三个整数作为三边的边长构成三角形。当此三角形为一般三角形、等腰三角形及等边三角形时,分别做计算” n注意输入和输出条件有效等价类型 号码 无效等价类 号码 12 13 14 15 16 17 整数 1 a 为非整数 一边为非整数 b 为非整数 c 为非整数 a,b 为非整数 两边为

16、非整数 b,c 为非整数 a,c 为非整数 三边 a,b,c 均为非整数 18 19 20 21 22 23 24 三个数 2 只给 a 只给一边 只给 b 只给 c 只给 ab 只给两边 只给 b,c 只给 ac 给出三个以上 25 26 27 28 29 30 31 非零数 3 a 为 0 一边为零 b 为 0 c 为 0 a,b 为 0 二边为零 b,c 为 0 a,c 为 0 三边 a,b,c 均为 0 32 33 34 35 36 37 38 输 入 条 件 输 入 三 个 整 数 正数 4 a0 一边0 b0 c0 a0 且 b0 二边0 a0 且 c0 b0 且 c0 三边均0:

17、a0 且 b0 且 cc b+ca a+cb 5 6 7 a+b0 a+b=0 b+ca b+c=a a+cb a+c=b 45 构成等腰 三角形 a=b b=c 且两边之和 a=c 大于第三边 8 9 10 输 出 条 件 构成等腰 三角形 a=b=c 11 表 4.1 例 1 的等价类型表 34有效等价类n 覆盖有效等价类的测试用例:na b c 覆盖等价类号码n3 4 5 (1)-(7)n4 4 5 (1)-(7),(8)n4 5 5 (1)-(7),(9) n5 4 5 (1)-(7),(10)n4 4 4 (1)-(7),(11)35无效等价类362. 1.3 问题讨论n问题:给出下

18、面的有效和无效等价类n输入条件:“统计全国各省、市、自治区的人口” n输入条件:“标识符应以字母开头” n输入条件:长度为1-20的字符串n输入条件:数据库中的值域, CHAR(20), NOT NULL372. 2 测试方法因果图因果图 n采用因果图方法(Cause一Effect Graphics)能够帮助我们按一定步骤,高效率地选择测试用例,同时还能为我们指出,程序规格说明描述中存在着什么问题。 382. 2.1因果图介绍 n4种符号分别表示了规格说明中向4种因果关系 n因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。 nC

19、i表示原因,通常置于图的左部;ei表示结果,通常在图的右部。ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现。 (a)恒等 (b)非 V A (c)或 (d)与 图 4.1 因果图的基本符号 C1 e1 C1 e1 C1 e1 C2 C2 C3 C1 e1 39关系n恒等:若ci是1,则ei也是1;否则ei为0。n非:若ci是1,则ei是0;否则ei是1。n或:若c1或c2或c3是1,则ei是1;否则ei为0。“或”可有任意个输入。n与:若c1和c2都是1,则ei为1;否则ei为0。“与”也可有任意个输入。40约束 n输入状态相互之间还可能存在某些依赖关系 n某些输入条件本身不可

20、能同时出现。输出状态之间也往往存在约束 41输入条件约束类型n 对于输入条件的约束有以下4类:n E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。n I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。n O约束(唯一);a和b必须有一个,且仅有1个为1。nR约束(要求):a是1时,b必须是1,即不可能a是1时b是0。42输出条件约束类型n输出条件的约束只有:nM约束(强制):若结果a是1,则结果b强制为0。432. 2.2 步骤 n 分析程序规格说明的描述中,哪些是原因,哪些是结果。原因常常是输入条件或是输入条件的等价类。而结果是输出条件。n分析程序规

21、格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的“因果图”。44步骤n由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,在因果图上使用若干个特殊的符号标明约束条件。n把因果图转换成判定表。 n把判定表中每一列表示的情况写成测试用例。452. 2.3 例子n软件规格说明书n “第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L,如果第二列字符不是数字,则给出信息M。”46原因和结果n原因:n 1第一列字符是A;n 2第一列字符是B;n 3第二列字符是一数字。n 结果:n 21修改文件;n

22、 22 给出信息L;n 23给出信息M。47因果图和具有约束的因果图 n11为中间节点;n考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。48判定表 n根据因果图建立如下的判定表 表中8种情况的左面两列情况中,原因和原因同时为1,这是不可能出现的,故应排除这两种情况。表的最下一栏给出了6种情况的测试用例,这是我们所需要的数据。 1 2 3 4 5 6 7 8 1 1 1 1 1 0 0 0 0 2 1 1 0 0 1 1 0 0 3 1 0 1 0 1 0 1 0 条件 11 / / 1 1 1 1 0 0 原 因 22 / / 0 0 0 0 1 1 21 / / 1 0 1

23、0 0 0 动作 23 / / 0 1 0 1 0 1 结 果 测试 用例 / / / / A3 A8 AM A? B5 B4 BN B! C2 X6 DY P; 492. 2.4 讨论n在较为复杂的问题中,这个方法常常是十分有效的,它能有力地帮助我们确定测试用例 n如果哪个开发项目在设计阶段就采用了判定表,也就不必再画因果图,而是可以直接利用判定表设计测试用例了。502. 3 测试用例设计方法边值边值分析分析 n在软件设计和程序编写中,常常对于规格说明中的输入域边界或输出域边界不够注意,以致形成一些差错。实践证明,在设计测试用例时,对边界附近的处理必须给予足够的重视,为检验边界附近的处理专门

24、设计测试用例,常常取得良好的测试效果。 512. 2.1 边值分析遵循的原则 n如果输入条件规定了取值范围,或是规定了值的个数,应以该范围的边界内及刚刚超出范围的边界外的值,或是分别对最大、最小个数及稍小于最小、稍大于最大个数作为测试用例。例如,如果程序的规格说明中规定:“重量在10公斤至50公斤范围内的邮件,其邮费计算公式为”。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等。如果另一问题规格说明规定:“某输入文件可包含1至255个记录,”,则测试用例可取1和255,还应取0及256等。52遵循以下几条原则n针对规格说明的每个输出条件使用前面的第(1)条

25、原则。例如,某程序的规格说明要求计算出“每月保险金扣除额为0至116525元”,其测试用例可取000及11652、还可取一001及116526等。如果另一程序属于情报检索系统,要求每次”最多显示1条情报摘要”,这时我们应考虑的测试用例包括1和4,还应包括0和5等。 53遵循以下几条原则n如果程序规格说明中提到的输入或输出域是个有序的集合(如顺序文件、表格等),就应注意选取有序集的第一个和最后一个元素作为测试用例。 n分析规格说明,找出其它的可能边界条件。 542. 2.2 例子n 某一为学生考试试卷评分和成绩统计的程序,其规格说明指出了对程序的要求:n 程序的输入文件由80个字符的一些记录组成

26、,这些记录分为三组:n 标题n 这一组只有一个记录,其内容为输出报告的名字。n 试卷各题标准答案记录n 每个记录均在第80个字符处标以数字“2”。该组的第一个记录的第1至第3个字符为题目编号(取值为1一999)。第10至第59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3个记录相应为第51至第100,第101至第150,题的答案。n 每个学生的答卷描述n 该组中每个记录的第80个字符均为数字“3”。每个学生的答卷在若干个记录中给出。如甲的首记录第1至第9字符给出学生姓名及学号,第10至第59字符列出的是甲所做的第1至第50题的答案。若试题数超过50,则第2,第3纪

27、录分别给出他的第51至第100,第101至第150题的解答。然后是学生乙的答卷记录。 若学生最多为200人,输入数据的形式如图4。15所示。 55n学生考卷评分和成绩统计程序输入数据的形式 56n 该程序应给出4个输出报告,即: n 按学生学号排序,每个学生的成绩(答对的百分比)和等级报告。n 按学生得分排序,每个学生的成绩。n 平均分数,最高与最低分之差。n 按题号排序,每题学生答对的百分比。57输入条件 测试用例 输入文件 空输入文件 标题 无标题记录 只有 1 个字符的标题 具有 80 个字符的标题 出题个数 除了 1 个题 除了 50 个题 除了 51 个题 除了 100 个题 除了

28、999 个题 没有出题 题目是非数值量 答案记录 标题记录后没有标准答案记录 标准答案记录多 1 个 标准答案记录少 1 个 学生人数 学生人数为 0 学生人数为 1 学生人数为 200 学生人数为 201 学生答题 某学生只有 1 个答卷记录,但有两个标准答案记录 该学生是文件中的第 1 个学生 该学生是文件中的最后 1 个学生 学生答题 某学生有 2 个答卷记录,但只有 1 个标准答案记录 该学生是文件中的第 1 个学生 该学生是文件中的最后 1 个学生 输出条件 测试用例 学生得分 所有学生得分相同 所有学生得分不同 一些学生(不是全部)得分相同(用以计算等级) 1 个学生得 0 分 1

29、 个学生得 100 分 输出报告 (1),(2) 1 个学生编号最小(检查排序) 1 个学生编号最大 学生数恰好使报告印满一页(检查打印) 学生数使报告 1 页打印不够,恰好多 1 人 输出报告 (3) 平均值取最大值(所有学生都得满分) 平均值为 0(所有学生都得 0 分) 标准偏差取最大值(1 学生得 0 分,1 学生得 100 分) 标准偏差相同(所有学生得分相同) 输出报告(4) 所有学生都答对第 1 题 所有学生都答错第 1 题 所有学生都答对最后 1 题 所有学生都答错最后 1 题 题数恰好使报告打印在 1 页上 报告打印完 1 页后,恰剩 1 题未打 582. 4 判定表驱动测试

30、判定表驱动测试 n在一些数据处理问题中,某些操作是否实施依赖于多个逻辑条件的取值。也即在这些逻辑条件取值的组合所构成的多种情况下,分别执行不同的操作。处理这类问题的一个非常有力的分析和表达工具是判定表(Decision Table)。 592. 3.1 例子1n一张关于科技书阅读指南的判定驱动表:3个问题8种情况 1 2 3 4 5 6 7 8 你觉得疲倦吗? Y Y Y Y N N N N 你对内容感兴趣吗? Y Y N N Y Y N N 问 题 书中内容使你胡涂吗? Y N Y N Y N Y N 请回到本章开头重读 x x 继续读下去 x x 跳到下一章去读 x x 建 议 停止阅读,

31、请休息 x x ”读书指南”判定表 60判定表组成n条件桩(Condition Stub)n动作桩(Action Stub)n条件项(Condition Entity)n动作项(Action Entity) 61规则及规则合并n任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,即条件项和动作项有多少列。 n化简 就是规则合并有两条或多条规则 具有相同的动作, 并且其条件项之间 存在着极为相似的关系 两条规则合并成一条 两条规则的进一步合并 62一个规则合并的例子n一个规则合并的例子 1 2

32、 3 4 你觉得疲倦吗? - - Y N 你对内容感兴趣吗? Y Y N N 问 题 书中内容使你胡涂吗? Y N - - 请回到本章开头重读 x 继续读下去 X 跳到下一章去读 x 建 议 停止阅读,请休息 x 化减后的”读书指南”判定表 632. 3.2 例子2n问题要求:”对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理” n假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义 n按5步建立判定表 64建立判定表的步骤n确定规则的个数。这里有3个条件,每个条件有两个取值,故应有2*2*2=8种规则。n列出所有的条件茬和动作茬。 n填人条件项

33、。为防止遗漏可从最后1行条件项开始,逐行向上填满乙如第三行是: Y N Y N Y N Y N第二行是: Y Y N N Y Y N N等等。 65建立判定表的步骤n填人动作桩和动作顶。这样便得到形如图的初始判定表。 1 2 3 4 5 6 7 8 功率大于 50 马力吗? Y Y Y Y N N N N 维修记录不全吗? Y Y N N Y Y N N 条 件 运行超过 10 年吗? Y N Y N Y N Y N 进行优先处理 x x X X X 动 作 作其他处理 X x x 初始判定表 66建立判定表的步骤n化简。合并相似规则后得到图。 1 2 3 4 5 功率大于 50 马力吗? Y

34、 Y Y N N 维修记录不全吗? Y N N - - 条 件 运行超过 10 年吗? - Y N Y N 进行优先处理 x x X 动 作 作其他处理 x x 化减后的判定表 672. 3.3 判定表在功能测试中的应用 n一软件规格说明n(1)当条件1和条件2满足,并且条件3和条件4不满足,或者当条件1、3和条件4满足时,要执行操作1。n(2)在任一个条件都不满足时,要执行操作2。n(3)在条件1不满足,而条件4被满足时,要执行操作3。 68规则n只给出了16种规则中的4种 根据规格说明得到的判定表 默许的规则 规 则1 规 则1 规 则1 规 则1 条 件1 Y Y N N 条 件2 Y

35、- N - 条 件3 N Y N - 条 件4 N Y N Y 操 作1 x x 操 作2 x 操 作3 x 根 据 规 则 说 明 得 到 的 判 定 表 规 则5 规 则 6 规 则 7 规 则 8 条 件 1 - N Y Y 条 件 2 - Y Y N 条 件 3 Y N N N 条 件 4 N N Y - 默 许 操 作 x x x x 默 许 的 规 则 692.3.4 判定表的优点和缺点n优点:它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。n缺点:不能表达重复执行的动作,例如循环结构。 其他?70使用判定表设计测试用例的Beizer条件n规格说明以判定

36、表形式给出,或是很容易转换成判定表。n条件的排列顺序不会也不应影响执行哪些操作。n规则的排列顺序不会也不应影响执行哪些操作。n每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。n如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。nB。Beizer提出这5个必要条件的目的是为了使操作的执行完全依赖于条件的组合。其实对于某些不满足这几条的判定表,同样可以借以设计测试用例,只不过尚需增加其它的测试用例罢了。 712.5正交实验设计法n把软件功能测试作为实验的一种,从大量的实验点中选出适量有代表性的点,应用依据伽罗瓦理论导出的“正交表”,合理安排实验的一种科学的实验设计

37、方法。n从规约中找出影响其功能实现的操作对象和外部因素作为因子,因子的取值作为状态,构造因素分析表,利用正交表进行各因子的专题组合,构造有效的测试数据集,并由此建立因果图。722.6 自动测试用例设计n一些测试工具可以进行部分测试用例自动化,“测试输入生成工具”,该方法也可以用于某些场合,但自动工具不可能完全替代智力的测试活动;n自动方式可以生成大量的测试用例,但他不区分哪些测试是最重要的。这些要求有创造力的智力活动只能由测试人员完成。n所有测试生成工具依赖于生成测试的算法,工具比使用相同算法的测试人员的测试更彻底、更精确,但人工测试时可以考虑附加测试。73三种测试输入生成工具n基于代码测试输

38、入生成n基于界面测试生成n基于规格说明测试生成74基于代码测试输入生成n通过检测软件代码结构生成测试输入。通过代码的路径由判断点确定的段组成。自动生成每个路径段逻辑覆盖条件的轮廓文件。与覆盖工具一起使用较好。n只产生测试输入,还需要对测试输出进行比较,不能判断软件产生的输出是否正确,只是说明代码应该做什么。也不能发现丢失的代码n另一种方法:可以生成满足较小变化测试准则的测试。变化测试(Mutation test)是指代码或输入做较小的改变,检测系统是否可以正确地处理或测试稍微改变的版本。该方法可以检查系统的容错能力和测试套件的充分性。 规 格 说 明 期 望 输 出 测 试 输 入 代 码 测

39、 试 输 出 75基于界面测试生成n用于某些定义好的界面如GUI或Web应用生成测试。如果屏幕含有各种菜单、按钮及检查框,则工具生成访问每个控件的测试事例。n还可以测试Internet和Intranet页面。工具可激活WWW页面的每个链接,然后对每页做相同的测试;该方法对于发现某类缺陷是有效的,可以部分生成期望输出,即连接存在或断开状况,但不能判断连接是否在正确的位置;n该方法可以执行部分测试事例设计活动,产生测试输出,对于检测“roll-call”即某个东西确实在某处确实有用。手工测试非常枯燥,应该采用自动测试。 规 格 说 明 期 望 输 出 测 试 输 入 代 码 测 试 输 出 76基

40、于规格说明测试生成n在规格说明形式化并可被工具分析的前提下,基于规格说明测试工具可以生成测试输入及期望结果;如果面向对象规格说明足够严格的话,这种工具还可以进行面向对象规格说明的测试。n例如,如果一个输入域的允许范围被严格定义,那么工具可以产生边界值以及有效等价类和无效等价类的样值。n某些基于规格说明的工具可以进行结构化的英文规格说明或因果图的测试,可以发现一些规格说明的缺陷,如规格说明含混或冗长n好处是检查软件应该做什么,而不是软件做了什么。n从规格说明中推导测试用例越枯燥,则这类工具的潜力就越大。 规 格 说 明 期 望 输 出 测 试 输 入 代 码 测 试 输 出 77自动测试用例生成

41、的优点n自动化测试用例生成用于设计的繁琐部分,如激活每个菜单项或者从已知的数据范围计算边界值;n可以生成针对源程序的一套完成的测试用例(代码、界面和规格说明)n可以发现某种类型的缺陷,如丢失连接,非工作窗口项或者不符合规格说明的软件;78自动测试用例生成的限制n基于代码方法不能生成期望输出n基于界面方法只能产生部分期望输出n基于代码和基于界面方法不能发现规格说明的缺陷;n基于规格说明的方法依赖于规格说明的质量;n所有的方法可以产生大量的测试,而实际操作起来比较困难;n测试前仍需要专家判断产生的测试的必要性,并考虑任何工具都无法产生的测试;792.7小结n理解和熟练使用4种进行测试用例设计的方法

42、:等价类划分、因果图、边值分析、判定表驱动;n自动测试用例设计的原理和方法,804、 软件测试用例设计白盒测试n3.0 概述n3.1 程序结构分析n3.2 逻辑覆盖n3.3 路径分析n3.4 域测试n3.5 程序插装n3.6 程序变异n3.7 小结81n此方法,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。n通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。82n软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:n 对程序模块的至少测试一次;n 对,;n 在循环的边界和运行界限内执

43、行循环体;n 测试,等。83n对一个具有的程序,。给出一个小程序的流程图,它包括了一个执行20次的循环。n包含的不同执行路径数达520条,对每一条路径进行测试需要1毫秒,假定一年工作365 24小时,要想把所有路径测试完,需3170年。8485n基本路径测试方法把覆盖的路径数压缩到一定限度内,。n它是在程序控制流图的基础上,方法。设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。86n符号为控制流图的一个结点,表示一个或多个无分支的PDL语句或源程序语句。箭头为边,表示控制流的方向。87n在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。n边和结点圈定的区域叫做区域,当对

44、区域计数时,图形外的区域也应记为一个区域。n如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列。888990n程序的环路复杂性给出了,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。n从控制流图来看,一条独立路径是至少包含有一条在其它独立路径中从未有过的边的路径。91n例如,在图示的控制流图中,一组独立的路径是path1:1 - 11path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11path4

45、:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11n路径 path1,path2,path3,path4组成了控制流图的一个基本路径集。92n导出测试用例,。 n根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到 。93n每个,。如果所有测试用例都执行完毕,则可以确信程序中所有的可执行语句至少被执行了一次。n必须注意,一些独立的路径(如例中的路径1),往往不是完全孤立的,有时它是程序正常的控制流的一部分,这时,这些路径的测试可以是另一条路径测试的一部分。94n n n n n n 。逻辑覆盖是以的设计测试用例的技术。它属白盒测试。9596L1(ace)A

46、B A XA1021andandorA B A A B X A102101andandorandandA B A B X A20101andorandand97L2 (abd) =A B A X1021andandorA B A X1021orandand= A A X B A X121021andandorandandA X B A X11021andorandand98L3 (abc) A B A X1021andandorA B A X1021orandorA 1 and X 1 or B 0 and A2 or B 0 and X 1A X B A B X110201andorando

47、rand99L4 (acd)A B A X A1021andandorA B A X A1021andandand100n语句覆盖就是设计若干个测试用例,运行被测程序,使得。n在图例中,正好所有的可执行语句都在上,所以选择设计测试用例,就可以覆盖所有的可执行语句。101n测试用例的设计格式如下【输入的(A, B, X),输出的(A, B, X)】n为图例设计满足的测试用例是:【(2, 0, 4),(2, 0, 3)】 覆盖 ace【L1】A B A B XA20101andorandand102n判定覆盖就是设计若干个测试用例,运行被测程序,使得。n判定覆盖又称为。n对于图例,如果选择和,就可

48、得满足要求的测试用例:103n【(2, 0, 4),(2, 0, 3)】覆盖 ace【L1】【(1, 1, 1),(1, 1, 1)】覆盖 abd【L2】A X B A X11021andorandandA B A B X A20101andorandand104n如果选择路径L3和L4,还可得另一组可用的测试用例:【(2, 1, 1),(2, 1, 2)】覆盖 abe【L3】【(3, 0, 3),(3, 1, 1)】覆盖 acd【L4】A X B A B X110201andorandorandA B A X A1021andandand105n条件覆盖就是设计若干个测试用例,运行被测程序,

49、使得程序中。n在图例中,我们事先可对所有条件的取值加以标记。例如,n对于第一个判断:n 条件 A1 取真为 ,取假为 条件 B0 取真为 ,取假为T1T1T2T2106n对于第二个判断:n 条件A2 取真为 ,取假为 条件X1 取真为 ,取假为测试用例 覆盖分支 条件取值【(2, 0, 4),(2, 0, 3)】L1(c, e) 【(1, 0, 1),(1, 0, 1)】L2(b, d) 【(2, 1, 1),(2, 1, 2)】L3(b, e)T3T3T4T4T T T T1234T T T T1234T T T T1234107或 测 试 用 例覆盖分支 条件取值【(1, 0, 3),(1, 0, 4)】 L3(b, e) 【(2, 1, 1),(2, 1, 2)】 L3(b, e) T T T T1234T T T T1234108n判定条件覆盖就是设计足够的测试用例,使得,同时。109 测 试 用 例 覆盖分支 条件取值【(2, 0, 4),(2, 0, 3)】L1(c, e)【(1, 1, 1),(1, 1, 1)】L2(b, d)T T T T1234T T T T1234A B A B X A2010

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论