软件测试第03章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
测试专家 • 协调人职责
– 为代码审查分发材料(程序清单、设计规范),安 排进程
– 在代码审查过程中起主导作用 – 记录发现的所有错误 – 确保所有错误随后得到改正
静态测试-代码审查和走查
• 代码审查过程:
– (1)协调人提前把代码审查常见错误列表、设计规格说明书、控制流 程图、程序文本及有关要求、规范等分发给小组成员,作为评审的 依据。小组成员在充分阅读这些材料之后,进入审查的第二步。
3.1 黑盒测试与白盒测试

任何工程产品都可以使用
白盒测试和黑盒测试两种方法
之一进行测试。
• 1.黑盒测试

黑盒测试:在测试时,把
被测程序视为一个不能打开的
黑盒子,完全不考虑程序的内
部结构和内部特性下进行的测
试。
• 已知产品的功能设计规格和 用户手册,可以进行测试证明 每个功能是否实现、每个实现 了的功能是否符合要求,以及 产品的性能是否满足用户的要
– 静态测试不实际执行程序,静态测试的主要目的是检查软件 的表示和描述是否一致,没有冲突和歧义。
– 动态测试需要实际运行测试用例,以发现软件中的错误。白 盒测试中的动态测试主要包括功能确认与接口测试、覆盖率 测试、性能分析、内存分析等。
静态白盒测试
1. 程序的静态测试是在不执行程序的条件下, 有条理地仔细审查软件设计、体系结构和 代码,从而找出软件错误的过程。
– 常见错误列表:把以往所有可能发生的常见错误罗列出来,供与会 者对照检查,以提高会审的实效。这个常见错误清单也叫做检查表, 它把程序中可能发生的各种错误进行分类,对每一类列举出尽可能 多的典型错误,然后把它们制成表格,供在会审时使用。
静态测试-代码审查和走查
• 代码审查过程:
– (2)召开程序审查会。在会上,首先由程序员逐句讲解程序的逻辑。在此过 程中,程序员或其他小组成员可以提出问题,展开讨论,审查错误是否存在。 实践表明,程序员在讲解过程中能发现许多原来自己没有发现的错误,而讨 论和争议则促进了问题的暴露。
• 2.白盒测试

白盒测试:已知产品的内部工作过程,
可以通过测试证明每种内部操作是否符合设
计规格要求,所有内部成分是否以经过检查。

