【笔记】白盒测试技术

白盒测试技术

白盒测试的基本概念
白盒测试也成结构测试、逻辑驱动或基于程序的测试。是一种测试用例设计方法,它从程序的控制结构导出测试用例。针对特定的条件和循环设计测试用例,对程序的逻辑路径进行测试。通过在程序的不同点检验程序状态,来判定其实际情况是否和预期的状态一致。

白盒测试的方法
静态分析:按一定步骤直接检查源代码或代码的测试方法,包括代码审查、桌面检查、代码走查等。
动态测试:按一定步骤生成测试并驱动被测程序运行来发现错误,包括基本路径测试、符号测试、逻辑驱动覆盖、循环测试、数据流测试等方法。

原则:
1保证一个模块中的所有独立路径至少被测试一次
2所有逻辑值均需测试真(true)和假(false)两个分支
3检查程序内部数据结构,保证其结构的有效性
4在上下边界及可操作范围内运行所有循环
在白盒测试中,通常会用覆盖率来度量测试的完整性,测试覆盖率是程序被一组测试用例执行的百分比。
覆盖率=(至少被执行一次的被测试项数)/被测试项总数

逻辑覆盖法
逻辑覆盖是白盒测试中一程序内部的逻辑结构为基础的设计测试用例的技术,有选择的执行程序中某些最具代表性的通路是对穷举测试唯一可行的代替方法。
根据测试覆盖目标的不同,以及覆盖源程序的详尽程度分析由高到低排序,逻辑测试可依次分为:
语句覆盖 SC:可以保证程序中每个语句都得到执行,但发现不了判定中逻辑运算错误
判定覆盖 DC:设计若干测试用例,使得程序中的每个判定至少都获得一次“真”值和“假”值,仍无法确定判定内部条件的错误。
条件覆盖 CC:程序中每个排定中包含的,每一个条件的可能取值(真/假)都至少执行一次。相对判定覆盖相比较,增加了对符合判定情况的测试,增加了测试路径。并不能保证排定覆盖,条件覆盖只能保证每个条件覆盖至少有一次为真,而不考虑所有的判定结果。
判定/条件覆盖 D/CC:两者结合,弥补二者不足,但是没有考虑单个判定对整体结果的影响,无法发现程序中的逻辑错误。
修正的判定/条件覆盖 MD /CC:(每个条件and/or,去除冗余项)
1修正的判定/条件覆盖是要求判定(由条件和零或者多个布尔操作符号组成的布尔表达式)中的每一个条件(即不含布尔操作符号的布尔表达式)的所有可能结果至少出现一次。
2每个判定的左右结果至少出现一次。
3每个程序模块的入口点和出口点都至少被调用一次,且每个条件都能单独地影响判定的结果。即在其他条件不变的情况下改变这个条件的值,使得判定结果改变。
条件组合覆盖 CCC:满足条件组合覆盖准则一定满足判定覆盖、条件覆盖和排定/条件覆盖准则。(条件和组合条件取T/F)
路径覆盖 PC :所有可能的路径都至少被执行一次即是覆盖程序中的所有路径。

基路径测试法
就是从一个层序的入口开始,执行所经历的各个语句的完整过程。包括四个步骤和一个工具方法。
1根据过程设计结果画出程序的控制流图(图中的圆圈为流图的节点,表示一个或多个无分支的语句或源程序语句,箭头表示控制流线,边和节点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域)
2计算程序的环路复杂度 (边-点+2)
3导出基本路径集,确定程序的独立路径(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路复杂度正好等于该程序的独立路径条数)
4设计相应的测试用例
工具方法:采用图形矩阵

循环语句测试
1简单循环:重点测试以下几方面 循环变量初值、最大值、增量是否正确,何时退出循环
2嵌套循环:当外循环变量为最小值,内层循环也为最小时,运算的结果(小小、大小、大大),循环变量的增量是否正确,何时退出循环
3串接循环(又称为并列循环):如果串接循环的每个循环都彼此独立则可以简化为两个单个循环来分别处理。如果两个循环串接起来,并且第一个循环的循环计数器是第二个循环的初始值,则可采用嵌套循环的测试方法
4不规则循环:重新设计为结构化的程序结构,再测试

数据流测试(???)
基本思想是:一个变量的定义,通过辗转的使用和定义,可以影响到另一个变量的值,或影响到路径的选择等。因此可以选择一定的测试数据,使程序按照一定变量的定义使用路径执行,并检查执行结果是否与预期的相符,从而发现代码的错误。
是指一个基于通过层序的控制流,从建立的数据目标状态的序列中发现异常的结构测试方法。
特点:变量被定义,但是从来没有被使用(引用);做使用的变量没有被定义;变量在使用前被定义过两次。
数据流测试关注变量接受值得点和变量使用值的点的结构性测试。数据刘覆盖是选择一组满足变量的定义与引用间的某种关联关系实体,然后选择一组覆盖该组实体的有限路径。
两种形式:一中提供一组基本定义和统一的测试覆盖指标结构;另一种基于“程序片”的概念。

