太原理工大学软件工程_第七章

上传人:xmg****18 文档编号:119969315 上传时间:2020-01-30 格式:PPT 页数:164 大小:2.36MB
返回 下载 相关 举报
太原理工大学软件工程_第七章_第1页
第1页 / 共164页
太原理工大学软件工程_第七章_第2页
第2页 / 共164页
太原理工大学软件工程_第七章_第3页
第3页 / 共164页
太原理工大学软件工程_第七章_第4页
第4页 / 共164页
太原理工大学软件工程_第七章_第5页
第5页 / 共164页
点击查看更多>>
资源描述

《太原理工大学软件工程_第七章》由会员分享,可在线阅读,更多相关《太原理工大学软件工程_第七章(164页珍藏版)》请在金锄头文库上搜索。

1、2020年1月27日 第1页 第7章软件测试 本章内容结构 本章引言学习目标教学内容本章小结思考和练习课堂讨论 本章引言 在软件开发的一系列活动中 为了保证软件的可靠性 人们研究并使用了很多方法进行分析 设计及编码实现 但是由于软件产品本身是无形的 复杂的 知识密集的逻辑产品 其中难免有各种各样的错误 因此需要通过测试查找错误 保证软件的质量 软件测试是保证软件质量的关键 它是对需求分析 设计和编码的最终复审 本章主要介绍软件测试有关的概念 方法及测试的步骤 2020年1月27日 第2页 2020年1月27日 第3页 学习目标 掌握软件测试的定义 目标和原则掌握软件测试的方法和分类熟练掌握软件

2、测试用例的设计方法理解和掌握软件测试过程及相关测试概念理解调试的方法和技术了解软件测试阶段终止的条件 2020年1月27日 第4页 教学内容 7 1软件测试的目标7 2软件测试的原则7 3软件测试方法及分类7 4软件测试用例的设计7 5软件测试过程7 6调试7 7软件测试阶段终止的条件7 8本章小结和习题 第7章软件测试 软件测试软件测试是保证软件质量的关键 它是对需求分析 设计和编码的最终复审 软件测试的现状软件开发中出现错误或缺陷的机会越来越多 市场对软件质量重要性的认识逐渐增强 软件测试在软件项目实施过程中的重要性日益突出 但由于存在对软件测试的认识误区 进一步影响软件测试质量的提高 软

3、件测试的前景随着软件产业的发展 软件产品的质量控制与质量管理正逐渐成为软件企业生存与发展的核心 2020年1月27日 第6页 7 1软件测试的目标 关于测试及其目标G Myers曾给出了测试以下观点 1 测试是为了发现程序中的错误而执行程序的过程 2 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案 3 成功的测试是发现了至今为止尚未发现的错误的测试 不妨可以看作软件测试的目标或定义 2020年1月27日 第7页 7 1软件测试的目标 因此 测试阶段的基本任务应该是根据软件开发各阶段的文档资料和程序内部结构 精心设计一组 高产 的测试用例 利用这些用例执行程序 找出软件中潜在的各种错误

4、缺陷 测试一般不可能发现程序中的所有错误 测试只能证明程序中存在错误 但不能证明程序中不存在错误 2020年1月27日 第8页 7 2软件测试的原则 1 测试用例既要有输入数据 又要有对应的输出结果 2 测试用例不仅要选用合理的输入数据 还应选择不合理的输入数据 3 除了检查程序是否做了它应该做的工作 还应该检查程序是否做了它不应该做的工作 4 应该远在测试开始之前就制定测试计划 5 测试计划 测试用例 测试报告必须作为文档长期保存 6 Pareto原理说明 测试发现的错误中80 很可能是由程序中20 的模块造成的 即错误出现的 群集性 现象 7 为了达到最佳的测试效果 程序员应该避免测试自己

5、的程序 2020年1月27日 第9页 7 3软件测试方法及分类 为了便于区分 一般把被测程序在机器上运行称为 动态测试 不在机器上运行被测程序称为 静态分析 广义地讲 它们都属于软件测试 因此 软件测试的方法一般分为动态测试和静态测试 动态测试方法中又根据测试用例的设计方法不同 分为黑盒测试法和白盒测试法两类 7 3 1静态测试与动态测试7 3 2黑盒测试与白盒测试 2020年1月27日 第10页 7 3 1静态测试与动态测试 一 静态测试定义 指被测程序不在机器上运行 对模块的源代码进行研读 查找错误或收集一些度量数据 采用人工检测和计算机辅助静态分析手段对程序进行检测 只进行特性分析 常用

