




已阅读5页,还剩199页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件测试 3 1软件测试用例的概述3 2黑合测试用例的设计3 3白合测试用例的设计 第三章软件测试用例的设计 3 1 1测试用例的基本概念3 1 2测试用例的设计原则与特性3 1 3测试用例的编制 3 1测试用例的基本概念 1 什么是测试用例测试用例 TestCase 是为达到最佳的测试效果或高效的揭露隐藏的错误而精选的少量有代表性或特殊性测试数据 软件测试的灵魂 测试用例例 测试Yahoo邮箱的登录程序 假设存在一用户为user 密码为12345 3 1 1测试用例的概念 3 1 1测试用例的概念 工程硕士 6 测试用例包括测试环境 测试步骤 测试数据和预期结果 即测试用例 输入 输出 测试环境 测试步骤输入 测试数据和操作步骤输出 期望结果测试环境 软硬件环境配置 3 1 1测试用例的概念 2 编制测试用例的重要性为什么要做测试用例 主要原因有如下几点 完全测试是不可能的 输入量太大 输出结果太多 软件实现路径太多 软件说明书没有客观标准 软件缺陷的标准也不同 3 1 1测试用例的概念 使用测试用例的好处 可以避免盲目测试并提高测试效率 使软件测试的实施重点突出 目的明确 在软件版本更新后只需修正少部分的测试用例便可展开测试工作 降低工作强度 缩短项目周期 测试用例的通用化和复用化则使软件测试易于开展 3 1 1测试用例的概念 测试用例的作用指导测试的实施规划测试数据的准备评估测试结果的度量基准分析缺陷的标准编写测试脚本的 设计规格说明书 3 1 1测试用例的概念 1 测试用例的设计原则保证测试用例的明确性 测试人员要尽量避免测试用例存在含糊的因素 否则会影响测试工作进行与测试结果的准确性 模棱两可 在测试过程中 测试用例的测试结果是唯一的 即通过 没通过或未进行测试 如果测试没有通过 一般会生成相应的测试错误报告 如果测试没有进行 也会生成相应的原因说明报告 如测试用例本身具有错误性 测试用例的不适用性等等 3 1 2测试用例的设计原则与特性 保证测试用例的代表性 尽量将具有相似功能的测试用例抽象合并 使一个测试用例具有测试一类或一系列的系统需求 保证测试用例的简洁性 冗长与复杂的测试用例是不应该出现的 否则可读性差 不利于测试人员理解和操作 简洁的测试用例可以让测试过程目的明确 让测试结果具有唯一性 3 1 2测试用例的设计原则与特性 2 测试用例的特性有效性 测试用例是测试人员测试过程中的重要参考依据 不同的测试人员根据相同的测试用例所得到的输出应该是一致的 可复用性 良好的测试用例具有重复使用的功能 这样就可以大大地节约测试的时间 提高测试的效率 3 1 2测试用例的设计原则与特性 易组织性 测试用例可能有成千上万个 有效地组织这些测试用例 分门别类地提供给测试人员参考和使用 才是一个好的测试计划 可评估性 从测试管理的角度 测试用例的通过率和软件缺陷的数目是软件产品质量好坏的测试标准 可管理性 测试用例可以作为检验测试人员进度 工作量以及跟踪 管理测试人员工作效率的因素 3 1 2测试用例的设计原则与特性 14 GoodTestcase 有效性 仿效性 经济性 修改性 测试用例是否能够发现缺陷或者至少可能发现缺陷 测试用例的代表程度 可测试多项内容 因而减少测试用例数量 实现 调试和运行测试用例的成本 修改和维护测试用例的难易程度 3 测试用例的度量标准 3 1 2测试用例的设计原则与特性 1 测试用例编制的依据需求说明以及相关文档 设计说明及相关文档 概要设计 详细设计等 与开发组交流的记录 可以是开发人员的一个解释 基本成型的UI 编写测试用例的文档模板和符合内部的规范要求 测试用例有相关的编制标准 如ANSI IEEE829 1983标准中列出的关于软件测试用例的相关编制规范和模板 3 1 3测试用例的编制 2 测试用例的编制过程分析软件程序的工作流程 目的是了解用户与系统交互时的操作和步骤 以确定与描述测试软件所需的测试用例 3 1 3测试用例的编制 确定并制定测试用例目的是为每项测试需求编写适当的测试用例 软件测试用例主要根据测试用例编写要素 结合相应的软件需求文档 在掌握一定测试用例设计方法的基础上 设计出比较全面 合理的测试用例 并生成规范的测试用例表 如果测试过以前的版本 则测试用例已经存在 应复审这些测试用例 3 1 3测试用例的编制 确定测试用例数据根据测试用例表的内容 确定支持这些测试用例的实际值 测试用例数据一般包括 用作输入的数据值用作预期结果的数据值用作支持测试用例所需的数据测试用例的修改更新测试用例在形成文档后还需要不断完善 缘故在于 在测试过程中发现设计测试用例时考虑不周 在软件交付使用后反馈的软件缺陷 而缺陷又是因测试用例存在漏洞造成 软件自身的新增功能以及软件版本的更新 测试用例也必须配套修改更新 3 1 3测试用例的编制 3 测试用例的管理测试管理软件的主要功能有三个 记录测试用例文档的关键内容 可供测试实施时及时输入测试情况 实现自动生成测试结果文档 3 1 3测试用例的编制 4 测试用例的文档测试用例文档由简介和测试用例两部分组成 测试用例的文档模板 用于描述输入 动作 时间和一个期望结果 测试用例的基本要素 包括测试用例编号 测试标题 测试模块 用例级别 测试环境 测试输入 执行操作 预期结果 不同的公司会有不同的测试用例模板 3 1 3测试用例的编制 用例编号 每个测试用例都有唯一的标识号 用以区别其他测试用例 测试用例的编号有一定的规则 项目名称 测试阶段类型 系统测试阶段 编号 如PROJECT1 ST 001 定义测试用例编号 是为了便于查找与跟踪测试用例 测试标题 测试用例标题应清楚表达测试用例的用途 如 测试用户登录时输入错误密码时 软件的响应情况 测试模块 指明并简单描述测试用例是用来测试哪些项目 子项目或软件特性的 3 1 3测试用例的编制 用例级别 测试用例的优先级别 可以粗略地分为 高 和 低 两个级别 也可以分为 高 中 低 三个级别 一般来说 软件需求的优先级和测试用例的优先级一致 即如果软件需求的优先级为 高 该需求的测试用例的优先级也为 高 反之亦然 测试环境 执行测试用例所需的硬软件环境 在整个测试模块中需要对应说明整个测试的特殊环境要求 在单个测试用例的测试环境需要表述该测试用例所单独需要的特殊环境要求 3 1 3测试用例的编制 测试输入 用来执行测试用例的输入要求 输入可以是数据 文件或具体操作 根据需求中的输入条件 确定测试用例的输入 测试用例的输入对软件需求当中的输入有很大的依赖性 如果软件需求中没有很好的定义需求的输入 那么测试用例设计中会遇到很大的障碍 执行操作 执行测试用例所需的每一步操作 对于复杂的测试用例 测试用例的输入需要分为几个步骤完成 这部分内容在操作步骤中详细列出 3 1 3测试用例的编制 预期结果 描述被测项目或特性所希望或要求达到的输出或指标 一般来说 预期结果主要根据软件需求中的输出得出 如果在实际测试过程中 得到的实际测试结果与预期结果不符 那么测试不通过 反之则测试通过 3 1 3测试用例的编制 测试用例的基本要素 3 1 3测试用例的编制 工程硕士 26 测试用例的内容 示例 3 1 3测试用例的编制 工程硕士 27 测试用例模板 示例 3 1 3测试用例的编制 测试用例是测试工作的核心 应该尽量设计的周密细致 这样才能更好的保证测试工作的质量 以一个实现登录功能的小程序为例 它允许用户选择城市和地区 输入自己的账号和密码 如图1 9所示 通过Alt F4组合键和 Exit 按钮来终止程序 Tab键在区域中间移动 登录窗口 根据组成页面的具体元素 做了比较全面的测试用例 1 下拉框和输入框测试用例 2 功能测试用例 3 各种错误数据的测试 4 特殊测试 3 2 1等价类测试用例设计法3 2 2边界分析测试用例设计法3 2 3决策表测试用例设计法3 2 4因果图测试用例设计法3 2 5错误猜测测试用例设计法3 2 6业务流程图测试用例设计法3 2 7黑盒测试用例设计方法的应用 3 2黑合测试用例的设计 常用的黑盒测试用例设计方法主要有以下几种 边界值分析等价类决策表因果图法错误猜测法流程图法 3 2黑合测试用例的设计 1 等价类测试用例设计的基本思想等价类测试法是将不能穷举的测试过程进行合理分类 从而保证设计出来的测试用例具有完整性和代表性 等价类测试法是把所有可能的输入数据 即程序的输入域 划分成若干子集 等价类 从每一个子集中选取少数具有代表性的数据作为测试用例 每个子集中的输入具有相同揭示程序问题的能力 进而达到尽可能完备同时又可避免冗余的测试 在分析需求规格说明书的基础上划分等价类 是等价类测试用例设计的前提 3 2 1等价类测试用例设计法 所谓等价类是指输入域的某个子集 所有等价类的并集就是整个输入域 在等价类中 各个输入数据对于揭露程序中的错误都是等效的 具有等价特性 因此 测试等价类中的代表值等价于对该类中其它值的测试 即如果某等价类中的一个用例发现了错误 该等价类中的其它用例也能发现同样的错误 反之 如果等价类中的一个用例没有发现错误 该等价类中的其它用例也不会查出错误 3 2 1等价类测试用例设计法 2 有效等价类与无效等价类软件不能只接收合理有效的数据 还应具有处理异常数据的功能 才能确保软件具有更高的可靠性 因此 在划分等价类的过程中 不但要考虑有效等价类划分 同时也要考虑无效等价类划分 有效等价类是指对 需求规格说明书 来说 合理 有意义的输入数据所构成的集合 利用有效等价类可以检验程序是否满足规格说明所规定的功能和性能 无效等价类则和有效等价类相反 对需求规格说明书 是无意义的 不合理的输入数据所构成的集合 即不满足程序输入要求或者无效的输入数据所构成的集合 利用无效等价类可以检验程序异常情况的处理 3 2 1等价类测试用例设计法 39 3 等价类划分的原则如果输入条件规定了一个取值范围 就应确定一个有效等价类和两个无效等价类 如果输入条件规定了取值的个数 就应确定一个有效等价类和两个无效等价类 如果输入条件是一个布尔表达式的条件 可以确定一个有效等价类和一个无效等价类如果输入条件规定了一个输入值的集合 而且程序会对每个值进行不同处理 就应为每个输入值确定一个有效等价类和一个无效等价类 如果输入条件规定了 必须是 的情况 就应确定一个有效等价类和若干无效等价类 如果程序未等同地处理等价类中的元素 应将这个等价类再划分为小一些的等价类 3 2 1等价类测试用例设计法 40 4 等价类测试用例设计的步骤划分等价类 为每一个有效等价类和无效等价类规定一个唯一的编号 设计一个测试用例 使其尽可能多地覆盖尚未覆盖的有效等价类 重复这一步直到所有有效等价类均被测试用例所覆盖 设计一个测试用例 使其只覆盖一个无效等价类 重复这一步 直到所有无效等价类均被覆盖 3 2 1等价类测试用例设计法 5 等价类表示在确立了等价类之后 建立等价类表 列出所有划分出的等价类 如表所示 等价类表 3 2 1等价类测试用例设计法 42 求三角形面积 仅判断是否是三角形 某程序实现如下功能 输入三个整数a b c 输出以a b c为三边的三角形面积 1 a b c 100 结果保留2位小数 3 2 1等价类测试用例设计法 43 3 2 1等价类测试用例设计法 6 常见等价类划分形式针对是否对无效数据进行测试 可以将等价类分为标准等价类 健壮等价类和对等区间等价类 1 标准 简单 等价类标准等价类不考虑无效数据 测试用例使用每个等价类中的一个值 通常 标准等价类测试用例的数量和最大等价类中元素的数目相等 3 2 1等价类测试用例设计法 NextDate函数包含三个变量 month 月份 day 日期 和year 年 函数的输出为输入日期后一天的日期 例如 输入为2007年9月9日 则函数的输出为2007年9月10日 要求输入变量month day和year均为整数值 并且满足下列条件 1 1 month 12 2 1 day 31 3 1912 year 2050 3 2 1等价类测试用例设计法 NextDate函数的标准等价类有三个有效等价类 M1 month 1 month 12 D1 day 1 day 31 Y1 year 1912 year 2050 3 2 1等价类测试用例设计法 2 健壮等价类NextDate函数的主要特点是输入变量之间的逻辑关系比较复杂 原因有两个 一个是输入域的复杂性 另一个是闰年的规则 例如变量year和变量month取不同的值 对应的变量day会有不同的取值范围 day值的范围可能是1 30或1 31 也可能是1 28或1 29 3 2 1等价类测试用例设计法 2 健壮等价类健壮等价类应考虑无效等价类 若三个输入中有一个条件无效 那么NextDate函数都应产生一个输出 来指明相应的变量超出取值范围 例如month的值不在1 12范围当中 显然还存在着大量的year month day的无效组合 NextDate函数将这些组合统一输出为 无效输入日期 M2 month month12 D2 day day31 Y2 year year2050 3 2 1等价类测试用例设计法 2 健壮等价类在标准等价类中 既没有考虑2月份的天数问题 也没有考虑闰年的问题 月份只包含了30天和31天两种情况 在健壮等价类划分中 考虑2月份天数 关于每个月份的天数 可以详细划分为以下等价类 M1 month month有30天 M2 month month有31天 M3 month month是2月 D1 day 1 day 27 D2 day day 28 D3 day day 29 D4 day day 30 D5 day day 31 Y1 year year是闰年 Y2 year year不是闰年 3 2 1等价类测试用例设计法 NextDate函数健壮等价类测试用例 3 2 1等价类测试用例设计法 3 弱健壮等价类测试弱健壮等价类主要是考虑无效等价类 对有效输入 测试用例从每个有效等价类中取一个值 对无效输入 一个测试用例有一个无效值 其他值均取有效值 3 2 1等价类测试用例设计法 NextDate函数弱健壮等价类测试用例 3 2 1等价类测试用例设计法 4 强健壮等价类测试强健壮等价类则考虑更多的无效值 强健壮等价类中的无效测试用例可以包含多个无效值 即含有多个缺陷假设 因为NextDate函数有三个变量 所以对应的强健壮等价类测试用例可以包含一个无效值 两个无效值或三个无效值 3 2 1等价类测试用例设计法 NextDate函数强健壮等价类测试用例 3 2 1等价类测试用例设计法 5 对等区间等价类对等区间等价类是非常规的形式化方法 它将被测对象的输入 输出划分成一些区间 被测软件对一个特定区间的任何值都是等价的 测试区间的数据不只是函数 过程的参数 也可以是程序可以访问的全局变量 系统资源等 且变量或资源可以是以时间形式存在的数据 或以状态形式存在的输入 输出序列 对等区间等价类划分的前提是位于单个区间的所有值对测试都是对等的 应为每个区间的一个值设计一个测试用例 3 2 1等价类测试用例设计法 平方根函数要求当输入值为0或大于0时 返回输入数的平方根 当输入值小于0时 显示 平方根错误 考虑平方根函数的测试用例区间 可以划分出两个输入区间和两个输出区间 区间划分 3 2 1等价类测试用例设计法 通过分析 可以用两个测试用例来测试4个区间 测试用例1 输入4 返回2 区间 和A测试用例2 输入 4 输出 平方根错误 输入值小于0 区间 和B当软件变得更加复杂时 对等区间的确定就较难 区间之间的相互依赖性就越强 使用对等区间等价类划分设计测试用例技术的难度增加 3 2 1等价类测试用例设计法 58 NextDate 月 日 年 是三个变量的函数 函数返回输入日期的下一个日期 变量月份 日期和年都是整数值 且满足下面的条件 1 月份 12 1 日期 31 1900 年 2060两种不同的等价类划分方法 等价类测试示例 NextDate问题 59 方法1 测试用例覆盖等价类1 2 3 测试输入 2006 6 16 预期结果 2006 6 17 覆盖等价类4 2 3 测试输入 1890 4 10 预期结果 输入错误 覆盖等价类5 2 3 测试输入 2062 4 10 预期结果 输入错误 覆盖等价类1 6 3 测试输入 2006 2 16 预期结果 输入错误 覆盖等价类1 7 3 测试输入 2006 13 16 预期结果 输入错误 覆盖等价类1 2 8 测试输入 2006 6 0 预期结果 输入错误 覆盖等价类1 2 9 测试输入 2006 4 33 预期结果 输入错误 60 方法2 测试用例覆盖等价类1 3 7 测试输入 2000 7 16 预期结果 2000 7 17 覆盖等价类2 4 8 测试输入 2006 4 29 预期结果 2006 4 30 覆盖等价类1 5 9 测试输入 2000 2 30 预期结果 输入错误 覆盖等价类2 6 10 测试输入 2001 12 31 预期结果 2002 1 1 覆盖等价类11 3 7 测试输入 1830 3 19 预期结果 输入错误 61 方法2 续 测试用例 续 覆盖等价类12 3 7 测试输入 3000 3 19 预期结果 输入错误 覆盖等价类1 13 7 测试输入 2004 2 10 预期结果 输入错误 覆盖等价类1 14 7 测试输入 2004 15 10 预期结果 输入错误 覆盖等价类1 3 15 测试输入 2004 8 2 预期结果 输入错误 覆盖等价类1 3 16 测试输入 2004 8 38 预期结果 输入错误 62 讨论每种结果都覆盖了一些应该测试的功能点第一种方法 过多关注无效等价类的测试 遗漏了较多NextDate问题蕴含的逻辑 如平年和闰年 二月和大小月 月底等 第二种方法 在第一种方法的基础上 增加了对二月 年底等的测试 同时要考虑NextDate的逻辑知识 测试用例涵盖了大部分需测试的要点 但仍有些遗漏 例如年底 平年的二月等如果程序未等同地处理等价类中的元素 应将这个等价类再划分为小一些的等价类 3 2 1等价类测试用例设计法 63 等价类测试示例 加法器 一个c语言程序 功能是计算1 100之间的整数的和 includevoidmain void inta 加数intb 加数intc 和while 1 printf 请输入两个1到100之间的整数 fflush stdin 清空输入缓冲区scanf d d 1 无效等价类 1 2 有效等价类1 100之间 3 无效等价类 100 A B 64 加法器等价类扩展 除了考虑数据的输入范围 还要考虑输入数据的类型 65 加法器测试用例 3 某软件要求输入以年月表示的日期 日期限定在1998年1月 2068年12月 并规定日期由6位数字字符组成 前4位表示年 后2位表示月 现用等价类划分法对输入日期进行黑合测试 测试用例的等价类如下表 试设计测试用例 以覆盖所有的等价类 覆盖所有的等价类的测试用例如下表 1 边界值分析法的思想边界值分析法 BoundaryValueAnalysis BVA 是对等价类测试用例设计法的补充 不是选择等价类中的元素 而是选择等价类边界的数据 在测试过程中 往往忽略边界的条件 而软件中的大量错误是发生在输入或输出范围的边界上 因此针对各种边界设计测试用例 以查出更多的错误 3 2 2边界值分析测试用例设计法 1 边界值分析法的思想如创建一个含有10个元素的一维数组的VB程序 Dimdata 10 asIntegerDimiasIntegerFori 1to10data i 1Nexti 3 2 2边界值分析测试用例设计法 1 边界值分析法的思想在Basic语言中 定义数组的第一个元素所对应的下标是0而不是1 因此 程序运行结束后 数组中成员的赋值情况如下 data 0 0 data 1 1 data 2 1 data 10 1当其他程序员使用该数组时 可能会造成软件的缺陷或错误的产生 边界值分析方法设计的测试用例 就是着重测试的边界情况 3 2 2边界值分析测试用例设计法 71 边界值测试用例的取值在输入变量的最小值 略高于最小值 正常值 略低于最大值和最大值处 有效输入区域 函数F有两个变量X1和X2 F实现为一个程序 完成某功能 X1和X2的值域分别为 a b 和 c d 3 2 2边界值分析测试用例设计法 2 边界值分析法的原则边界值分析法应遵循以下几条原则 如果输入条件规定了值的范围 应选取刚达到及刚超过范围边界的值作为测试输入数据 如果输入条件规定了值的个数 则用最大个数 最小个数 比最小个数少1 比最大个数多1的数作为测试数据 根据规格说明的每一个输出条件 分别使用以上两个原则 3 2 2边界值分析测试用例设计法 2 边界值分析法的原则如果规格说明给出的输入域或输出域是有序集合 如有序表 顺序文件等 应选取集合的第一个元素和最后一个元素作为测试用例 如果程序中使用了一个内部数据结构 应选择该内部数据结构的边界值作为测试用例 分析规格说明 找出其他可能的边界条件 3 2 2边界值分析测试用例设计法 74 3 基于单缺陷假设边界值单缺陷假设 失效极少是由两个 或多个 缺陷同时发生而引起的 边界值分析的测试用例 通常一个输入变量取边界值 而其它变量则正常值 每个变量重复进行 对于一个n变量函数 边界值分析产生4n 1个测试用例 3 2 2边界值分析测试用例设计法 75 3 基于单缺陷假设边界值 如何设定边界值 根据上下文 语境 人工创建 3 2 2边界值分析测试用例设计法 实现计算一个含有两个整数自变量X和Y函数的程序 X的取值域为 4 24 Y的取值域为 2 20 根据单缺陷假设边界值测试用例的设计原则 给出边界值分析法的测试用例 若X取正常值14 Y取2 3 19和20 则测试用例有 14 2 14 3 14 19 和 14 20 若Y取正常值11 X取4 5 23和24 则测试用例有 4 11 5 11 23 11 和 24 11 若X和Y均取正常值 则测试用例有 14 11 对所有的测试用例 预期结果都是一个数值 3 2 2边界值分析测试用例设计法 4 基于单缺陷假设健壮边界值测试思想 测试用例除了最小值 略高于最小值 正常值 略低于最大值和最大值处取输入变量的值 还要在略超过最大值以及略小于最小值之处值 如果被测变量个数为n 则测试用例个数为6n 1 a b c d X2 X1 观察例外情况处理关心预期的输出 3 2 2边界值分析测试用例设计法 5 基于多缺陷假设边界值测试多缺陷假设 失效可能是由两个 或多个 缺陷同时发生而引起的 测试思想 首先取每个变量的最小值 略高于最小值 正常值 略低于最大值和最大值的集合进行测试 然后对这些集合进行笛卡儿乘积计算 生成测试用例 即取各变量的不同边界值的组合 产生5的n次幂个用例 78 a b c d X2 X1 最坏情况 3 2 2边界值分析测试用例设计法 6 基于多缺陷假设健壮边界值测试测试思想 首先对于每个变量进行最小值 略高于最小值 正常值 略低于最大值 最大值以及略超过最大值和略小于最小值的集合的测试 然后对这些集合进行笛卡儿乘积计算 生成测试用例 即取各变量的不同边界值的组合 产生7的n次幂个用例 79 a b c d X2 X1 健壮最坏情况测试 3 2 2边界值分析测试用例设计法 以三角形问题为例 要求输入三个整数a b c 分别作为三角形的三条边 取值范围在1 100之间 判断由三条边构成的三角形类型为等边三角形 等腰三角形 一般三角形 包括直角三角形 以及非三角形 如表所示给出了边界值分析测试用例 3 2 2边界值分析测试用例设计法 基于单缺陷假设边界值的测试用例 3 2 2边界值分析测试用例设计法 82 某选课系统中规定每门课程的选修人数在 20 60 之间 小于20人不开设该门选修课 大于60人不接受后面的选课要求 测试设计输入变量 选课人数测试输入选课人数分别为19 20 21 59 60和61等几个边界点一个正常值点40 3 2 2边界值分析测试用例设计法 83 边界值测试举例 NextDate问题 NextDate 年 月 日 是三个变量的函数 函数返回输入日期的下一个日期 变量年份 月份 日期都是整数值 且满足下面的条件 1900 年 2060 1 月 12 1 日 31测试设计三个输入变量 年 月 日年的边界值 1899 1900 1901 1980 2059 2060 2061月的边界值 0 1 2 7 11 12 13日的边界值 0 1 2 15 30 31 32 3 2 2边界值分析测试用例设计法 84 边界值测试小结 错误隐含在角落 边界值最容易出现问题 边界值测试的局限 边界值分析假设变量是独立的 没有相互依赖关系 未考虑函数的性质及变量的语义 如果输入变量之间不是真正独立的 由边界值而得的测试用例不够充分 不仅要考虑输入空间 还要考虑输出空间 健壮性测试是测试内部变量的一种好的选择 循环控制变量 索引和指针等 注意单缺陷假设和多缺陷假设 NextDate的月 日和年之间存在依赖关系 例如2月和闰年 1912年2月31日 3 2 2边界值分析测试法 85 采用边界值技术测试加法器功能 计算两个1 100之间的整数的和 程序 includevoidmain void inta 加数intb 加数intc 和while 1 printf 请输入两个1到100之间的整数 fflush stdin 清空输入缓冲区scanf d d 测试用例 11 12100 10030 04101 101 A B 1 决策表及其测试思想决策表是分析和表达多个逻辑条件下执行不同操作的工具 可以把复杂的逻辑关系与多种条件组合表达得极为具体而又明确 决策表最突出的优点是 能够将复杂的问题按照各种可能的情况全部列举出来 简明并避免遗漏 利用决策表能够设计出完整的测试用例集合 3 2 3基于决策表测试用例设计法 1 决策表及其测试思想测试思想是根据逻辑条件取值的组合所构成的多种情况 分别执行不同的操作 构造相应的测试用例 在所有的黑盒测试方法中 基于决策表 也称判定表 的测试是最为严格 最具有逻辑性的测试方法 3 2 3基于决策表测试用例设计法 2 决策表的组成及其适用性决策表适合描述不同条件集合下采取行动的若干组合的情况 它通常由四个部分组成 条件桩 用于列出问题的所有条件 且列出条件的先后次序可任意 动作桩 用于列出问题规定的可能采取的操作 且操作的排列次序没有约束 条件项 用于针对条件桩给出的条件列出所有可能的取值 3 2 3基于决策表测试用例设计法 2 决策表的组成及其适用性动作项 用于列出在条件项的各组取值情况下应该采取的动作 与条件项紧密相关 3 2 3基于决策表测试用例设计法 2 决策表的组成及其适用性而任何一个条件组合的特定取值及其相应要执行的操作称为一条规则 在决策表中贯穿条件项和动作项的一列就是一条规则 显然 决策表中列出多少组条件取值 也就有多少条规则 即条件项和动作项有多少列 3 2 3基于决策表测试用例设计法 2 决策表的组成及其适用性决策表法一般适用于下列情况 1 规格说明以决策表形式给出或很容易转换成决策表 2 条件的排列顺序不会也不应影响执行的操作 3 规则的排列顺序不会也不应影响执行的操作 3 2 3基于决策表测试用例设计法 2 决策表的组成及其适用性 4 每当某一规则的条件已经满足 并确定要执行的操作后 不必检验别的规则 5 如果某一规则得到满足要执行多个操作 操作的执行与顺序无关 3 2 3基于决策表测试用例设计法 3 决策表的建立与分类根据规格说明 建立决策表的步骤为 1 分析需求 确定条件桩和动作桩 2 填入所有的条件桩和动作桩 3 根据逻辑关系 填入条件项的值 4 根据需求 填入相应动作项的值 5 重复3 4直到所有逻辑关系被遍历完毕 根据条件数和条件取值 确定规则数 6 化简即合并相似规则 相同动作 3 2 3基于决策表测试用例设计法 3 决策表的建立与分类根据条件可取值数 决策表可分为有限项决策表和扩展项决策表 有限项决策表中的每个条件只有两个值 如Y N T F 1 0等 扩展项决策表中的每个条件的取值有多个 大于2个 3 2 3基于决策表测试用例设计法 建立决策表示例 如果某产品销售好并且库存低 则增加该产品的生产 如果该产品销售好 但库存量不低 则继续生产 若该产品销售不好 但库存量低 则继续生产 若该产品销售不好 且库存量不低 则停止生产 该问题中有2个条件 销售 库存 3个动作 增加生产 继续生产和停止生产 而每个条件可以有两个取值 销售好与不好 库存低与不低 所以有有22 4种规则 3 2 3基于决策表测试用例设计法 产品销售问题的决策表 3 2 3基于决策表测试用例设计法 4 不相关项的合并通过合并具有相同动作结果的相似规则 减少规则数量 进而减少测试用例的个数 所谓相似规则是指在其它条件不变时 某一条件无论取何值 都产生相同动作的规则集 而所有相似规则可以合并为一个规则 3 2 3基于决策表测试用例设计法 4 不相关项的合并 3 2 3基于决策表测试用例设计法 4 不相关项的合并当第二 三个条件为 Y 时 第一个条件无论取何值都会产生相同的动作 所以可以将第一条规则和第五条规则利用不相关项进行合并 3 2 3基于决策表测试用例设计法 4 不相关项的合并规则数降低到4 相应的测试用例数也降低到4 不相关项用 表示 3 2 3基于决策表测试用例设计法 三角形问题示例 有一判断由三条边构成的三角形类型 类型有等边三角形 等腰三角形 一般三角形 包括直角三角形 以及非三角形 的程序 要求输入三个整数a b c 分别作为三角形的三条边 取值范围在1 100之间的整数 运用有限项决策表方法设计测试用例 3 2 3基于决策表测试用例设计法 由题意可知 运用决策表方法设计测试用例时 有六个条件桩 a b c b a c c b a a b a c和b c 有五个动作桩 非三角形 不等边三角形 等腰三角形 等边三角形和不可能出现的三个数 且由于每个条件只有两个值 F和T 因此由决策表方法建立的决策表是有限项决策表 即有26 64条规则 特别地 当a b c为F时 另外的条件无论是F还是T 产生的动作项是相同的 所以构成的条件项是不相关项 即可把25 32规则合并为一个 当a b c为T b a c为F时 另外的条件无论是F还是T 产生的动作项是相同的 所以构成的条件项是不相关项 即可把24 16规则合并为一个 当a b c为T b a c为T c b a为F时 另外的条件无论是F还是T 产生的动作项是相同的 所以构成的条件项是不相关项 即可把23 8规则合并为一个 因此共有11条规则需要设计测试用例 如下图所示 3 2 3基于决策表测试用例设计法 测试用例 规则1 测试输入 60 16 26 预期结果 非三角形规则2 测试输入 50 50 0 预期结果 非三角形规则3 测试输入 0 0 0 预期结果 非三角形规则4 测试输入 60 60 60 预期结果 等边三角形规则5 这种组合在现实中不可能存在规则6 这种组合在现实中不可能存在 3 2 3基于决策表测试用例设计法 104 规则7 测试输入 60 60 26 预期结果 等腰三角形规则8 这种组合在现实中不可能存在规则9 测试输入 60 26 60 预期结果 等腰三角形 规则10 测试输入 26 60 60 预期结果 等腰三角形规则11 测试输入 30 40 50 预期结果 不等边三角形 3 2 3基于决策表测试用例设计法 105 扩展项决策表 NextDate问题示例 条件桩 M1 月份 每月有30天 M2 月份 每月有31天 M3 月份 2月 D1 日期 1 日期 28 D2 日期 日期 29 D3 日期 日期 30 D4 日期 日期 31 Y1 年 1900 年 2060 动作桩 A1 输出下一个日期 A2 不可能 如果选择有限项决策表 那么表中会存在256条规则 106 扩展项决策表 NextDate问题 107 扩展项决策表 NextDate问题 NextDate问题的扩展项决策表 日期 D1 从1到27 D2 28 D3 29 D4 30 D5 31 年 Y1 闰年 Y2 平年 月份 M1 31天的月 除去12月 M2 30天的月 M3 2月 M4 12月 108 扩展项决策表 NextDate测试用例 测试用例规则1 测试输入 2007 7 19 预期结果 2007 7 20 规则2 测试输入 2007 7 31 预期结果 2007 8 1 规则3 测试输入 2007 9 25 预期结果 2007 9 26 规则4 测试输入 2007 9 30 预期结果 2007 10 1 规则5 测试输入 2007 11 31 预期结果 日期输入错误 规则6 测试输入 2000 2 15 预期结果 2000 2 16 109 扩展项决策表 NextDate测试用例 测试用例规则7 测试输入 2000 2 29 预期结果 2000 3 1 规则8 测试输入 2000 2 30 预期结果 日期输入错误 规则9 测试输入 2007 2 15 预期结果 2007 2 16 规则10 测试输入 2007 2 28 预期结果 2007 3 1 规则11 测试输入 2007 2 29 预期结果 日期输入错误 规则12 测试输入 2006 12 16 预期结果 2006 12 17 规则13 测试输入 2006 12 31 预期结果 2007 1 1 决策表小结适用于以下类型的应用程序 if then else逻辑突出的程序输入变量之间存在逻辑关系输入与输出之间存在因果关系具有较高的环复杂度基于决策表的测试是严格的测试 在各输入变量之间真正独立的条件下 无法体现其逻辑严谨的优势可使用多种方式 如扩展项决策表 代数简化表增加决策表的伸缩性 3 2 3基于决策表测试用例设计法 1 因果图法及其基本符号等价类划分法和边界值分析法着重考虑输入条件 而没有考虑到输入条件的各种组合 基于决策表法考虑输入条件的各种组合 但没有考虑到各个输入条件之间的相互制约关系 因此 必须考虑采用一种适合于多种输入条件的组合 又考虑到各个输入条件之间的相互制约关系 相应产生多个动作的形式来进行测试用例的设计 因果图法是一种利用图解法分析输入的各种组合及其相互制约关系 从而设计测试用例的方法 3 2 4因果图测试用例设计法 1 因果图法及其基本符号在因果图中 通常使用4种符号来表示输入输出之间的4种因果关系 如图所示 用直线连接左右节点 其中左节点Ci表示输入状态 或称原因 右节点ei表示输出状态 或称结果 Ci和ei都可取值0或1 0表示某状态不出现 1表示某状态出现 3 2 4因果图测试用例设计法 a 恒等 因果图的基本符号 b 非 c 或 d 与 3 2 4因果图测试用例设计法 1 因果图法及其基本符号图 a 表示恒等 若C1是1 则e1也是1 若C1是0 则e1为0 图 b 表示非 若C1是1 则e1是0 若C1是0 则e1为1 图 c 表示或 若C1或C2或C3是1 则e1是1 若C1 C2 C3全为0 则e1为0 图 d 表示与 若C1和C2都是1 则e1是1 只要C1 C2 C3中有一个为0 则e1为0 3 2 4因果图测试用例设计法 1 因果图法及其基本符号输入状态或输出状态之间可能存在某些依赖关系 这种依赖关系称之为约束 如某些输入条件不可能同时出现 在因果图中 也使用特定符号标明约束 如图所示 3 2 4因果图测试用例设计法 1 因果图法及其基本符号 3 2 4因果图测试用例设计法 a 异 b 或 c 惟一 输入约束符号 d 要求 1 因果图法及其基本符号输入约束符有四种 图 a 表示E约束 异 a和b中最多有一个可能为1 即a和b不能同时为1 图 b 表示I约束 或 a b和c中至少有一个必须是1 即a b和c不能同时为0 图 c 表示O约束 唯一 a和b中必须有一个且仅有一个为1 图 d 表示R约束 要求 a是1时 b必须是1 即a是1时 b不能是0 3 2 4因果图测试用例设计法 输出约束符号 e 强制 1 因果图法及其基本符号输出约束只有M约束 图 e M约束 强制 若结果a是1 则结果b强制为0 3 2 4因果图测试用例设计法 2 因果图测试用例设计步骤 1 分析软件规格说明书中的输入输出 找出所有输入和输出并编号 2 分析规格说明语义 找出输入与输入之间 输入与输出之间的关系 是互斥还是可以同时满足 3 将输入与输入 输入与输出之间的对应关系连接起来 并且将其中不可能的组合情况标注成约束或者限制条件 形成因果图 4 将因果图转换成决策表 5 以决策表的列为依据 设计测试用例 3 2 4因果图测试用例设计法 2 因果图测试用例设计步骤 3 2 4因果图测试用例设计法 3 因果图法的适用场合软件的输入条件较多时 通过因果图法设计测试用例 来考虑输入的所有排列组合情况 防止遗漏 从因果图生成的测试用例中包括了所有输入数据真假值 构成的测试用例数目达到最少 且测试用例数目随输入数据数目的增加而线性地增加 但测试用例数目大 不便于维护 3 2 4因果图测试用例设计法 因果图法的示例 某软件规格说明中包含这样的要求 输入的第一个字符必须是A或B 第二个字符必须是一个数字 在此情况下进行文件的修改 但如果第一个字符不正确 则给出信息L 如果第二个字符不是数字 则给出信息M 3 2 4因果图测试用例设计法 分析程序的规格说明 列出输入和输出 输入 C1 第一个字符是AC2 第一个字符是BC3 第二个字符是一个数字输出 e1 给出信息Le2 修改文件e3 给出信息M 3 2 4因果图测试用例设计法 分析程序的规格说明 列出输入与输入和输入与输出的对应关系 输入约束 C1与C2是异关系输入与输出因果 C3与e3是非关系C1 C2的异与e1是非关系C1 C2的异和C3与e2是与关系 3 2 4因果图测试用例设计法 将输入和输出之间的因果关系用逻辑符号连接起来 得到因果图 其中编号为11的中间节点是导出结果的中间原因 3 2 4因果图测试用例设计法 非 非 在因果图上施加E约束 得到具有约束的因果图 3 2 4因果图测试用例设计法 非 非 将因果图转换成决策表 3 2 4因果图测试用例设计法 设计测试用例 因为C1和C2不可能同时为1 所以应排除前两种情况 根据此表 可以设计出6个测试用例 3 2 4因果图测试用例设计法 129 因果图法案例 奖金计算软件 某奖金计算软件实现如下功能 该软件计算某公司的年终奖 该公司的员工分为普通员工和管理人员 员工表现分为普通 优秀和特殊贡献 普通员工和优秀元都可以有特殊贡献 普通员工表现普通和管理员工表现普通拿的工资是不同的 根据员工的分类和表现 将奖金分为1类奖金 2类奖金根据员工的种类和表现 该软件就会输出相应的奖金类别 130 奖金计算软件测试用例设计 找出所有的输入条件 因 和输出条件 果 并编号输入条件员工类别 普通员工A1 管理人员A2员工表现 普通B1 优秀B2 特殊贡献B3输出条件奖金类别 1类奖金C1 2类奖金C2 3类奖金C3 分析输入和输出条件之间的关系普通员工 A1 B1 C1A1 B2 C2A1 B1 B3 C3A1 B2 B3 C4根据输入和输出条件的分析 编写测试用例 管理人员A2 B1 C5A2 B2 C6A2 B1 B3 C7A2 B2 B3 C8 131 奖金计算软件测试用例 因果图 通过图示的方法表示输入的各种组合 略 3 2 4因果图测试用例设计法 132 测试思想依赖经验 直觉和简单的判断 推测程序中所有可能存在的各种错误 从而有针对性地设计测试用例 设计过程列举出程序中可能有的错误和容易发生错误的特殊情况 如特殊值 选择构造测试用例 3 2 5错误猜测测试用例设计法 133 针对系业务流程例如 一个B to C电子商务网站的流程图 测试方法 详细了解需求根据需求或界面原型 找出业务流程的各个页面以及各页面之间的流转关系画出业务流图 路径图 设计测试用例 覆盖所有的路径分支 3 2 6业务流程图测试用例设计法 为了最大程度地减少测试遗漏的缺陷 在测试实施之前 必须确定将要采用的黑盒测试策略和方法 制定详细的测试方案 如果程序中遗留的错误过多且严重 则表明测试不足 而测试不足则意味着让用户承担了隐藏错误带来的危险 但过度测试又带来资源的浪费 因此 黑盒测试策略的关键在于找到一个平衡点 黑盒测试用例设计方法的选择一般如下 3 2 7黑盒测试用例设计方法的应用 1 等价类划分是减少工作量和提高工作效率的最有效方法 通过等价类划分 包括输入条件和输出条件 将无限测试变成有限测试 2 在任何情况下都必须使用边界值分析法 经验表明用该方法设计出测试用例发现程序错误的能力最强 3 对照程序逻辑 检查已设计出的测试用例的逻辑覆盖程度 如果没有达到要求的覆盖标准 应当再补充足够的测试用例 4 如果程序的功能说明中含有输入条件的组合情况 则应在一开始就选用因果图法 3 2 7黑盒测试用例设计方法的应用 3 3 1基本路径测试法3 3 2循环测试法3 3 3逻辑覆盖测试法3 3 4数据流测试法3 3 5程序插桩测试法3 3 6白盒测试方法的综合运用 3 3白合测试用例的设计 工程硕士 137 目前白盒测试方法有基本路径测试 覆盖测试 循环测试 数据流测试 程序插桩测试等等方法 其中主要的方法有 基本路径测试循环测试逻辑覆盖测试语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 路径覆盖数据流测试程序插桩测试 3 3白合测试用例的设计 工程硕士 138 3 3 1基本路径测试法 测试思想 根据程序的控制流图找出一个模块所需测试的基本路径 根据这些路径设计构造相应的测试用例 步骤根据模块逻辑构造控制流图 ControlFlowGraph 计算控制流图的环复杂度 CyclomaticComplexity 列出包含起始节点和终止节点的基本路径 检查一下列出的基本路径数目是否超过控制流图的环复杂度 设计覆盖这些基本路径的测试用例 控制流图 FlowGraph 节点 用标有编号的圆圈表示 它代表了程序流程图中矩形框中所表示的处理 菱形表示的判断处理以及判断处理流程相交的汇合点 边 用带箭头的弧或线表示 表明了控制的顺序 3 3 1基本路径测试法 环复杂度 CyclomaticComplexity 用来衡量一个模块判定结构的复杂程度 在数量上表现为独立的路径条数 即我们需要测试的最少路径条数 计算公式 1 边的数目 节点的数目 22 判定节点数目 1 判定节点必须是二值节点 如果不是 在计算前需要转换 3 3 1基本路径测试法 工程硕士 路径 是一系列边 使得对于该序列中的所有相邻边对偶来说 第一条边的终止节点是第二条边的起始节点 起始节点 内度 0的节点终止 汇 节点 外度 0的节点基本路径 从起始节点到终止节点的一条路径 并且至少包含一条其他基本路径没有包含
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 写作语言通顺教案设计范例
- 医院护士岗位职责与操作指南
- 班主任美丽心灵主题班会方案
- 工业机器人编程实训课程设计
- 标准肖像权使用授权模板范本
- 小学英语期末试卷电子版
- 五年级古诗词说课教学方案
- 1,4-丁二醇装置操作工中秋节后复工安全考核试卷含答案
- 省级高中语文考试真题解析
- 建筑施工安全检查规范及考核标准
- 《早读是需要激情的!》主题班会课件
- 道闸操作安全培训课件
- 2025年质量月知识竞赛题库(附答案)
- 酒店电气使用安全培训课件
- 生猪订购合同书范本3篇
- 2025年妇产科学科宫颈癌筛查常见问题考试答案及解析
- 排球规则课件
- 耕地占用税培训课件
- 110kV变电站及110kV输电线路运维投标技术方案
- 渣浆泵基础知识课件
- 布赫液压样本
评论
0/150
提交评论