软件工程——共同演进的方法与实践 教学课件 ppt 作者 田文洪 第七章 测试技术

上传人:E**** 文档编号:89320720 上传时间:2019-05-23 格式:PPT 页数:94 大小:1.26MB
返回 下载 相关 举报
软件工程——共同演进的方法与实践 教学课件 ppt 作者 田文洪 第七章 测试技术_第1页
第1页 / 共94页
软件工程——共同演进的方法与实践 教学课件 ppt 作者 田文洪 第七章 测试技术_第2页
第2页 / 共94页
软件工程——共同演进的方法与实践 教学课件 ppt 作者 田文洪 第七章 测试技术_第3页
第3页 / 共94页
软件工程——共同演进的方法与实践 教学课件 ppt 作者 田文洪 第七章 测试技术_第4页
第4页 / 共94页
软件工程——共同演进的方法与实践 教学课件 ppt 作者 田文洪 第七章 测试技术_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《软件工程——共同演进的方法与实践 教学课件 ppt 作者 田文洪 第七章 测试技术》由会员分享,可在线阅读,更多相关《软件工程——共同演进的方法与实践 教学课件 ppt 作者 田文洪 第七章 测试技术(94页珍藏版)》请在金锄头文库上搜索。

1、第七章 测试技术,本章学习目标,2,3,掌握基本的白盒测试和黑盒测试方法,了解软件测试的目标、评估准则、软件静态分析的通用评审过程等,理解软件测试的定义、常用术语、基本原则等,软件测试的定义,在某种指定的条件下对操作系统或组件,观察或记录结果,对系统或组件的某些方面进行评估的过程。 分析软件各项目以检测现有的结果和应有结果之间的差异(即软件缺陷),并评估软件各项目的特征的过程。,软件缺陷,至少满足下列一个条件,称发生了一个软件缺陷 软件未实现产品说明书要求的功能。 软件出现了产品说明书指明不能出现的错误。 软件实现了产品说明书未提到的功能。 软件未实现产品说明书虽未明确提及但应该实现的目标。

2、软件难以理解、不易使用、运行缓慢或者从测试员的角度看最终用户会认为不好。,验证和确认,验证(Verification): 保证软件特定开发阶段的输出已经正确完整地实现了规格说明 确认(Validation): 对于每个测试级别,都要检查开发活动的输出是否满足具体的需求或与这些特定级别相关的需求,测试与质量保证,软件测试人员的目标是尽早找出软件缺陷,并确保缺陷得以修复 软件质量保证人员的主要职责是创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法,质量与可靠性,功能性(functionality) 可靠性(reliability) 可用性(usability) 效率(efficiency)

3、 可维护性(maintainability) 可移植性(portability) 可靠性只是质量的一个方面, 甚至不一定是最决定性的一个方面,软件调试与测试,两者都包含有处理软件缺陷和查看代码的过程 二者的区别在于,测试的目标是发现软件缺陷的存在,调试的目标是定位与修复缺陷。,测试用例,测试用例(test case)是测试输入、执行条件,以及预期结果的集合,是为特定的目的开发的,例如执行特定的程序路径或验证与指定的需求相符合。,软件测试的目标, 确认系统满足其预期的使用和用户的需要。 确认解决了所需解决的问题(如实现商业规则和使用合适的系统假定)。 为测试的过程建立责任和可解释性。 便于及早发

4、现软件和系统的异常。 及早提供软件和系统的性能的评估。 为管理提供真实信息,以决定在当前状态下发布产品在商业上的风险 鉴别出程序在功能等方面的异常集聚之处。,软件测试的基本原则,穷尽测试是不可能的 测试无法显示潜伏的软件缺陷 测试活动应尽早进行 软件缺陷具有群聚性 注意杀虫剂现象 应尽量由独立的测试团队进行测试,软件测试的主要方法,黑盒测试 黑盒测试指忽略系统或组件的内部机制,仅关注于那些响应所选择的输入及相应执行条件的输出的测试形式,也称功能性测试 白盒测试 白盒测试指考虑系统或组件的内部机制的测试形式(如分支测试、路径测试、语句测试等),也称结构性测试 灰盒测试,软件测试的评估准则,覆盖率

5、 故障插入 变异分值,覆盖率,给定一个测试需求集合TR 和一个测试集合T,覆盖率可以定义为T 满足的测试需求占TR 总数的比例。 100%覆盖率在实际中是不现实的 商用自动化测试工具,故障插入,故障插入(fault seeding)是一种统计方法,用于评价遗留在一个程序中的故障的数量和种类。具体而言,在测试前被有意地插入一些故障到程序中,在测试执行中,有一部分插入的故障会因测试而显露出来,但可能一些故障在测试中没有暴露出来,仍存在于程序中。,变异分值,该指标和变异测试密切相关。所谓变异测试是一种特殊的测试方法,在这种测试方法中,程序进行两个或更多个变异,然后用同样的测试用例执行测试,可以评估这

6、些测试用例探测程序变异间的差异的能力。,此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。 通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。,白盒测试,软件人员使用白盒测试方法,主要想对程序模块进行如下的检查: 对程序模块的所有独立的执行路径至少测试一次; 对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次; 在循环的边界和运行界限内执行循环体; 测试内部数据结构的有效性等。,对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。给出

