软件测试基本技术经典

上传人:小** 文档编号:45093020 上传时间:2018-06-15 格式:PPT 页数:254 大小:5.75MB
返回 下载 相关 举报
软件测试基本技术经典_第1页
第1页 / 共254页
软件测试基本技术经典_第2页
第2页 / 共254页
软件测试基本技术经典_第3页
第3页 / 共254页
软件测试基本技术经典_第4页
第4页 / 共254页
软件测试基本技术经典_第5页
第5页 / 共254页
点击查看更多>>
资源描述

《软件测试基本技术经典》由会员分享,可在线阅读,更多相关《软件测试基本技术经典(254页珍藏版)》请在金锄头文库上搜索。

1、第3章 软件测试基本技术 3.1 黑盒测试与白盒测试 3.2 白 盒 测 试技术 3.3 黑 盒 测 试技术3.1 黑盒测试与白盒测试 任何工程产品都可以使 用白盒测试和黑盒测试两种 方法之一进行测试。 1黑盒测试 黑盒测试:在测试时, 把被测程序视为一个不能打 开的黑盒子,完全不考虑程 序的内部结构和内部特性下 进行的测试。 已知产品的功能设计规格 和用户手册,可以进行测试 证明每个功能是否实现、每 个实现了的功能是否符合要 求,以及产品的性能是否满 足用户的要求。 黑盒测试的过程 黑盒测试主要是为了发现以下几类错误: 1. 是否有不正确或遗漏的功能? 2. 在接口上,输入是否能正确的接受

2、?能否输出正确的结果? 3. 是否有数据结构错误或外部信息( 例如数据文件)访问错误? 4. 性能上是否能够满足要求? 5. 是否有初始化或终止性错误? 黑盒测试的优缺点 优点: 1、 简单,不需要了解程序的内部结构 2、与软件的内部实现无关 3、从用户角度出发,能很容易知道用户会用到哪些 功能,遇到哪些问题 4、基于说明书,知道软件实现了说明书哪些功能 5、采用自动化测试,较为方便 缺点: 1、不可能覆盖所有的代码 2、不能测试程序内部特定部位 3、程序中代码未执行的代码无法发现错误 4、无法发现说明书本身存在问题的问题 2白盒测试 白盒测试:已知产品的内部工作过程 ,可以通过测试证明每种内

3、部操作是否符 合设计规格要求,所有内部成分是否以经 过检查。 软件的白盒测试是对软件的过程性细 节做细致的检查,它允许测试人员利用程 序内部的逻辑结构及有关信息,设计或选 择测试用例,对程序所有逻辑路径进行测 试,通过在不同点检查程序状态,确定实 际状态是否与预期的状态一致。因此白盒 测试又称为结构测试或逻辑驱动测试。白盒测试过程 白盒测试须对程序模块进行如下检查: 1. 保证一个模块中的所有独立路径 至少被使用一次 2. 对所有逻辑值均测试true和false 。 3. 在循环的边界和运行的界限内执 行循环体。 4. 检查内部数据结构以确定其有效 性。白盒测试优缺点 优点: 1、迫使测试人员

4、去了解软件的实现 2、 检测代码中的每条路径和分支 3、揭示隐藏在代码中的错误 4、对代码的测试进行比较彻底 缺点: 1、白盒测试投入较大,成本较高 2、白盒测试不验证规格的正确性 3、无法检查代码中遗漏的路径和数据敏感性 错误3.2 白 盒 测 试 技 术 白盒测试是一种被广泛使用的逻辑测 试方法,也称为结构测试或逻辑驱动测试 。 白盒测试对象基本上是源程序,是以 程序的内部逻辑为基础的一种测试方法。白盒测试方法的分类 白盒测试分为静态测试(Static Testing )和动态测试(Dynamic Testing)两 大类。 静态测试不实际执行程序,静态测试的主要目的是检查软件 的表示和描