6、的方法有 1 人工测试 2 计算机辅助静态分析 人工测试 指不依靠计算机而完全靠人工审查程序或评审软件 该方法偏重于编码风格 编码质量的检验 除了审查编码还要对各阶段的软件产品进行检验 可以有效地发现软件的逻辑设计和编码错误 发现计算机不容易发现的错误 2020年1月27日 第11页 7 3 1静态测试与动态测试 人工测试常用的方法包括 桌前检查 DeskChecking 由程序员检查自己的程序 对源代码进行分析 检验 代码会审 CodeReadingReview 由程序员和测试员组成评审小组 按照 常见的错误清单 进行会议讨论检查 步行检查 Walkthroughs 与代码会审类似 也要进行

7、代码评审 但评审过程主要采取人工执行程序的方式 故也称为 走查 步行检查是最常用的静态分析方法 2020年1月27日 第12页 7 3 1静态测试与动态测试 2 计算机辅助静态分析 指利用静态分析工具对被测程序进行特性分析 从程序中提取一些信息 以便检查程序逻辑的各种缺陷和可疑的程序构造 如错误使用全局变量和局部变量 不匹配的参数 循环嵌套和分支嵌套使用不当 潜在的死循环和死语句等 静态分析中还可以用符号代替数值求得程序结果 以便对程序进行运算规律检验 2020年1月27日 第13页 7 3 1静态测试与动态测试 二 动态测试动态测试是指通过运行程序发现错误 一般所讲的测试大多是指动态测试 同

8、测试任何产品一样 一般有两种方法 如果已经知道了产品应该具有的功能 可以通过测试来检验是否每个功能都能正常使用 黑盒测试法 如果知道产品的内部工作过程 可以通过测试来检验产品内部结构及处理过程是否按照规格说明书的规定正常进行 白盒测试法 动态测试分类的两种方法 黑盒测试法与白盒测试法 7 3 2黑盒测试与白盒测试 黑盒测试 也称功能测试或数据驱动测试 它不考虑程序内部结构和处理过程 把被测程序看成一个黑盒子 只在软件接口处进行测试 依据需求规格说明书 检查程序是否满足功能要求 白盒测试 也称结构测试或逻辑驱动测试 测试人员需了解程序的内部结构和处理过程 以检查处理过程的细节为基础 要求对程序的

9、结构特性做到一定程度的覆盖 对程序中的所有逻辑路径进行测试 并检验内部控制结构是否有错 确定实际的运行状态与预期的状态是否一致 黑盒测试和白盒测试都不可能进行穷尽测试 7 3 2黑盒测试与白盒测试 黑盒测试和白盒测试的穷尽测试都是不可能的 例1 用黑盒法测试一个简单的程序P 它有两个整型输入变量X Y 一个输出变量为Z 在32位机上运行 那么输入数据有 种可能性 假设执行1次需要1毫秒 假定一年工作365 24小时 要想把所有路径测试完如要进行完全测试 共需约5亿年 例2 用白盒法测试一个100行的C语言程序 其中有20次的循环 内部循环中用到4个if else结构 那么不同的路径就有520种

10、可能 如果每一条路径进行测试需要1毫秒 假定一年工作365 24小时 要想把所有路径测试完则需要3024年才能完成对这个程序的测试 所以要遍历所有路径进行完全测试是不可能的 因此 无论白盒或黑盒测试 要想进行 穷举 测试 试图输入一切可能的数据 让程序都执行一遍 以求发现所有隐藏的错误 事实上这是不可能的 应采用选择测试 即选择有代表性的 典型的数据作为测试用例 7 3 2黑盒测试与白盒测试 7 4软件测试用例的设计 测试用例的目的 确定一组最有可能发现某个错误或某类错误的测试数据 测试用例的不足 不可能测试程序的每条路径 也不能把所有数据都试一遍 设计人员必须努力以最少量的测试用例来发现最大

11、量的可能错误 测试用例的两种技术白盒技术 是以程序的内部逻辑结构为基础设计测试用例 被检测的对象是源程序 黑盒技术 着重测试软件功能 2020年1月27日 第18页 7 4软件测试用例的设计 7 4 1白盒技术 以程序的结构为依据 被测对象基本上是源程序 以程序的内部逻辑结构为基础设计测试用例 7 4 2黑盒技术 着重测试软件功能 设计测试用例时 需要研究需求说明和总体设计说明中的有关程序功能或输入 输出之间的关系等信息 从而与测试后的结果进行分析比较 测试用例的设计人员必须努力以最少量的测试用例来发现最大量的可能错误 2020年1月27日 第19页 7 4 1白盒技术 投资是现在进行的 而效

