软件测试经典知识
12.1 软件测试基础
本节内容 12.1.1 软件测试概述 12.1.2 软件的可测试性 12.1.3 软件测试的对象 12.1.4 软件测试信息流 12.1.5 软件测试步骤 12.1.6 软件测试流程 12.1.7 软件测试与软件开发各阶段的关系 12.1.8 程序错误的分类© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
12.1.1 软件测试概述
软件测试是为了发现错误而执行程序的过程 。
软件测试在软件生存期中横跨两个阶段:
单元测试 集成测试 测试是程序的执行过程,目的在于发现错误,而不是 证明软件的正确 一个好的测试用例在于能发现至今未发现的错误 一个成功的测试是发现了至今未发现的错误的测试。© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试的目的:
软件测试经典知识
12.1.1 软件测试概述
软件测试的原则 :
应当尽早地和不断地进行软件测试 测试用例应由测试输入数据和与之对应的预期输出结 果这两部分组成 程序员应避免测试自己的程序 在设计测试用例时,应当包括合理的输入条件和不合 理的输入条件 充分注意测试中的群集现象 严格执行测试计划,排除测试的随意性
应当对每一个测试结果做全面检查妥善保存测试计划,测试用例,出错统计和最终分析 报告,为维护提供方便。© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
12.1.2 软件的可测试性
影响软件可测试性的因素 :
可操作性 :运行的越好,被测试的效率越高 可观察性 :所看见的就是所测试的 可控制性 :对软件的控制越好,测试越能被自动执行 与优化 可分解性 :通过控制测试范围,能够更快地分解问题 ,执行更灵巧的再测试 简单性 :需要测试的内容越少,测试的速度越快 稳定性 :改变越小,对测试的破坏越小 易理解性 :得到的信息越多,进行的测试越灵巧
© 2009 BUPT TSEG
北京邮电大学 通信软件工程中心
软件测试经典知识
12.1.3 软件测试的对象
软件测试并不等于程序测试,应该贯穿于软件开发的整 个期间。 需求分析、概要设计、详细设计以及程序编码等各个阶 段所得到的文档,都应该成为测试的对象。 为了把握各个环节的正确性,人们需要进行各种确认和 验证工作: 确认(Validation):是一系列的活动和过程,其目的是 证实在一个给定的外部环境中软件的逻辑正确性。
需求规格说明的确认程序的确认
验证(Verification):试图证明在软件生存期各个阶段 ,以及阶段间的逻辑协调性、完备性和正确性。© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
12.1.4 软件测试
信息流
软件配置:包括软件需求规格说明、软件设计规格 说明、源代码等 测试配置:包括测试计划、测试用例、测试驱动程 序等
测试工具:测试工具为测试的实施提供某种服务。© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
12.1.5 软件测试步骤
© 2009 BUPT TSEG
北京邮电大学 通信软件工程中心
软件测试经典知识
12.1.6 软件测试流程
理解测试需求编写测试计划 设计测试方案 开发测试用例 执行软件测试 评估测试效果 编写测试文档
© 2009 BUPT TSEG
北京邮电大学 通信软件工程中心
软件测试经典知识
软件测试文档
《软件测试计划》:根据《系统/子系统需求规格 说明》定义的软件配置项,说明测试项目、测试 用例、测试人员,使软件测试能有效地管理和控 制。 《软件测试说明》:测试项目的具体分析,区分 自动测试和手工测试;构造测试平台;定义测试 过程。 《软件测试记录》:执行软件测试用例,记录测 试结果。 《软件问题报告》:软件测试的结果汇总,分析 软件的质量和存在的问题,并通知开发单位。 《软件问题处理报告》:开发单位根据问题处理 得出的解决方法,软件重新提交测试。 《软件测试报告》:是整个测试的总结性文档。© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
12.1.8 软件错误的分类
按错误的影响和后果分类 : 较小错误:只对系统输出有一些非实质性影响。如,输出 的数据格式不合要求等。
中等错误:对系统的运行有局部影响。如输出的某些数据 有错误或出现冗余。较严重错误:系统的行为因错误的干扰而出现明显不合情 理的现象。比如开出了0.00元的支票,系统的输出完全不 可信赖。 严重错误:系统运行不可跟踪,一时不能掌握其规律,时 好时坏。
非常严重的错误:系统运行中突然停机,其原因不明,无 法软启动。最严重的错误:系统运行导致环境破坏,或是造成事故, 引起生命、财产的损失。© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
12.1.8 软件错误的分类
按错误的性质和范围分类 :
(1)功能错误:规格说明错误 ;功能错误 ; 测试错误 ;测试标准引起的错误 ; (2)系统错误:外部/内部接口错误;硬件结 构错误 ;操作系统错误 ;软件结构错误 ;控 制与顺序错误 ;资源管理错误;
(3)加工错误:算术与操作错误 ;初始化错 误 ;控制和次序错误 ;静态逻辑错误 ;(4)数据错误:动态/静态数据错误;数据内 容错误 ;数据结构错误 ;数据属性错误 ; (5)代码错误:语法错误;打字错误;对语
句或指令不正确理解所产生的错误。© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
12.1.8 软件错误的分类
按软件生存期阶段分类
(1) 问题定义(需求分析)错误:由于需求 分析没有准确定义用户要求(2)规格说明错误 :规格说明与问题定义不 一致; (3)设计错误:设计与规格说明不相符
(4)编码错误:编码未很好实现设计结果, 包括:数据使用类错误、控制流错误、界面错 误、输入输出错误等。© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
12.2 软件测试方法与技术
本节内容
12.2.1 测试技术分类12.2.2 白盒测试技术
12.2.3 黑盒测试技术12.2.4 测试方法选择的综合策略
12.2.5 针对专门环境和应用的测试
© 2009 BUPT TSEG
北京邮电大学 通信软件工程中心
软件测试经典知识
12.2.1 测试技术分类
软件测试技术从大的方面可以分为两类:
静态测试:对软件进行分析、检查和审阅,不 实际运行被测试的软件。约可找出30~70%的逻 辑设计错误 动态测试 :通过运行软件来检验软件的动态行 为和运行结果的正确性 黑盒测试 :已知产品的功能设计规格,可以进行测 试证明每个实现了的功能是否符合要。 白盒测试 :已知产品的内部工作过程,可以通过测 试证明每种内部操作是否符合设计规格的要求。© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
黑盒测试
黑盒测试:在不考虑程序内部结构和内部特征的 情况下,根据软件产品的功能设计规格说明,在 计算机上进行测试,以证实每个实现了的功能是 否符合要求。又叫做功能测试、数据驱动测试或 基于规格说明的测试 。
黑盒测试主要是为了发现以下几类错误:
功能错误或遗漏 输入和输出接口的正确性 数据结构或外部信息访问错误 性能要求满足情况 初始化或终止性错误© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
白盒测试
白盒测试:指根据软件产品的内部工作过程,在 计算机上进行测试,以证实每种内部操作是否符 合设计规格要求,所有内部成分是否已经过检查 。又称为结构测试、逻辑驱动测试或基于程序的 测试 。 白盒测试方法主要对程序模块进行如下检查:
程序模块所有独立执行路径至少测试一次
所有逻辑判定分支至少测试一次循环边界和运行界限内执行情况 程序内部数据结构的有效性© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
黑盒测试与白盒测试的比较
© 2009 BUPT TSEG
北京邮电大学 通信软件工程中心
软件测试经典知识
测试用例的选择
唯一能够保证程序正确
的测试方法就是“穷 举测试”,但是对于一般的软件系统,无论 是黑盒测试还是白盒测试,可能的测试用例 都是天文数字。 假设一个程序P有输入X和Y及输出Z, 字长为32位的计算机上运行。 如果X、Y只取整数,考虑把所有的X、 Y值都作为测试数据,测试数据组(Xi, Yi)的最大可能数目为: 232×232=264。 如果程序P测试一组X、Y数据需要1毫 秒,且一天工作24小时,一年工作365 天,要完成264组测试,需要5亿年。© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
测试用例的选择
任何软件开发项目都要受到期限、费用、 人力和机时等条件的限制,实行穷举测试 工作量过大,实施起来是不现实的。 为了节省时间和资源,提高测试效率,必 须从数量极大的可用测试用例中精心地挑 选少量的测试数据,使得采用这些测试数 据能够达到最佳的测试效果,于是人们对 如何挑选有效的测试用例进行了研究。 测试用例的选择是测试中最为关键的工作 。© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心
软件测试经典知识
12.2.2白盒测试技术
基本白盒测试技术: 1.逻辑覆盖
2.基本路径测试3.控制结构测试
© 2009 BUPT TSEG
北京邮电大学 通信软件工程中心
软件测试经典知识
1.逻辑覆盖
逻辑覆盖是以程序内部的逻辑结构为基础 的设计测试用例的一种白盒测试技术。 可分为:
语句覆盖判定覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心