软件的白盒测试是对软件的过程性细节
做细致的检查,它允许测试人员利用程序内
部的逻辑结构及有关信息,设计或选择测试
用例,对程序所有逻辑路径进行测试,通过
在不同点检查程序状态,确定实际状态是否
针对代码的常见错误列表
• int x = 1; • int y = 2; • float z = 0; • z = x/y; • System.out.println ("z = " z); • OUTPUT: • z=0
针对代码的常见错误列表
4.比较错误
是否有不同类型数据的比较运算?(如日期与数字) 是否有混合模式或不同长度数据的比较运算? 比较运算符是否正确?(如至多、至少,不小于) 布尔表达式(与、或、非)是否正确? 比较运算符是否与布尔表达式相混合?(如2<i<10对
• 优点: • 1、 简单,不需要了解程序的内部结构 • 2、与软件的内部实现无关 • 3、从用户角度出发,能很容易知道用户会用到哪些功
能,遇到哪些问题 • 4、基于说明书,知道软件实现了说明书哪些功能 • 5、采用自动化测试,较为方便 • 缺点: • 1、不可能覆盖所有的代码 • 2、不能测试程序内部特定部位 • 3、程序中代码未执行的代码无法发现错误 • 4、无法发现说明书本身存在问题的问题
静态测试-代码审查和走查
• 代码审查
– 由若干程序员和测试员组成一个会审小组,通过阅读、讨 论和争议,对程序进行静态分析的过程。
• 优点
– 比桌面检查更有效 – 一旦发现错误,通常就能在代码中对其进行精确定位,降
低调试成本。 – 可以发现成批同一类型错误并得以修正。
静态测试-代码审查和走查
• 代码审查小组人员(4人组成最佳) • 协调人、编码人员、模块的设计人员、一名
代码检查法
• 代码检查包括桌面检查、代码审查和走查等, 主要检查
• 代码和设计的一致性,代码对标准的遵循、可 读性,代码逻辑表达的正确性,代码结构的合 理性等方面;
• 发现违背程序编写标准的问题,程序中不安全、 不明确和模糊的部分,找出程序中不可移植部 分、违背程序编程风格的内容,包括变量检查、 命名和类型审查、程序逻辑审查、程序语法检 查和程序结构检查等内容
(1)把材料先发给走查小组每个成员,让他们认真研究程序,然后再开 会。开会的程序与代码会审不同,不是简单地读程序和对照错误检查表 进行检查,而是让与会者“充当”计算机。即首先由测试组成员为被测 程序准备一批有代表性的测试用例,提交给走查小组。走查小组开会, 集体扮演计算机角色,让测试用例沿程序的逻辑运行一遍,随时记录程 序的踪迹,供分析和讨论用。
与预期的状态一致。因此白盒测试又称为结
构测试或逻辑驱动测试。
白盒测试过程
• 白盒测试须对程序模块进行如下检查:
• 1. 保证一个模块中的所有独立路径至 少被使用一次
• 2. 对所有逻辑值均测试true和false。
• 3. 在循环的边界和运行的界限内执行 循环体。 4. 检查内部数据结构以确定其有效性。
静态测试-桌面检查
桌面检查:由程序员自己检查自己编写的程序。程序员在程序 通过编译之后,进行单元测试设计之前,对源程序代码进行分 析,检验,并补充相关的文档,目的是发现程序中的错误。
检查内容:
变量和标识符的交叉引用 子程序、函数、宏的调用、参数 等价性检查 常量检查,常量的取值、数据类型 设计标准检查 风格检查 路径检查
代码检查法
• 代码检查包括
– 桌面检查(Desk Checking)
– 代码审查(Inspection)
– 代码走查(Walk through)
– 技术评审(Review)

当然在实际工作,我们完全不必要被概
念所束缚住,而应根据项目的实际情况来决定
采取哪种静态测试形 式,不用严格去区分到底
是代码走查,代码审查和还是技术评审。
针对代码的常见错误列表
• 3.运算错误
– 是否存在非算术变量之间的运算? – 是否存在混合模式的运算?( int与float类型,例) – 是否存在不同字长变量之间的运算?(int与long类型) – 目标变量大小是否小于所赋值的大小?(精度损失或越界错误) – 中间结果是否上溢或下溢? – 是否存在除0错误? – 操作符的优先顺序是否正确? – 整数除法是否正确?(精度问题,如2*(i/2)==i)
静态测试-桌面检查
由于程序员熟悉自己的程序及其程序设计风格,可以 节省很多的检查时间,但应避免主观片面性。这种检查应 在软件开发早期实施,最好在设计编码之后、系统测试之 前使用。桌面检查的文档是一种过渡性的文档,不是公开 的正式文档。通过编写文档,也是对程序的一种下意识的 检查和测试,可以帮助程序员发现和抓住更多的错误。管 理部门也可以通过审查桌面检查文档,了解模块的质量、 完全性、测试方法和开发人员的能力。
吗?) 是否存在浮点数的比较? 优先顺序是否正确?(例如if((a==2) && (b==2) || (c==3)) 布尔表达式的计算方式(例如 if((x==0 && (y/x)>z))
针对代码的常见错误列表
• 5.控制流程错误
– 是否所有循环都能终止?(循环结束条件是否能满足以及递归的终止条件是否 能满足。)
协调人要确保会议高效进行,参与者将注意力用于查 找错误而不是修正错误。修正错误由程序员在会后完成。
会议结束后,程序员得到一份已发现错误清单。如 果错误太多或程序要做根本改动,协调人可以再安排一 次审查。
静态测试-代码审查和走查
• 会议理想时间为90-120分钟。时间越长, 效率越低。
• 审查按150行/小时速度进行。 • 每次会议审查一个或几个模块或子程序。 • 为了使每个人都采取建设性态度,最好对
针对代码的常见错误列表
8.其他检查
是否存在未引用过的变量? 每个变量的属性和赋予的默认值是否一致? 编译通过的程序是否存在“警告”或“提示”信息? 程序或模块是否对输入的合法性进行了检查?(如三角
形的边的合法性) 程序是否遗漏了某个功能?
静态测试-代码走查
走查与代码会审基本相同,其过程分为两步。
– 是否存在由于入口条件不满足而跳过循环体?(do-while循环,例) – 是否存在仅差一个的循环错误?(如for(int i=0;i<=10;i++){}) – 程序结构中括号是否匹配、if,else是否匹配、do,while是否匹配、try,catch是
否匹配等。
针对代码的常见错误列表
6.接口错误
形参和实参的数量是否相等? 形参的属性是否与实参的属性相匹配? 形参的属性是否与实参的顺序相匹配? 形参的单位是否和实参匹配?(属逻辑错误) 是否改变了某个仅作为输入值的形参?(C++中的
const关键字) 全局变量的定义是否一致?
针对代码的常见错误列表
• 7.输入输出错误
– 文件属性是否正确? – 打开文件的语句是否正确? – 缓冲区、内存大小是否足够来保留程序将读取的文件? – 文件在使用前是否打开? – 文件在使用后是否关闭了? – 文件结束条件是否本正确处理? – 是否处理了IO错误? – 打印或输出的文本信息中是否存在拼写或语法错误?即输出结果正确性。
审查结果进行保密,仅限于参与者内部。 如果让管理人员做为考ห้องสมุดไป่ตู้依据,则与检查 过程的目的背道而驰。
静态测试-代码检查和走查
代码审查常见错误列表
(1) 检查代码和设计的一致性; (2) 代码的可读性以及对软件设计标准的遵循情况; (3) 代码逻辑表达的正确性; (4) 代码结构的合理性; (5) 程序中不安全、不明确和模糊的部分; (6) 编程风格方面的问题等。
白盒测试优缺点
• 优点: • 1、迫使测试人员去了解软件的实现 • 2、 检测代码中的每条路径和分支 • 3、揭示隐藏在代码中的错误 • 4、对代码的测试进行比较彻底 • 缺点: • 1、白盒测试投入较大,成本较高 • 2、白盒测试不验证规格的正确性 • 3、无法检查代码中遗漏的路径和数据敏感性
错误
黑盒测试的过程
• 黑盒测试主要是为了发现以下几类错误:
• 1. 是否有不正确或遗漏的功能? 2. 在接口上,输入是否能正确的接受?
能否输出正确的结果? 3. 是否有数据结构错误或外部信息(例
如数据文件)访问错误? 4. 性能上是否能够满足要求? 5. 是否有初始化或终止性错误?
黑盒测试的优缺点
3.2 白 盒 测 试 技 术

白盒测试是一种被广泛使用的逻辑测
试方法,也称为结构测试或逻辑驱动测试。

白盒测试对象基本上是源程序,是以
程序的内部逻辑为基础的一种测试方法。
白盒测试方法的分类
• 白盒测试分为静态测试(Static Testing) 和动态测试(Dynamic Testing)两大类。
2. 可尽早发现软件缺陷(开发初期),找到 动态黑盒测试难以发现或者隔离的软件缺 陷(测试后期)。
3. 也可为不了解代码细节的黑盒测试员提供 思路。
白盒测试
• 静态: • 1、代码检查法 • 2、静态结构分析法 • 3、代码质量度量法 • 动态: • 1、逻辑覆盖法 • 2、基本路径测试法 • 3、控制结构测试 • 4、程序插桩
针对代码的常见错误列表
• 2.数据声明错误
– 是否所有变量都已声明? – 绝大多数编程语言要求变量先定义后使用,可保证变量使用的安全性。 – 默认的属性(默认值)是否正确? – 变量的初始化是否正确?变量的初始化是否与其存储空间的类型一致? – 是否每个变量都有正确的长度、类型和存储类别? – 是否存在相似名称的变量?
静态测试-常见错误列表
• 针对代码的常见错误列表
– 数据引用错误 – 数据声明错误 – 运算错误 – 比较错误 – 控制流程错误 – 接口错误 – 输入输出错误 – 其它检查
针对代码的常见错误列表
• 1.数据引用错误
– 变量使用前是否赋值或初始化? – 容易引起变量使用错误,特别是对于指针或引用变量。 – 在java中要求变量在使用前必须初始化。 – 数组下标的范围和类型 – 是否存在下标越界错误,下表类型是否为整型。 – 通过指针引用的内存单元是否存在(虚调用)? – 如在函数返回局部变量的指针或引用时会产生虚调用错误。 – 被引用的变量或内存的属性是否与编译器预期的一致? – 如A类型的指针或引用是否指向的是非A类型对象。
相关文档
最新文档