12、益是将来获得的 因此 应该考虑货币的时间价值 通常用利率的形式表示货币的时间价值 假设年利率为i 如果现在存入P元 则n年后可得到的钱数为F 若不记复利则 F P 1 n i 这也就是P元钱在n年后的价值 反之 如果n年后能收入F元钱 那么这些钱现在的价值是 P F 1 n i 7 4 1白盒技术 带上X光眼镜测试 白盒法又称为逻辑覆盖法 是一种以程序 模块 内部的逻辑结构为基础来设计测试用例的方法 对程序所有逻辑路径进行测试 它主要用于单元测试 把测试对象看做一个透明的盒子 白盒法的特点 需了解程序内部的结构测试用例是根据程序的内部逻辑来设计的如果想用白盒法发现程序中所有的错误 则至少必须使

13、程序中每种可能的路径都执行一次 应用白盒法时 手头需要有程序的功能说明书和程序清单 7 4 1白盒技术 带上X光眼镜测试 软件人员使用白盒测试方法 主要想对程序模块进行如下的检查 对程序模块的所有独立的执行路径至少测试一次 对所有的逻辑判定 取 真 与取 假 的两种情况都至少测试一次 在循环的边界和运行界限内执行循环体 测试内部数据结构的有效性等 7 4 1白盒技术 带上X光眼镜测试 白盒的测试以程序的结构为依据 所以又称为结构测试 早期的白盒的测试把注意力放在流程图的各个判定框上 使用不同的逻辑覆盖标准来表达对程序测试的详尽程度 随着测试技术的发展 人们越来越重视测试对程序的执行路径的考察

14、并且用流图代替流程图来设计测试用例 为了区分这两种白盒测试技术 把前者称为逻辑覆盖测试 后者称为路径测试 7 4 1白盒技术 带上X光眼镜测试 逻辑覆盖测试法用流程图来设计测试 它考察的重点是图中的判定框 菱形框 因为这些判定若不是与选择有关 就是与循环结构有关 是决定程序结构的关键成分 按照对被测程序所作测试的有效程度 逻辑覆盖测试可由若到强区分为5种覆盖标准 如下图所示 一 逻辑覆盖测试法 7 4 1白盒技术 带上X光眼镜测试 弱 强 语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 白盒法的覆盖标准 7 4 1白盒技术 带上X光眼镜测试 语句覆盖语句覆盖选择足够的测试用例 运行被

15、测程序 使得程序中每个语句至少都能被执行一次 语句覆盖 是一个比较弱的测试标准 7 4 1白盒技术 带上X光眼镜测试 要使程序中2个判断2个语句至少执行一次 只需设计一个能通过路径sacbed的例子就可以了 1 首先判断a b为真A 1 B 0A 2 X 1 2 选择测试用例选择输入数据为 A 2 B 0X 2即达到了四个语句覆盖 图被测试模块的流程图 判定一 判定二 注意 上面的例子中的两个判断只测试了条件为真时的情况 显然当条件为假时 如果处理有错误也发现不了 语句覆盖只关心判定表达式的值 而没有分别测试当判定表达式中每个条件取不同值的情况 显然当条件有错误 X 1误写成X 0 也发现不了

16、 因此 判定覆盖是很弱的逻辑覆盖 2 判定覆盖判定覆盖又叫分支覆盖 它的含义是 不仅每个语句必须至少执行一次 而且每个判定的每种可能的结果都应该至少执行一次 也就是每个判定的每个分支都至少执行一次 判定a b有四种状态 abTTTFFTFF因此 有两种覆盖方法 a b都为真或都为假 a b真假相反 判定二 判定一 1 当a b都为真时 选择覆盖路径sabced 可取测试数据为 A 2 B 0 X 3 都为假时 覆盖路径sabd 可取测试数据为 A 1 B 0 X 1 2 若a取真b取假时 选择覆盖路径sacbd 测试数据为 A 3 B 0 X 1 若a取假b取真时 选择覆盖路径sabed 测试数据为 A 2 B 1 X 1 可见 选这两种方法的任一种都能做到判定覆盖 但它们的测试数据只覆盖了程序全部路径的一半 总结 判定覆盖只关心整个判定表达式的值 判定覆盖比语句覆盖强 但是对程序逻辑的覆盖程度仍然不高 3 条件覆盖条件覆盖的含义是 不仅每个语句至少执行一次 而且使判定表达式中的每个条件都取到各种可能的结果 真或假 判定条件至少取一次真 至少取一次假 那么判定a c条件 A B X 可

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

当前位置:首页 > 大杂烩/其它

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