5、述是否一致,没有冲突和歧义。 动态测试需要实际运行测试用例,以发现软件中的错误。白 盒测试中的动态测试主要包括功能确认与接口测试、覆盖率 测试、性能分析、内存分析等。 静态白盒测试 程序的静态测试是在不执行程序的条件下 ,有条理地仔细审查软件设计、体系结构 和代码,从而找出软件错误的过程。 可尽早发现软件缺陷(开发初期),找到 动态黑盒测试难以发现或者隔离的软件缺 陷(测试后期)。 也可为不了解代码细节的黑盒测试员提供 思路。白盒测试 静态: 1、代码检查法 2、静态结构分析法 3、代码质量度量法 动态: 1、逻辑覆盖法 2、基本路径测试法 3、控制结构测试 4、程序插桩代码检查法 代码检查包

6、括桌面检查、代码审查和走查等 ,主要检查 代码和设计的一致性,代码对标准的遵循、 可读性,代码逻辑表达的正确性,代码结构 的合理性等方面; 发现违背程序编写标准的问题,程序中不安 全、不明确和模糊的部分,找出程序中不可 移植部分、违背程序编程风格的内容,包括 变量检查、命名和类型审查、程序逻辑审查 、程序语法检查和程序结构检查等内容 代码检查法 代码检查包括 桌面检查(Desk Checking) 代码审查(Inspection) 代码走查(Walk through) 技术评审(Review) 当然在实际工作,我们完全不必要被 概念所束缚住,而应根据项目的实际情况来 决定采取哪种静态测试形 式

7、,不用严格去区 分到底是代码走查,代码审查和还是技术评 审。静态测试-桌面检查桌面检查:由程序员自己检查自己编写的程序。程序员在程序通过编译之后,进行单元测试设计之前,对源程序代码进行分析,检验,并补充相关的文档,目的是发现程序中的错误。 检查内容:变量和标识符的交叉引用子程序、函数、宏的调用、参数等价性检查常量检查,常量的取值、数据类型设计标准检查风格检查路径检查静态测试-桌面检查由于程序员熟悉自己的程序及其程序设计风格,可以节省很多的检查时间,但应避免主观片面性。这种检查应在软件开发早期实施,最好在设计编码之后、系统测试之前使用。桌面检查的文档是一种过渡性的文档,不是公开的正式文档。通过编

8、写文档,也是对程序的一种下意识的检查和测试,可以帮助程序员发现和抓住更多的错误。管理部门也可以通过审查桌面检查文档,了解模块的质量、完全性、测试方法和开发人员的能力。静态测试-代码审查和走查 代码审查 由若干程序员和测试员组成一个会审小组,通过阅读、 讨论和争议,对程序进行静态分析的过程。 优点 比桌面检查更有效 一旦发现错误,通常就能在代码中对其进行精确定位, 降低调试成本。 可以发现成批同一类型错误并得以修正。静态测试-代码审查和走查 代码审查小组人员(4人组成最佳) 协调人、编码人员、模块的设计人员、一名 测试专家 协调人职责 为代码审查分发材料(程序清单、设计规范),安 排进程 在代码

9、审查过程中起主导作用 记录发现的所有错误 确保所有错误随后得到改正静态测试-代码审查和走查 代码审查过程: (1)协调人提前把代码审查常见错误列表、设计规格说明书、控制 流程图、程序文本及有关要求、规范等分发给小组成员,作为评审 的依据。小组成员在充分阅读这些材料之后,进入审查的第二步。 常见错误列表:把以往所有可能发生的常见错误罗列出来,供与会 者对照检查,以提高会审的实效。这个常见错误清单也叫做检查表 ,它把程序中可能发生的各种错误进行分类,对每一类列举出尽可 能多的典型错误,然后把它们制成表格,供在会审时使用。静态测试-代码审查和走查 代码审查过程: (2)召开程序审查会。在会上,首先由

10、程序员逐句讲解程序的逻辑。在此过 程中,程序员或其他小组成员可以提出问题,展开讨论,审查错误是否存 在。实践表明,程序员在讲解过程中能发现许多原来自己没有发现的错误 ,而讨论和争议则促进了问题的暴露。协调人要确保会议高效进行,参与者将注意力用于查 找错误而不是修正错误。修正错误由程序员在会后完成。会议结束后,程序员得到一份已发现错误清单。如 果错误太多或程序要做根本改动,协调人可以再安排一 次审查。静态测试-代码审查和走查 会议理想时间为90-120分钟。时间越长, 效率越低。 审查按150行/小时速度进行。 每次会议审查一个或几个模块或子程序。 为了使每个人都采取建设性态度,最好对 审查结果

