白盒测试的实用技术.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第2章白盒测试的实用技术白盒测试(WhiteBoxTesting),按照程序内部的结构、逻辑驱动测试程序,通过测试来检测产品内部动作是否按照设计说明书的规定正常进行,检验程序中的每条路径是否都能按预定要求正确工作。软件测试技术研究组·中国信息大学白盒测试技术是软件测试的主要方法之一,白盒测试的基本概念、检查方法、测试方法、测试工具等内容是必须掌握的,本章重点讨论以下内容:●白盒测试的概述●白盒测试的静态检查方法●白盒测试的常用方法软件测试技术研究组·中国信息大学2.1白盒测试的概述白盒测试的对象主要是源程序。是指用代码内部的分支、路径、条件,使程序设计的控制结构导出测试用例,是软件测试的主要方法之一。2.1.1白盒测试的基本知识白盒测试方法分为两类:(1)静态测试(2)动态测试:软件测试技术研究组·中国信息大学2.1.2白盒测试测试原则白盒测试的原则有4点:1)保证一个模块中所有路径至少被测试一次;2)所有逻辑值都要测试真和假两种情况;3)检查程序的内部数据结构是否有效;4)检查上、下边界及可操作范围内运行所有循环。软件测试技术研究组·中国信息大学2.1.3白盒测试的类别、依据和流程白盒测试策略是首先进行静态结构分析,采用先静态后动态的组合方式。然后进行覆盖测试。利用静态测试的分析结果和通过动态测试的结果进行进一步确认已达到测试效果。白盒测试一般要考虑类别、依据和流程。软件测试技术研究组·中国信息大学1.白盒测试的类别白盒测试的类别具体分为8大类。(1)软件公用问题的测试;(2)语言测试;(3)SQL语句测试;(4)数据类型测试;(5)界面测试;(6)数值对象测试;(7)业务对象测试;(8)数据管理对象测试。软件测试技术研究组·中国信息大学2.白盒测试依据软件需求报告;软件需求规格说明;程序设计文档;软件界面设计;编码规范;开发命名标准。软件测试技术研究组·中国信息大学3.白盒测试的流程白盒测试的流程分为界面对象和业务对象两种方式。(1)界面对象测试界面对象测试的流程如图2-1所示。软件测试技术研究组·中国信息大学图2-1界面对象的流程图(2)业务对象流程测试业务对象测试的流程如图2-2所示。软件测试技术研究组·中国信息大学图2-2业务对象测试的流程图2.2白盒测试方法在白盒测试中,可以使用各种测试方法进行测试。但是,测试要考虑五点问题。(1)测试中,尽量先用自动化工具来进行静态结构分析;(2)测试中建议先从静态测试开始,如:静态结构分析、代码走查和静态质量度量,然后进行动态测试,如:覆盖率测试;(3)利用静态分析的结果作为依据,再使用代码检查和动态测试的方式对静态分析结果进行进一步确认,提高测试效率及准确性;(4)覆盖率测试是白盒测试中的重要手段,在测试报告中可以作为量化指标的依据,对于软件的重点模块,应使用多种覆盖率标准衡量代码的覆盖率;(5)在不同的测试阶段,测试的侧重点是不同的。软件测试技术研究组·中国信息大学2.2.1代码检查代码检查是静态测试的主要方法,代码检查包括代码走查、桌面检查、流程图审查等。对于代码检查从如下几点进行叙述。1)概述代码检查主要检查代码和流图设计的一致性、代码结构的合理性、代码编写的标准性、可读性、代码的逻辑表达的正确性等方面。包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。软件测试技术研究组·中国信息大学2)代码走查目的代码走查是为达到以下目的:★通过检查代码程序是不是按照某种标准或规范编写的代码;★通过检查代码来发现程序缺陷;★通过检查代码容易发现程序产生的错误;★通过检查代码来发现代码是不是流程图要求的;★通过检查代码来发现有没有遗漏的项目;★要代码易于移植,代码经常需要在不同的硬件中运行,或者使用不同的编译器编译;★要代码易于阅读、理解和维护。软件测试技术研究组·中国信息大学2.2.2代码检查方式代码走查的方式有:1.桌面检查2.走查3.代码审查代码审查可分为以下两步:第一步:小组负责人把程序文本、规范、相关要求、流程图及设计说明书发给每个成员。第二步:每个成员依据所发材料作为审查依据,但是由程序员讲解程序的结构每、逻辑和源程序。在此过程中,小组成员可以提出自己的疑问;程序员在讲解自己的程序时,也能发现自己原来没有注意到的问题。软件测试技术研究组·中国信息大学2.2.3代码检查项目代码检查项目主要有以下几点:目录文件组织检查函数数据类型及变量检查条件判断语句检查循环体制检查代码注释桌面检查其它检查软件测试技术研究组·中国信息大学2.2.4静态结构分析静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。通过应用程序各函数之间的调用关系展示了系统的结构。列出所有函数,用连线表示调用关系和作用。静态结构主要分析:1.可以检查函数的调用关系是否正确;2.是否存在孤立的函数而没有被调用;3.明确函数被调用的频繁度,对调用频繁的函数可以重点检查。软件测试技术研究组·中国信息大学2.2.5SQL语句测试主要检查以下两点:1.语句检查2.类型转换2.2.6代码检查的分析与评价代码检查的分析与评价主要注意以下两大点:1.能力陈述经代码检查证实了的本软件的能力。2.缺陷和限制软件测试技术研究组·中国信息大学2.3白盒测试的常用技术白盒测试常用技术主要有7种。现分别叙述如下:2.3.1逻辑覆盖法逻辑覆盖法主要讨论四点:★测试覆盖率;★逻辑覆盖;★面向对象的覆盖;★测试覆盖准则。现分别进行讨论。软件测试技术研究组·中国信息大学1.测试覆盖率测试覆盖率是用于确定测试所执行到的覆盖项的百分比。其中的覆盖项是指作为测试基础的一个入口或属性,比如语句、分支、条件等。测试覆盖率可以表示出测试的充分性,在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。但覆盖率不是目标,只是一种手段。其中测试覆盖率包括功能覆盖和结构覆盖软件测试技术研究组·中国信息大学2.逻辑覆盖根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖又可分为语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖、修改条件判定覆盖、组合覆盖和路径覆盖。3.面向对象的覆盖面向对象的覆盖主要讨论继承上下文覆盖和基于状态的上下文覆盖。软件测试技术研究组·中国信息大学4.测试覆盖准则测试覆盖准则主要讨论ESTCA(ErrorSensitiveTestCasesAnalysis)错误敏感测试用例分析和LCSAJ(LinearCodeSequenceandJump)线性代码序列与跳转。(1)ESTCA覆盖准则(2)现行代码序列与跳转LCSAJ现行代码序列与条状LCSAJ是指一组顺序执行的代码,以控制流跳转为结束点。可产生4层覆盖软件测试技术研究组·中国信息大学2.3.2插桩技术软件动态测试中,插桩测试是一个被广泛应用的测试方法。插桩测试就是向源程序中插入语句然后执行程序,通过打印语句,获得动态信息(我们最为关心的信息)。在这里,我们举一个最简单的例子,以计算整数X和整数Y的最大公约数为例,试图说明插桩技术的要点。插桩后求最大公约数程序流程图如图2-3所示。软件测试技术研究组·中国信息大学软件测试技术研究组·中国信息大学图2-3求最大公约数程序插桩流程图2.3.3基本路径测试法基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。基本路径测试法的重点内容如下:★程序的控制流图:描述程序控制流的一种图示方法。★程序环形复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。软件测试技术研究组·中国信息大学1.程序控制流图程序控制流图(可简称流图)是对程序流程图进行简化后得到的,它突出表示程序控制流的结构。程序控制流图是描述程序控制流的一种方式。控制流图图形符号:图形符号:圆圈代表一个结点,表示一个或多个无分支的语句或源程序语句;程序控制流边和点圈定的部分叫做区域。当对区域计数时,图形外的一个部分也应记为一个区域;判断语句中的条件为复合条件时,即条件表达式由一个或多个逻辑运算符连接的逻辑表达式(aandb),则需要改变复合条件的判断为一系列只有单个条件的嵌套的判断。软件测试技术研究组·中国信息大学基本路径测试方法是在控制流图的基础上,通过分析控制结构的环形复杂度,导出执行路径的基本集,再从该基本集设计测试用例。基本路径测试方法包括以下4个步骤:①画出程序的控制流图。②计算程序的环形复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。③导出基本路径集,确定程序的独立路径。④根据③中的独立路径,设计测试用例的输入数据和预期输出。程序控制流图如图2-4所示。软件测试技术研究组·中国信息大学软件测试技术研究组·中国信息大学软件测试技术研究组·中国信息大学图2-4程序控制流程图2.3.4域测试法域测试是一种基于程序结构的测试方法,基于对程序输入空间(域)的分析,选择测试点进行测试。主要为:1)域错误:程序的控制流存在错误,对于某一特定的输入可能执行的是一条错误路径,这种错误称为路径错误,也叫做域错误;2)计算型错误:对于特定输入执行的路径正确,但赋值语句的错误导致输出结果错误,称为计算型错误;3)丢失路径错误:由于程序中的某处少了一个判定谓词而引起的丢失路径错误软件测试技术研究组·中国信息大学2.3.5符号测试符号测试基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,符号值可以是基本的符号变量值,也可以是符号变量值的表达式。1)符号测试执行的是代数运算,可以作为普通测试的一个扩充;2)符号测试可以看作是程序测试和程序验证的一个折衷办法;3)符号测试程序中仅有有限的几条执行路径;软件测试技术研究组·中国信息大学2.3.6Z路径覆盖法分析程序中的路径是指检验程序从入口开始,执行过程中经历的各个语句,直到出口。Z路径覆盖对循环机制进行简化,减少路径的数量,使得覆盖所有路径成为可能,简化循环意义下的路径覆盖称为Z路径覆盖(循环简化:限制循环次数,只考虑循环一次或零次情况),循环简化的目的是限制循环的次数,无论循环的形式和循环体实际执行的次数,简化后的循环测试只考虑执行循环体一次和零次(不执行)两种情况,即考虑执行时进入循环体一次和跳过循环体这两种情况。软件测试技术研究组·中国信息大学2.3.7程序变异测试法程序变异是一种错误驱动测试。错误驱动测试是指该方法是针对某类特定程序错误的,经过多年的测试理论研究和软件测试的实践,人们逐渐发现要想找出程序中所有的错误几乎是不可能的。比较现实的解决办法是将错误的搜索范围尽可能地缩小,以利于专门测试某类错误是否存在。软件测试技术研究组·中国信息大学•请您解答:•1.白盒测试有哪两个分类?•2.说出白盒测试的4个原则。•3.详细说明白盒测试方法要注意的问题。•4.请简要写出白盒测试常用的7类技术。•5.逻辑覆盖主要测试哪8各方面的覆盖率?谢谢软件测试技术研究组·中国信息大学

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功