7、一个小程序的流程图,它包括了一个执行20次的循环。 包含的不同执行路径数达520条,对每一条路径进行测试需要1毫秒,假定一年工作365 24小时,要想把所有路径测试完,需3170年。,语句覆盖 条件覆盖,分支覆盖 条件组合覆盖,逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试。,逻辑覆盖,例,语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。 在图例中,正好所有的可执行语句都在路径L1上,所以选择路径 L1设计测试用例,就可以覆盖所有的可执行语句。,语句覆盖,测试用例的设计格式如下 【输入的(A, B, X),输出的(A, B, X)】 为图例

8、设计满足语句覆盖的测试用例是: 【(2, 0, 4),(2, 0, 3)】 覆盖 ace【L1】,分支覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。 分支覆盖又称为判定覆盖。 对于图例,如果选择路径L1和L2,就可得满足要求的测试用例:,分支覆盖,【(2, 0, 4),(2, 0, 3)】覆盖 ace【L1】 【(1, 1, 1),(1, 1, 1)】覆盖 abd【L2】,如果选择路径L3和L4,还可得另一组可用的测试用例: 【(2, 1, 1),(2, 1, 2)】覆盖 abe【L3】 【(3, 0, 3),(3, 1, 1)】覆盖 acd【L

9、4】,条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。 在图例中,我们事先可对所有条件的取值加以标记。例如, 对于第一个判断: 条件 A1 取真为 ,取假为 条件 B0 取真为 ,取假为,条件覆盖,对于第二个判断: 条件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) 或,测 试 用 例 覆盖分支 条件取值 【(1, 0, 3),

10、(1, 0, 4)】 L3(b, e) 【(2, 1, 1),(2, 1, 2)】 L3(b, e),条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。 记 A1, B0 作 A1, B0 作 A1, B0 作 A1, B0 作,条件组合覆盖, A2, X1 作 A2, X1 作 A2, X1 作 A2, X1 作 测 试 用 例 覆盖条件 覆盖组合 【(2, 0, 4), (2, 0, 3)】(L1) , 【(2, 1, 1), (2, 1, 2)】(L3) , 【(1, 0, 3), (1, 0, 4)】(L3) , 【(1, 1, 1),

11、 (1, 1, 1)】(L2) , ,控制流图覆盖测试是将代码转变为控制流图,基于其进行测试的技术。它属白盒测试。,控制流图覆盖测试,符号为控制流图的一个结点,表示一个或多个无分支的PDL语句或源程序语句。箭头为边,表示控制流的方向。,程序的控制流图,在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。 边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。 如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列只有单个条件的嵌套的判断。,节点覆盖,即对于图G 中每个语法上可达的节点,测试用例所执行的

12、测试路径的集合中至少存在一条测试路径访问该节点。 显然,节点覆盖和语句覆盖是等价的。,边覆盖,即对于图G 中每一个可到达的长度小于等于1 的路径,测试用例所执行的测试路径的集合中至少存在一条测试路径游历该路径。 显然,边覆盖包含节点覆盖,且边覆盖也可以实现分支覆盖。,路径覆盖,路径覆盖测试就是设计足够的测试用例,覆盖程序中所有可能的路径。 测 试 用 例 通过路径 覆盖条件 【(2, 0, 4), (2, 0, 3)】 ace (L1) 【(1, 1, 1), (1, 1, 1)】 abd (L2) 【(1, 1, 2), (1, 1, 3)】 abe (L3) 【(3, 0, 3), (3,

13、 0, 1)】 acd (L3),基本路径测试方法把覆盖的路径数压缩到一定限度内,程序中的循环体最多只执行一次。 它是在程序控制流图的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,设计测试用例的方法。设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。,基本路径测试,程序的环路复杂性给出了程序基本路径集中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。 从控制流图来看,一条独立路径是至少包含有一条在其它独立路径中从未有过的边的路径。 计算公式:V(G) = e n + p。其中,e 为图中边的数目;n 为节点数目。,程序环路复杂

14、性,确定线性独立路径的基本集合,从源节点(控制流图的入口点)开始,一直走到汇节点(控制流图的出口点)。该路径作为基线路径。 接下来,重新回溯基线路径,依次“翻转”在判断节点上原来选择的路径。即当遇到节点的出度大于等于2 时,必须选择不同的边。 重复以上过程,直到得到的路径数目等于V(G),例如,在图示的控制流图中,一组独立的路径是 path1:1 - 11 path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11 path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11 path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 1

15、1 路径 path1,path2,path3,path4组成了控制流图的一个基本路径集。,导出测试用例,确保基本路径集中的每一条路径的执行。 根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到 用逻辑覆盖方法。,导出测试用例,每个测试用例执行之后,与预期结果进行比较。如果所有测试用例都执行完毕,则可以确信程序中所有的可执行语句至少被执行了一次。 必须注意,一些独立的路径(如例中的路径1),往往不是完全孤立的,有时它是程序正常的控制流的一部分,这时,这些路径的测试可以是另一条路径测试的一部分。,这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。 黑盒测试又叫做功能测试或数据驱动测试。,黑盒测试,黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误: 是否有不正确或遗漏了的功能? 在接口上,输入能否正确地接受? 能否输出正确的结果? 是否有数据结构错误或外部信息(例如数据文件)访问错误? 性能上是否能够满足要求? 是否有初始化或终止性错误?,用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。 但这是不可能的。,假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号