第一章软件测试概述1、软件测试是对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
2、软件故障与硬件故障导致系统失效的比例为:10:13、软件缺陷的典型例子:(1)千年虫问题(银行计算利息为负数)(2)爱国者导弹防御系统(系统时钟错误积累,使导弹延时,美国的导弹误杀了美国的士兵)(3)美国火星登陆事故(接口错误,没有测试,导致飞船加速下降,撞成碎片)(4)Intel奔腾芯片缺陷(计算错误,损失巨大)(5)Windows 2000 安全漏洞(系统,网站等受到攻击)(6)迪斯尼的圣诞节礼物(7)冲击波”计算机病毒4、软件缺陷产生的原因:(1)、开发人员不太了解需求,软件需求分析不够全面、准确是导致软件缺陷的最主要原因。
(2)、软件系统越来越复杂,开发人员不太可能精通所有的技术。
(3)、技术文档普遍比较糟糕,文档本身就有错误。
(4)、软件需求、设计报告、程序经常发生变更,每次变更都可能产生新的错误。
(5)、任何人在编程时都可能犯错误,导致程序中有错误。
(6)、人们常处于进度的压力之下,急忙之下容易产生错误。
(7)、人们过于自信,不真实的“没问题”将产生真正的问题。
(8)、软件设计和编码过程中的失误也会导致软件缺陷的产生。
(9)、但很多情况下,不正确的软件设计是不正确的需求分析引起的,编码阶段出现的错误则是由需求分析和软件设计不够完善、准确引起的。
5、软件测试的目的和意义软件测试的根本目的是以尽可能少的时间和人力发现并改正软件中潜在的各种故障及缺陷,提高软件的质量。
6、软件测试原则:(1)尽早和不断测试(2)每个程序员都应当测试自己的程序(份内之事),但是不能作为该程序已经通过测试的依据(所以项目需要独立测试人员)(3)完全测试是不可能的(4)测试能提高软件的质量,但是提高质量不能依赖测试(5)测试只能证明错误存在,不能证明错误不存在(6)测试的主要困难是不知道如何进行有效地测试,也不知道什么时候可以放心地结束测试(7)80-20原则:80%的错误聚集在20%的模块中,经常出错的模块改错后还会经常出错(8)测试应当循序渐进,不要企图一次性干完,注意“欲速则不达”7、软件测试过程(1)单元测试(模块测试)目的:检测程序模块中有无故障存在对象:软件设计的最小单位,与程序设计和编程实现关系密切(2)集成测试(组装测试、子系统测试)目的:发现与接口有关的模块之间的问题方法:非增式集成测试法和增式集成测试法分类:非增式集成测试法对每一个模块进行单元测试在此基础上按程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试增式集成测试法不断地把待测模块连接到已测模块集(或其子集)上,对待测模块进行测试,直到最后一个模块测试完毕(3).确认测试目的:对软件产品进行评估以确定其是否满足软件需求的过程确认测试的结果:a.测试结果满足需求规格说明;b.与需求规格有偏离。
(4).系统测试目的:针对系统中各个组成部分进行的综合性检验,证明系统的性能测试人员要求:系统开发人员不能进行系统测试。
系统开发组织不能负责系统测试。
(5).验收测试目的:向用户表明所开发的软件系统能够像用户所预定的那样工作主要任务:明确规定验收测试通过的标准;确定验收测试方法;确定验收测试的组织和可利用的资源;确定测试结果的分析方法;制定验收测试计划并进行评审;设计验收测试的测试用例;审查验收测试的准备工作;执行验收测试;分析测试结果,决定是否通过验收。
8、软件开发过程正规的软件开发过程一般包括六个阶段,即:第一阶段计划第二阶段需求分析(开发人员和用户共同决定)第三阶段设计(包括概要设计和详细设计)第四阶段程序编写第五阶段测试(单元,集成,确认,验收)第六阶段运行和/维护这六个阶段构成了软件的生存周期。
9、软件测试与软件开发的关系软件测试在软件开发中的作用:项目规划阶段:负责整个测试阶段的监控。
需求分析阶段:确定测试需求分析,制定系统测试计划。
测试需求分析是指产品生存周期中测试所需的资源、配置、各阶段评审通过的标准等。
概要设计和详细设计阶段:制定集成测试计划和单元测试计划。
编码阶段:开发相应的测试代码或测试脚本。
测试阶段:实施测试,并提交相应的测试报告。
10、软件测试在软件开发中的作用测试在软件开发中占有重要地位测试成本占有开发成本的近一半11、软件测试工具(1)、白盒测试工具静态测试工具职能:主要集中在需求文档、设计文档以及程序结构上,可以进行类型分析、接口分析、输入输出规格说明分析等。
工具:McCabe& Associates 公司开发的McCabe Visual Quality ToolSet分析工具;ViewLog 公司开发的LogiScope分析工具;Software Research 公司开发的TestWork/Advisor分析工具及Software Emancipation公司开发的Discover分析工具,北京邮电大学开发的DTS 缺陷测试工具等。
动态测试工具职能:功能确认与接口测试、覆盖率分析、性能分析、内存分析等工具:Compuware 公司开发的DevPartner软件、Rational公司研制的Purify 系列等。
(2)、黑盒测试工具工具:Rational公司的TeamTest,Compuware 公司的QACenter。
分类:功能测试工具和性能测试工具习题11什么是软件测试?软件测试的目的和意义是什么?2简述软件测试过程。
3简述软件测试过程V模型和软件测试过程W模型的主要区别。
软件测试过程V 模型特点:非常明确地表明了测试的不同级别,清晰地展示了软件测试与开发之间的关系。
软件开发是一个自顶向下逐步细化的过程,软件测试则是一个自底向上逐步集成的过程。
软件测试过程W 模型形象的展示了开发与测试的并行,测常工作.两个显著的优点:①黑盒测试与软件具体实现无关,所以如果软件实现发生了变化,测试用例仍然可以使用;②设计黑盒测试用例可以和软件实现同时进行,因此可以压缩项目总的开发时间。
2 几种常用的黑盒测试方法试贯穿与开发过程。
第二章黑盒测试等价类划分因果图法边界值分析法决策表法1、黑盒测试是一种常用的软件测试方法,它将被测软件看作一个打不开的黑盒,主要根据功能需求设计测试用例,进行测试黑盒测试的基本概念黑盒测试是一种从软件外部对软件实施的测试,也称功能测试或基于规格说明的测试。
其基本观点是:任何程序都可以看作是从输入定义域到输出值域的映射,这种观点将被测程序看作一个打不开的黑盒,黑盒里面的内容(实现)是完全不知道的,只知道软件要做什么。
因无法看到盒子中的内容,所以不知道软件是如何实现的,也不关心黑盒里面的结构,只关心软件的输入数据和输出结果。
目的:黑盒测试是从用户观点出发的测试,其目的是尽可能发现软件的外部行为错误。
在已知软件产品功能的基础上,1)检测软件功能能否按照需求规格说明书的规定正常工作,是否有功能遗漏;2)检测是否有人机交互错误,是否有数据结构和外部数据库访问错误,是否能恰当地接收数据并保持外部信息(如数据库或文件)等的完整性;3)检测行为、性能等特性是否满足要求等;4)检测程序初始化和终止方面的错误等。
优点:黑盒测试着眼于软件的外部特征,通过上述方面的检测,确定软件所实现的功能是否按照软件规格说明书的预期要求正(1)等价类划分法是一种典型的黑盒测试方法,它完全不考虑程序的内部结构,只根据程序规格说明书对输入范围进行划分,把所有可能的输入数据,即程序输入域划分为若干个互不相交的子集,称为等价类,然后从每个等价类中选取少数具有代表性的数据作为测试用例,进行测试。
所谓等价类是指输入域的某个互不相交的子集合,所有等价类的并便是整个输入域。
等价类划分测试用例设计在设计测试用例时应同时考虑有效等价类和无效等价类测试用例的设计。
根据等价类表设计测试用例,具体步骤如下:(1)为每个等价类规定一个唯一的编号。
(2) 设计一个新的测试用例,尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到测试用例覆盖了所有的有效等价类。
(3) 设计一个新的测试用例,使其覆盖并且只覆盖一个还没有被覆盖的无效等价类。
重复这一步,直至测试用例覆盖了所有的无效等价类。
(2)、边界值分析法大量的软件测试实践表明,故障往往出现在定义域或值域的边界上,而不是在其内部。
为检测边界附近的处理专门设计测试用例,通常都会取得很好的测试效果。
因此边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。
边界条件1边界是一些特殊情况。
程序在处理大量中间数值时都是正确,但是在边界处可能出现错误。
边界条件就是软件计划的操作界限所在的边缘条件。
2一些可能与边界有关的数据类型有:数值,速度,字符,地址,位置,尺寸,数量等。
在等价类划分基础上进行边界值分析测试的基本思想是,选取正好等于、刚刚大于或刚刚小于等价类边界的值作为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。
(3)、因果图法因果图法是基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。
因果图法的定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
采用因果图法设计测试用例的步骤:(1)根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。
(2)将得到的因果图转换为决策表(判定表)。
(3)为决策表中每一列所表示的情况设计一个测试用例。
使用因果图法的优点:(1)考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。
(2)能够帮助测试人员按照一定的步骤,高效率的开发测试用例。
(3)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。
因果图法测试用例的设计步骤:(1)确定软件规格中的原因和结果。
分析规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
(2)确定原因和结果之间的逻辑关系。
分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。
(3)确定因果图中的各个约束。
由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。
为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。
(4)把因果图转换为决策表。
(5)根据决策表设计测试用例。
(4)、决策表法在一个程序中,如果输入输出比较多,输入之间和输出之间相互制约的条件比较多,在这种情况下适宜用决策表,可以很清楚的表达它们之间的各种复杂关系。