11、进行保密,仅限于参与者内部。 如果让管理人员做为考评依据,则与检查 过程的目的背道而驰。静态测试-代码检查和走查代码审查常见错误列表(1) 检查代码和设计的一致性;(2) 代码的可读性以及对软件设计标准的遵循情况;(3) 代码逻辑表达的正确性;(4) 代码结构的合理性;(5) 程序中不安全、不明确和模糊的部分;(6) 编程风格方面的问题等。静态测试-常见错误列表 针对代码的常见错误列表 数据引用错误 数据声明错误 运算错误 比较错误 控制流程错误 接口错误 输入输出错误 其它检查针对代码的常见错误列表1.数据引用错误 变量使用前是否赋值或初始化? 容易引起变量使用错误,特别是对于指针或引用变量

12、。 在java中要求变量在使用前必须初始化。 数组下标的范围和类型 是否存在下标越界错误,下表类型是否为整型。 通过指针引用的内存单元是否存在(虚调用)? 如在函数返回局部变量的指针或引用时会产生虚调用错误。 被引用的变量或内存的属性是否与编译器预期的一致? 如A类型的指针或引用是否指向的是非A类型对象。针对代码的常见错误列表 2.数据声明错误 是否所有变量都已声明? 绝大多数编程语言要求变量先定义后使用,可保证变量使用的安 全性。 默认的属性(默认值)是否正确? 变量的初始化是否正确?变量的初始化是否与其存储空间的类型一致? 是否每个变量都有正确的长度、类型和存储类别? 是否存在相似名称的变

13、量? 3.运算错误 是否存在非算术变量之间的运算? 是否存在混合模式的运算?( int与float类型,例) 是否存在不同字长变量之间的运算?(int与long类型) 目标变量大小是否小于所赋值的大小?(精度损失或越界错误) 中间结果是否上溢或下溢? 是否存在除0错误? 操作符的优先顺序是否正确? 整数除法是否正确?(精度问题,如2*(i/2)=i)针对代码的常见错误列表针对代码的常见错误列表 int x = 1; int y = 2; float z = 0; z = x/y; System.out.println (“z = “ z); OUTPUT: z = 0针对代码的常见错误列表4.

14、比较错误 n是否有不同类型数据的比较运算?(如日期与数字) n是否有混合模式或不同长度数据的比较运算? n比较运算符是否正确?(如至多、至少,不小于) n布尔表达式(与、或、非)是否正确? n比较运算符是否与布尔表达式相混合?(如2z)) 5.控制流程错误是否所有循环都能终止?(循环结束条件是否能满足以及递归的终止条件是 否能满足。) 是否存在由于入口条件不满足而跳过循环体?(do-while循环,例) 是否存在仅差一个的循环错误?(如for(int i=0;i=80 andY=801-TYESX+Y=140 and (x=90 or y=90)2-T3-TYESNONOOEABCDOBDE

15、50 50 2OBCE 70 90 3OAE 90 90 1路径 Y X 测试用例设计:测试用例设 计:ab cmid路径 1 25 3 10128 2 12 1 001348 3 42 1 -1201358开始Float a,b,c,x1,x2,mid; Scanf(“%f,%f,%f”,a!=0mid=b*b-4*a*c;mid0x1=(-b+sqrt(mid)/(2*a); x2=(-b-sqrt(mid)/(2*a); printf(“two real rootsn”);mid=0结束YNYNx1=-b/(2*a); printf(“one real rootn”);x1=-b/(2*a); x2=sqrt(-mid)/(2*a); printf(“two complex rootsn”);printf(“x1=%f,x2=%fn”,x1,x2);YN(0)(1)(9)(2)(3)(4)(5)(8)语句覆盖优点: 直观、简单、易自动化 缺点: 发现错误能力很“弱” 对隐藏的条

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

当前位置:首页 > 商业/管理/HR > 管理学资料

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