软件测试-12白盒测试.ppt_第1页
软件测试-12白盒测试.ppt_第2页
软件测试-12白盒测试.ppt_第3页
软件测试-12白盒测试.ppt_第4页
软件测试-12白盒测试.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

白盒测试方法 其他方法 目录 引例有如下代码 C语言 For i 0 i num i k 0 for j k 1 j n j if A i j A i k k j B i A i k 该循环的测试用例设计思路是怎样的 循环测试 循环测试 循环分为4种不同类型 简单循环嵌套循环连锁循环 串接循环 非结构循环 不规则循环 循环测试 1 简单循环测试 零次循环 从循环入口到出口 一次循环 检查循环初始值 二次循环 两次通过循环 m次循环 检查多次循环 最大次数循环n 比最大次数多一次n 1 少一次的循环n 1 循环测试 例 求最小值 k i for j i 1 j n j if A j A k k j k i j i 1 j n A j A k k j j f d c a b e 测试用例选择 2 嵌套循环测试 对最内层循环做简单循环的全部测试 所有其它层的循环变量置为最小值 逐步外推 对其外面一层循环进行测试 测试时保持所有外层循环的循环变量取最小值 所有其它嵌套内层循环的循环变量取 典型 值 反复进行 直到所有各层循环测试完毕 对全部各层循环同时取最小循环次数 或者同时取最大循环次数 回到引例有如下代码 C语言 For i 0 i num i k 0 for j k 1 j n j if A i j A i k k j B i A i k 应用嵌套循环的测试思路 应该怎么设计测试用例呢 3 连锁循环如果各个循环互相独立 则可以用与简单循环相同的方法进行测试 但如果几个循环不是互相独立的 则需要使用测试嵌套循环的办法来处理 4 非结构循环这一类循环应该使用结构化程序设计方法重新设计测试用例 方法简介如果我们想要了解一个程序在某次运行中所有可执行语句被覆盖的情况 或是每个语句实际执行次数 最好的办法就是利用程序插桩技术 程序插桩技术 程序插桩技术 在软件动态测试中 程序插桩 ProgramInstrumentation 是一种基本的测试手段方法简介 借助往被测程序中插入操作 来实现测试目的的方法 最简单的插桩 在程序中插入打印语句printf 语句 程序插桩技术 程序从入口开始执行 到出口结束 凡经历的计数语句都能记录下该程序点的执行次数 如果我们在程序的入口处还插入了对计数器C i 初始化的语句 在出口处插入了打印这些计数器的语句 就构成了完整的插桩程序 它就能记录并输出在各程序点上语句的实际执行次数 程序插桩技术 右图为插桩之后的程序 箭头所指为插入的语句 原程序的语句已略去 例 求取两个整数X和Y的最大公约数程序如下 intgsd intX intY intQ X intR Y while Q R if Q R Q Q R elseR R Q returnQ 程序插桩技术 可以根据程序绘制出其流程图为了记录该程序中语句的执行次数 我们使用插桩技术插如如下语句 C i C i 1 i 1 2 6插桩之后的流程图如下 程序插桩技术 设计插桩程序时需要考虑的问题包括 1 需要探测哪些信息 2 在程序的什么部位设置探测点 3 需要设置多少个探测点前两个问题需要结合具体的问题解决 并不能给出笼统的回答 至于第三个问题 需要考虑如何设置最少的探测点 静态测试法简介 静态测试不实际运行软件 只是检查和审阅 主要对软件的编程格式 结构等方面进行评估 静态测试 代码检查 静态结构分析 代码质量度量 代码审查 代码走查 桌面检查 控制流分析 数据流分析 信息流分析 代码审查 codeinspection 程序员和测试员组成的审查小组通过阅读 讨论和争议 对程序进行静态分析的过程 第一步 小组成员提前阅读设计规格书 程序文本等相关文档第二步 召开程序审查会 开发人员读程序 审查小组讨论 发现 解决问题 代码审查 codeinspection 内容检查代码和设计的一致性检查代码对标准的遵循 可读性检查代码的逻辑表达的正确性检查代码结构的合理性形成公司积累变成容易出错的checklist 代码走查 codewalkthrough 程序员和测试员组成的审查小组通过逻辑运行程序 发现问题 第一步 小组成员提前阅读设计规格书 程序文本等相关文档第二步 利用测试用例 使程序逻辑运行 记录程序的踪迹 发现 讨论 解决问题 桌面检查 可视为由单人进行的代码检查或代码走查 是程序员对源程序代码进行分析 检验 并补充相关的文档 发现程序中的错误的一种方法 白盒测试综合策略 在白盒测试中 可以使用各种测试方法的综合测试如下所示 在测试中 应尽量先用工具进行静态结构分析 测试中可采取先静态后动态的组合方式 先进行静态结构分析 代码检查和静态质量度量 再进行覆盖率测试 白盒测试综合策略 利用静态分析的结果作为引导 通过代码检查和动态测试的方式对静态分析结果进行进一步的确认 使测试工作更为有效 覆盖率测试是白盒测试的重点 一般可使用基本路径测试法达到语句覆盖标准 对于软件的重点模块 应使用多种覆盖率标准衡量代码的覆盖率 白盒测试综合策略 在不同的测试阶段 测试的侧重点不同 在单元测试阶段 以代码检查 逻辑覆盖为主 在集成测试阶段 需要增加静态结构分析 静态质量度量 在系统测试阶段 应根据黑盒测试的结果 采取相应的白盒测试 白盒测试方法小结 逻辑覆盖方法基本路径测试方法循环测试程序插桩技术静态测试法 补充 最少测试用例数计算 为实现测试的逻辑覆盖 必须设计足够多的测试用例 并使用这些测试用例执行被测程序 实施测试 我们关心的是 对于某个具体的程序来说 至少需要设计多少个测试用例 这里提供一种估算最少测试用例数的方法 我们知道 结构化程序是由3种基本控制结构组成 顺序型 构成串行操作 选择型 构成分支操作 和重复型 构成循环操作 为了把问题化简 避免出现测试用例极多的组合爆炸 把构成循环操作的重复型结构用选择结构代替 这样 任一循环便改造成进入循环体或不进入循环体的分支操作了 最少测试用例数计算 续 用N S图表示程序的3种基本控制结构 图中A B C D S均表示要执行的操作 P是可取真假值的谓词 Y表真值 N表假值 图中的 c 和 d 两种重复型结构代表了两种循环 在做了简化循环的假设以后 对于一般的程序控制流 我们只考虑选择型结构 事实上它已经能体现顺序型和重复型结构了 最少测试用例数计算 续 显然 要测试这个小程序 需要至少提供4个测试用例才能作到逻辑覆盖 使得ac ad bc及bd操作均得到检验 其实 这里的4是图中的第1个分支谓词引出的两个操作 及第2个分支谓词引出的两个操作组合起来而得到的 即2 2 4 并且 这里的2是由于两个并列的操作 即1 1 2而得到的 例如 下图表达了两个顺序执行的分支结构 当两个分支谓词P1和P2取不同值时 将分别执行a或b及c或d操作 最少测试用例数计算 续 对于一般的 更为复杂的问题 估算最少测试用例个数的原则也是同样的 如果在N S图中存在有并列的层次A1 A2 A1和A2的最少测试用例个数分别为a1 a2 则由A1 A2两层所组合的N S图对应的最少测试用例数为a1 a2 如果在N S图中不存在有并列的层次 则对应的最少测试用例数由并列的操作数决定 即N S图中除谓词之外的操作框的个数 最少测试用例数计算 续 例 如下图所示的两个N S图 至少需要多少个测试用例完成逻辑覆盖 对于第一个N S图 由于图中并不存在并列的层次 最少测试用例数由并列的操作数决定 即为1 1 1 3 对于第二个N S图 由于图中没有包含并列的层次 最少测试用例数仍由并列的操作数决定 即为1 1 1 1 1 5 最少测试用例数计算 续 例 如下图所示的N S图 至少需要多少个测试用例完成逻辑覆盖 分析该N S图 图中的2345和67是并列的两层 其中 2345层对应的最少测试用例数为1 1 1 1 1 5 67层对应的测试用例数为1

温馨提示

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

评论

0/150

提交评论