代码检查法
是静态测试的主要方法,包括代码走查、桌面检查、流程图审查
代码检查主要检查代码和流图设计的一致性,代码结构的合理性,代码编写的标准型、可读性,代码的逻辑表达的正确性等方面。它包括变量检查,命名和类型审查,程序逻辑审查,程序语法检查和程序结构检查等内容。

代码检查的目的
1检查程序是不是按照某种标准或规范编写的
2发现程序缺陷以及程序产生的错误
3价差代码是不是流程图要求的
4检查有没有遗漏的项目
5使代码易于移植,因为代码经常需要在不同的硬件中运行,或者使用不同的编译器编译
6使代码易于阅读、理解和维护
代码检查需要的文档
在进行代码检查前应准备好需求文档、程序设计文档、程序的源代码清单、代码编码标准、代码缺陷检查表和流程图等

代码检查方法
1桌面检查:是程序员对源程序代码进行分析检验并补充相关的文档,发现程序中的错误的过程。
2走查:程序员和测试员组成的审查小组通过逻辑运行程序,发现问题。小组成员要提前阅读设计规格书、程序文本等相关文档,利用测试用例,使程序逻辑运行
3代码审查:程序员和测试员组成的审查小组通过阅读、讨论、分析技术对程序进行静态分析的过程。(文本规范相关要求流程图及设计说明书发给每个成员,由程序员讲解程序的结构、逻辑和源程序,成员提出疑问)

代码检查项目
1目录文件组织
2检查函数
3数据类型及变量
4检查条件判断语句
5检查循环体制
6检查代码注释
7桌面检查
8其他检查

域测试法(???)
是一种基于程序结构的测试方法,基于程序输入空间(域)的分析,选择测试点进行测试。域测试是主要针对域错误进行的程序设计。

符号测试法(???)
符号变量值也可以是一个表达式,在执行程序过程中以符号的计算代替了普通测试执行中对测试用例的数值计算,所得到的结果自然是符号公式或是符号谓词。普通测试执行的是算术运算,符号测试执行的是代数运算。

动态白盒测试技术
是指通过分析代码功能和实现方式得到的信息来确定哪些需要测试,哪些不需要测试,哪些需要重点测试以及如何开展测试等。因为软件测试员可以查看并使用底阿妈的内部结构,从而设计和执行测试,因此动态白盒测试又称结构化测试。不仅仅是查看代码,还包括直接参数和控制软件。
1直接测试底层功能、过程、子程序和库,即应用程序接口(API)
2以完整程序的方式从顶层测试软件,但是要根据对软件运行的了解调整测试案列
3从软件获得读取变量和状态信息的访问权,以便确定测试与预期结果是否相符,同时,强制软件以正常测试难以实现的方法运行
4估算执行测试时命中的代码量和具体代码,然后调整测试,去掉多余的补充遗漏的

白盒测试的目的是寻找软件缺陷,调试的目的是修复他们。

白盒测试的流程
NC(Net Computer)系统中的对象主要分为如下几种:界面对象(UI Object)、业务对象BO(Business Object)、数据管理对象DMO(Data Manage Object)、数值对象VO(Value Object)
1界面对象测试:UI→(VO)→BO→DMO→(VO)→DB (优点:便于直观录入;缺点:回归测试需要重复录入)
2业务对象测试:DB→DMO→BO→UI (优点:回归测试不需要重复录入,程序执行一遍即可;缺点:需要给中间层写一个测试小程序,成句程序中雷的对象构造输入数据并将结果输出到控制台上)

白盒测试的要求
数据类型测试:基本数据类型(只是传递值)和引用数据类型(各引用变量都是操作同一个对象)
SQL语句测试:分为语句检查和类型转移检查
数据管理对象测试:一个数值对象(OV)类包装一组代表业务含义的数据,负责在系统各层之间传递业务数据
Java测试:Junit和Cactus,脚本化测试方法(???)
界面测试:1通过浏览测试对象可正确反映业务的功能和需求,这种浏览 包括窗口与窗口之间、字段与字段之间的浏览,以及各种访问方法(Tab键、鼠标移动和快捷键)的使用 2窗口的对象和特征(例如:菜单、大小、位置、状态和中心)都符合标准
业务对象测试:(????)

猜你喜欢

转载自www.cnblogs.com/chancexue/p/13380104.html
今日推荐