软件测试重点

软件测试重点
软件测试重点

第一章

软件测试概述

1、软件测试是对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。

2、软件故障与硬件故障导致系统失效的比例为:10:1

3、软件缺陷的典型例子:

(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。

分类:功能测试工具和性能测试工具

习题1

1什么是软件测试?软件测试的目的和意义是什么?

2简述软件测试过程。

3简述软件测试过程V模型和软件测试过程W模型的主要区别。

软件测试过程V模型

特点:非常明确地表明了测试的不同级别,

清晰地展示了软件测试与开发之间的关系。软件开发是一个自顶向下逐步细化的过程,软件测试则是一个自底向上逐步集成的过程。

软件测试过程W模型

形象的展示了开发与测试的并行,测试贯穿与开发过程。

第二章黑盒测试

1、黑盒测试是一种常用的软件测试方法,它将被测软件看作一个打不开的黑盒,主要根据功能需求设计测试用例,进行测试

黑盒测试的基本概念

黑盒测试是一种从软件外部对软件实施的测试,也称功能测试或基于规格说明的测试。其基本观点是:任何程序都可以看作是从输入定义域到输出值域的映射,这种观点将被测程序看作一个打不开的黑盒,黑盒里面的内容(实现)是完全不知道的,只知道软件要做什么。因无法看到盒子中的内容,所以不知道软件是如何实现的,也不关心黑盒里面的结构,只关心软件的输入数据和输出结果。

目的:

黑盒测试是从用户观点出发的测试,其目的是尽可能发现软件的外部行为错误。在已知软件产品功能的基础上,

1)检测软件功能能否按照需求规格说明书的规定正常工作,是否有功能遗漏;

2)检测是否有人机交互错误,是否有数据结构和外部数据库访问错误,是否能恰

当地接收数据并保持外部信息(如数据

库或文件)等的完整性;

3)检测行为、性能等特性是否满足要求等;4)检测程序初始化和终止方面的错误等。

优点:

黑盒测试着眼于软件的外部特征,通过上述方面的检测,确定软件所实现的功能是否按照软件规格说明书的预期要求正常工作.

两个显著的优点:

①黑盒测试与软件具体实现无关,所以如果软件实现发生了变化,测试用例仍然可以使用;

②设计黑盒测试用例可以和软件实现同时进行,因此可以压缩项目总的开发时间。2几种常用的黑盒测试方法

等价类划分边界值分析法

因果图法决策表法

(1)等价类划分法是一种典型的黑盒测试方法,它完全不考虑程序的内部结构,只根据程序规格说明书对输入范围进行划分,把所有可能的输入数据,即程序输入域划分为若干个互不相交的子集,称为等价类,然后从每个等价类中选取少数具有代表性的数据作为测试用例,进行测试。

所谓等价类是指输入域的某个互不相交的子集合,所有等价类的并便是整个输入域。

等价类划分测试用例设计

在设计测试用例时应同时考虑有效等价类和无效等价类测试用例的设计。根据等价类表设计测试用例,具体步骤如下:(1)为每个等价类规定一个唯一的编号。(2) 设计一个新的测试用例,尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到测试用例覆盖了所有的有效等价类。

(3) 设计一个新的测试用例,使其覆盖并且只覆盖一个还没有被覆盖的无效等价类。重复这一步,直至测试用例覆盖了所有的无效等价类。

(2)、边界值分析法

大量的软件测试实践表明,故障往往出现在定义域或值域的边界上,而不是在其内部。为检测边界附近的处理专门设计测试用例,通常都会取得很好的测试效果。因此边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。

边界条件

1边界是一些特殊情况。程序在处理大量中间数值时都是正确,但是在边界处可能出现错误。边界条件就是软件计划的操作界限所

在的边缘条件。

2一些可能与边界有关的数据类型有:数值,速度,字符,地址,位置,尺寸,数量等。

在等价类划分基础上进行边界值分析测试的基本思想是,选取正好等于、刚刚大于或刚刚小于等价类边界的值作为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。

(3)、因果图法

因果图法是基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。

因果图法的定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

采用因果图法设计测试用例的步骤:

(1)根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。

(2)将得到的因果图转换为决策表(判定表)。

(3)为决策表中每一列所表示的情况设计一个测试用例。

使用因果图法的优点:

(1)考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。

(2)能够帮助测试人员按照一定的步骤,高效率的开发测试用例。

(3)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。因果图法测试用例的设计步骤:

(1)确定软件规格中的原因和结果。分析规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)确定原因和结果之间的逻辑关系。分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。(3)确定因果图中的各个约束。由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。

(4)把因果图转换为决策表。

(5)根据决策表设计测试用例。

(4)、决策表法

在一个程序中,如果输入输出比较多,输入之间和输出之间相互制约的条件比较多,在这种情况下适宜用决策表,可以很清楚的表达它们之间的各种复杂关系。

决策表

决策表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格。

概念:决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。

优点:它能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。

在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合于处理这类问题。

决策表通常由条件桩、条件项、动作桩和动作项4部分组成。

构造决策表可采用以下5个步骤:

(1)列出所有的条件桩和动作桩。

(2)确定规则的个数。

(3)填入条件项。

(4)填入动作项,得到初始决策表。(5)简化决策表,合并相似规则。

决策表测试法适用于具有以下特征的应用程序:

if-then-else逻辑突出;输入变量之间存在逻辑关系;涉及输入变量子集的计算;输入与输出之间存在因果关系。

适用于使用决策表设计测试用例的条件: 规格说明以决策表形式给出,或较容易转换为决策表。

条件的排列顺序不会也不应影响执行的操作。

规则的排列顺序不会也不应影响执行的操作。

当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的

规则。

如果某一规则的条件要执行多个操作,这些操作的执行顺序无关紧要。

3、黑盒测试方法的比较与选择

几种典型的黑盒测试方法,这些测试方

法的共同特点是,它们都把程序看作是

一个打不开的黑盒,只知道输入到输出

的映射关系,根据软件规格说明设计测

试用例。

?在等价类分析测试中,通过等价类

划分来减少测试用例的绝对数量。

?边界值分析方法则通过分析输入变

量的边界值域设计测试用例。

?在因果图测试方法和决策表测试

中,通过分析被测程序的逻辑依赖

关系,构造决策表,进而设计测试

用例。

4、黑盒测试工具介绍

黑盒测试是在已知软件产品应具有的功能的条件下,在完全不考虑被测程序内部结构和内部特性的情况下,通过测试来检测每个功能是否都按照需求规格说明的规定正常使用。

黑盒测试工具又分为:功能测试工具和性能测试工具。

①功能测试工具:功能测试工具主要用于检测被测程序能否达到预期的功能要求并能正常运行。

②性能测试工具:性能测试工具主要用于确定软件和系统性能。

黑盒功能测试工具,如Mercury Interactive 公司的WinRunner,IBM Rational公司的TeamTest和Robot,Compuware公司的QACenter等。第三章

软件测试用例设计

1、黑盒测试方法:等价类划分、边界值分析、决策表测试、因果图法

白盒测试:数据流测试、逻辑覆盖、路径测试

面向对象测试:有限状态机、Petri网、正交阵列法、UML测试

2、白盒测试(White Box Testing,Glass Box Testing)又称为结构测试、逻辑驱动测试或基于程序的测试。一般用来分析程序的内部结构。

基于覆盖的测试技术---白盒测试要求对被测程序的结构特性做到一定程度的覆盖,并以软件中的某类成分是否都已经得到测试为准则来判断软件测试的充分性。

白盒测试的目的:

白盒测试通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;

在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

白盒测试的特点:

依据软件设计说明书进行测试;

对程序内部细节的严密检验;

针对特定条件设计测试用例;

对软件的逻辑路径进行覆盖测试。

白盒测试的实施过程:

1.测试计划阶段:

2.测试设计阶段:

依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。

3.测试执行阶段:

4.测试总结阶段:

路径测试

1)控制流图

程序流程图是一种程序控制结构的图形表示方式。在程序流程图上的处理框内常常标明了处理要求或条件。

控制流图:为了更加突出控制流的结构,需要对程序流程图做些简化,这种简化了的流程图称为控制流图。

控制流图中的符号:

①节点:以标有编号的圆圈表示,代表程序流程图中矩形框所表示的处理、菱形表示的分支及多选择结构点。

②控制流线:以带箭头的直线或弧表示,与程序流程图中的数据流线是一致的,表明了控制的顺序。控制流线通常标有名字,如图中所标的a、b、c等。

程序流程图----〉控制流图

转换的原则如下:

控制流图中的每一个节点可以表示程序流程图中矩形框所表示的处理;

菱形表示的两个甚至多个出口判断;

多条流线相交的汇合点。

2)基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路(圈)复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

逻辑覆盖

语句覆盖判定覆盖(分支覆盖)

条件覆盖判定/条件覆盖

条件组合覆盖

语句覆盖准则

在测试中,要求程序中的每条语句都得到运行。在控制流图中,要求所有的语句都被运行的充分必要条件是覆盖图中的所有节点。

语句覆盖准则的优缺点:

优点:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。

缺点:由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。

判定覆盖准则(分支覆盖)

要求在测试中,每个分支都至少获得一次“真”和一次“假”。在控制流图中,分支表现为图中的一条有向边。

分支(判定)覆盖只能作到分支(判定)覆盖仍无法确定判断内部条件的错误。

判定覆盖优缺点:优点:分支(判定)覆盖具有比语句覆盖更强的测试能力。同样分支(判定)覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。

缺点:往往大部分的分支(判定)语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。

条件覆盖

一个分支的条件是由谓词组成的。单个谓词称为原子谓词。

(1)原子谓词覆盖准则(条件覆盖)

要求每个复合谓词所包含的每一个原子谓词都至少获得一次“真”和一次“假”。即要使每个判断中每个条件的可能取值至少满足一次。

条件覆盖优缺点:

优点:增加了对条件判定情况的测试,增加了测试路径。

缺点:原子谓词(条件)覆盖不一定包含分支(判定)覆盖。原子谓词(条件)覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

判定/条件覆盖准则

要求不仅每个复合谓词所包含的每一个原子谓词都至少获得一次“真”和一次“假”,而且每个复合谓词本身也至少获得一次“真”和一次“假”。即使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。

判定/条件覆盖优缺点:

优点:能同时满足判定、条件两种覆盖标准。缺点:分支-谓词(判定/条件)覆盖准则的缺点是未考虑条件的组合情况。从表面来看,它测试了所有条件的取值。但实际并不是这样。因为一些条件往往掩盖了另一些条件。对于条件表达式(A>1)&&(B=0)来说,只要(A>1)的测试为真,才需测试(B=0)的值来确定此表达式的值,但是若(A>1)的测试值为假时,不需再测(B=0)的值就可确定此表达式的值为假,因而B=0没有被检查。同理,对于(A=2)||(X>1)这个表达式来说,

只要(A=2)测试结果为真,不必测试(X>1)的结果就可确定表达式的值为真。所以对于判定/条件覆盖来说,逻辑表达式中的错误不一定能够查得出来。

条件组合覆盖准则

要求每个谓词(判定)中条件的各种可能组合都至少出现一次。

条件组合覆盖优缺点:

优点:复合谓词(条件组合)覆盖准则满足分支(判定)覆盖、原子谓词(条件)覆盖和分支-谓词(判定/条件)覆盖准则,是前述几种覆盖标准中最强的。

缺点:线性地增加了测试用例的数量。

逻辑覆盖测试的5种标准

几种覆盖准则间的关系

白盒测试策略

1:桌前检查

桌前检查是在程序员实现特定功能后,进行单元测试之前,对源代码进行的初步检查。该项工作的参与人员为开发人员,重点检查编码、语句的使用等是否符合编码规范,并根据《编码规范》调整自己的代码以符合编码规范的要求。

2:单元测试

单元测试也称作模块测试,在传统结构化程序中,以一个函数、过程为一个单元;在面向对象编程过程中,一般将类作为单元进行测试。该项工作的参与人员为专门的白盒测试人员。可采用白盒测试和黑盒测试相结合的方法。

3:代码评审

代码评审是在编码初期或编写过程中采用一种有同行参与的评审活动。该项工作需要所有开发小组共同参与,通过大家共同阅读代码或由程序编写者讲解代码,其他同行边听边分析问题的方法。共同查看程序,可以找出问题,使大家的代码风格一致或遵守编码规范。

4:同行评审

在同行评审中,由软件产品创建者的同行们检查该工作产品,识别产品的缺陷,改进产品的不足。主要用于检验工作产品是否正确的满足了以往的工作产品中建立的规范,如需求或设计文档;识别工作产品相对于标准的偏差,包括可能影响软件可维护性的问题;向创建者提出改进建议;促进参与者之间的技术交流和学习等。根据CMM标准,该项工作的参与人员为程序员、设计师、单元测试工程师、维护者、需求分析师、编码标准专家。至少需要开发人员,测试人员和设计师。

5:代码走查

代码走查由测试小组组织或者专门的代码走查小组进行代码走查,这时需要开发人员提交有关的资料文档和源代码给走查人员,并进行必要的讲解。代码走查往往根据《代码检查单》来进行,代码检查单常常是根据《编码规范》总结出来的一些条目,目的是检查代码是否按照《编码规范》来编写的。当然,代码走查的最终目的还是为了发现代码中潜在的错误和缺陷。该项工作的参与者为测试人员。代码走查速度一般建议为:汇编代码与C代码150行/小时,C++/Java 200-300行/小时。

6:静态分析

静态分析通常需要辅助工具支持,通过提取代码信息,进行统计,根据统计结果对源代码进行质量评估。代码规则检查也是静态分析的一个方面。该项工作的参与人员为测试

小组

3、面向对象的测试用例设计

有限状态机Petri网

正交阵列法UML软件测试

将开发分为面向对象分析(OOA),面向对象设计(OOD),和面向对象编程(OOP)三个阶段。

正交阵列法

正交阵列法的应用范围:

正交表测试法适用于输入条件相互独立,并且需要对输入

什么是正交测试法?

正交测试源于正交试验设计方法。

正交试验设计方法是一种研究多因素多水平的试验设计方法,它根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点。

正交试验设计方法一般使用已经造好了的正交表格来安排试验并进行数据分析。

正交测试法与正交试验设计方法类似也使用已经造好了的正交表格来生成测试用例,它简单易行,应用性较好。

什么是因素(Factor)

在一项试验中,凡欲考察的变量称为因素(变量)。

什么是水平(位级)(Level)

在试验范围内,因素被考察的值称为水平(变量的取值)。

什么是正交表?(源自古希腊)

正交表是一个二维表格,它的构成如下:行数(Runs):正交表中的行的个数,即试验的次数。

因素数(Factors):正交表中列的个数。

水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到“水平数-1”或从1到“水平数”。

正交表的表示形式:L行数(水平数因素数) 正交表的正交性

1)每一列中各数字出现的次数都一样多;2)任何两列所构成的各有序数对出现的次数都一样多。正交测试用例设计步骤

(1)确定测试中有多少个相互独立的变量,这映射到表中的因素数(Factors)。

(2)确定每个变量可以取值的个数,这映射到表中的水平数(Levels)。

(3)选择一个最适合的正交表,其因素数>=测试中的变量数,各因素的水平数>=对应变量的取值个数,另外,次数(Run)最少。(4)把因素和值映射到表中。

(5)为剩下的水平数选取值。

(6)把次数中所描述的组合转化成测试用例,再增加一些没有生成的但可疑的测试用例。

UML软件测试

1. 场景法

现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景即为场景。而同一事件不同的触发顺序和处理结果就形成了事件流。

运用在软件设计中的场景法也可用在软件测试中。

两个概念:基本流和备选流。

第四章集成测试

1、集成测试概念

集成(Integration)是指把多个单元组合起来形成更大的单元。

集成测试(Integration Testing)也叫组装测试或联合测试是在假定各个软件单元已经通过了单元测试的前提下,检查各个软件单元之间的相互接口是否正确。

一般情况,都采用黑盒测试,但随着软件复杂度的增加,常常使用灰盒测试。

集成测试的目的和意义

集成测试有以下不可替代的特点:

单元测试具有不彻底性,对于模块间接口信息内容的正确性、相互调用关系是否符

合设计无能为力。只能靠集成测试来进行保

障。

同系统测试相比,由于集成测试用例是从程序结构出发的,目的性、针对性更强,测试项发现问题的效率更高,定位问题的效率也较高;

能够较容易地测试到系统测试用例难以模拟的特殊异常流程,从纯理论的角度来讲,集成测试能够模拟所有实际情况;

定位问题较快,由于集成测试具有可重复强、对测试人员透明的特点,发现问题后容易定位,所以能够有效地加快进度,减少隐患。

集成测试、单元测试与系统测试的差别

集成测试方法

集成测试的策略比较多,如有基于功能分解的集成,基于调用图的集成,基于路径的集成,分层集成,高频集成,基于进度的集成,基于风险的集成和基于使用的集成等。一般的软件测试及软件工程中按照功能分解将集成测试方法分为非渐增式集成(大爆炸集成),渐增式集成,三明治集成。

非渐增式集成优点:

1.可并行调试所有模块;

2.需要的测试用例数目少;

3.测试方法简单、易行。

非渐增式集成缺点:

1.不能对接口进行充分的测试;

2.不能很好的对全局数据结构测试;

3.多错误定位比较困难;

4.即使测试通过,也会遗漏错误。

非渐增式集成使用范围:

1.只需修改或增加少数几个模块的前期产品稳定的项目;

2.模块少,功能少,逻辑简单;

3.开发零缺陷的产品,产品质量和单元测试质量相当高的产品。渐增式测试方法不是独立地测试每个单元,而是首先把下一个要被测试的单元同已经测试过的单元集合组装起来,然后再测试,在组装的过程中边连接边测试,以发现连接过程中产生的问题,最后通过渐增式方法逐步组装成要求的软件系统。

分自顶向下和自底向上的集成。

渐增式集成测试

两个概念:

驱动模块(driver):用以模拟待测模块的上级模块。

桩模块(stub):也称存根模块,用以模拟待测模块工作过程中所调用的模块。

自顶向下集成的步骤:

a.对主控模块进行测试,测试时用桩模块代替所有直接附属于主控模块的模块;

b.根据选定的结合策略(深度优先或宽度优先),每次用一个实际模块代换一个桩模块;

c.在结合进一个模块的同时进行测试;

d.为了保证加入模块没有引进新的错误,可能需要进行回归测试。

从2开始不断重复进行上述过程,直到构造起完整的软件结构为止。

自顶向下集成的优点

①在测试的过程中,可以较早地验证主要的控制和判断点。

②选择深度优先组合方式,可以首先实现和验证一个完整的软件功能,可先对逻辑输入的分支进行组装和测试,检查和克服潜藏的错误和缺陷,

③验证其功能的正确性,为此后主要分支的组装和测试提供保证;

④能够较早的验证功能可行性,给开发者和用户带来成功的信心;

⑤只有在个别情况下,才需要驱动程序(最多不超过一个),减少了测试驱动程序开发和维护的费用;

⑥可以和开发设计工作一起并行执行集成测试,能够灵活的适应目标环境;

⑦容易进行故障隔离和错误定位。

自顶向下集成的缺点:

①在测试时需要为每个模块的下层模块提供桩模块,桩模块的开发和维护费用大;

②底层组件的需求变更可能会影响到全局组件,需要修改整个系统的多个上层模块。

③要求控制模块具有比较高的可测试性;

④可能会导致底层模块特别是被重用的模块测试不够充分。

自顶向下集成的适用范围:

①控制结构比较清晰和稳定的应用程序;

②系统高层的模块接口变化的可能性比较小;

③产品的低层模块接口还未定义或可能会经常因需求变更等原因被修改;

④产品中的控制模块技术风险较大,需要尽可能提前验证;

⑤需要尽早看到产品的系统功能行为;

⑥在极限编程(Extreme Programming)中使用测试优先的开发方法。

自底向上集成

自底向上测试从“原子”模块(即在软件结构最底层的模块)开始组装和测试。因为是从底部向上结合模块,总能得到所需的下层模块处理功能,所以不需要桩模块。

步骤:a.把低层模块组合成实现某个特定软件子功能的族;

b.写一个驱动程序,协调测试数据的输入和输出;

c.对由模块组成的子功能族进行测试;

d.去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。自底向上集成优点:

①即使数据流并未构成有向的非环状图,生成测试数据也没有困难;

②可以尽早的验证底层模块的行为;

③对实际被测模块的可测试性要求要少;

④减少了桩模块的工作量;

⑤容易对错误进行定位。

自底向上集成缺点:

①直到最后一个模块加进去之后才能看到整个系统的框架;

②只有到测试过程的后期才能发现时序问题和资源竞争问题;

③驱动模块的设计工作量大;④不能被及时发现高层模块设计上的错误。

自底向上集成适用范围:

①底层模块接口比较稳定的产品;

②高层模块接口变更比较频繁的产品;

③底层模块开发和单元测试工作完成较早的产品

三明治集成

结合了自顶向下和自底向上的集成测试方法,在顶层使用自顶向下,在底层使用自底向上。

关键点:选取基准层(或标准层)

三明治集成测试的步骤:

a.确定基准层;

b.对基准层以下各层使用自底向上方法;

c.基准层以上采用自顶向下方法;

d.对基准层各模块与相应的下层集成;

e.对系统进行整体测试。

三明治集成

优点:

具有自顶向下和自底向上的优点,可减少装模块和驱动模块的开发工作量。

缺点:

在集成之前,中间层不能尽早得到成分测试。

适用范围:多数软件产品都可采用。

非渐增式集成和渐增式集成方法的比较:1.非渐增式测试方法需要编写的软件较多,工作量较大;渐增式测试方法开销小。

2.渐增式测试方法发现模块间接口错误早;而非渐增式测试方法晚。

3.非渐增式测试方法发现错误,较难诊断;而使用渐增式测试方法,如果发生错误则往往和最近加进来的那个模块有关。

4.渐增式测试方法测试更彻底

5.渐增式测试方法需要较多的机器时间

6.使用非渐增式测试方法,可以并行测试。

集成测试过程

五个阶段,依次是制定集成测试计划,设计集成测试,实施集成测试,执行集成测试,评估集成测试。

基于MM路径的集成测试

在单元测试中,采用路径覆盖的测试方法,可以遍历源程序中所有可能的路径,在集成测试中,也有类似的测试方法,即MM (Message-Method)路径测试方法,其可以描述单元之间控制转移的执行路径序列。

源节点:程序开始或重新开始处的语句片段。

汇节点:程序执行结束处的语句片段。

模块执行路径:以源节点开始,以汇节点结束的语句序列,期间没有插入汇节点。

消息:是一种程序设计机制,通过该机制可将控制从一个单元转移到另一个单元。

MM路径:是模块执行路径和消息穿插出现的序列。

软件测试知识点总结

软件测试知识点总结 第一次课10.7软件测试概述 一软件测试定义:使用人工或者自动的手段来运行或测定它是否满足规定的需求,或弄预期结果与实际结果之间的差别。 二软件测试的分类 1.按照开发阶段划分 a)单元测试:模块测试,检查每个程序单元嫩否正确实现详细设计 说明中的模块功能等。 b)集成测试:组装测试,将所有的程序模块进行有序、递增的测试, 检验程序单元或部件的接口关系 c)系统测试:检查完整的程序系统能否和系统(包括硬件、外设和 网络、系统软件、支持平台等)正确配置、连接,并满足用户需 求。 d)确认测试:证实软件是否满足特定于其用途的需求,是否满足软 件需求说明书的规定。 e)验收测试:按项目任务或合同,供需双方签订的验收依据文档进 行的对整个系统的测试与评审,决定是否接受或拒收系统。 2.按照测试技术划分 白盒测试:通过对程序内部结构的分析、检测来寻找问题。检查是否所有的结构及逻辑都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。--结构测试 黑盒测试:通过软件的外部表现来发现错误,是在程序界面处进行

测试,只是检查是否按照需求规格说明书的规定正常实现。 灰盒测试:介于白盒测试与黑盒测试之间的测试。 3 按照测试实施组织划分:开发方测用户测试第三方测试 4 是否使备测软件运行:静态测试动态测试。 课后作业:1.软件测试与调试的区别? (1)测试是为了发现软件中存在的错误;调试是为证明软件开发的正确性。 (2)测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的。 (3)测试是有计划的,需要进行测试设计;调试是不受时间约束的。(4)测试经历发现错误、改正错误、重新测试的过程;调试是一个推理过程。 (5)测试的执行是有规程的;调试的执行往往要求开发人员进行必要推理以至知觉的"飞跃"。 (6)测试经常是由独立的测试组在不了解软件设计的条件下完成的;调试必须由了解详细设计的开发人员完成。 (7)大多数测试的执行和设计可以由工具支持;调式时,开发人员能利用的工具主要是调试器。 2.对软件测试的理解? 软件测试就是说要去根据客户的要求完善它.即要把这个软件还

软件测试技术知识点整理

一、软件测试的定义 软件测试是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。 1.软件测试与调试的区别 (1)测试是为了发现软件中存在的错误;调试是为证明软件开发的正确性。 (2)测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的。(3)测试是有计划的,需要进行测试设计;调试是不受时间约束的。 (4)测试经历发现错误、改正错误、重新测试的过程;调试是一个推理过程。 (5)测试的执行是有规程的;调试的执行往往要求开发人员进行必要推理以至知觉的"飞跃"。 (6)测试经常是由独立的测试组在不了解软件设计的条件下完成的;调试必须由了解详细设计的开发人员完成。 (7)大多数测试的执行和设计可以由工具支持;调式时,开发人员能利用的工具主要是调试器。 2.对软件测试的理解 软件测试就是说要去根据客户的要求完善它.即要把这个软件还没有符合的或者是和客户要求不一样的,或者是客户要求还没有完全达到要求的部分找出来。 (1)首先要锻炼自己软件测试能力,包括需求的分析能力,提取能力,逻辑化思想能力,即就是给你一个系统的时候,能够把整个业务流程很清晰的理出。 (2)学习测试理论知识并与你锻炼的能力相结合。 (3)想和做。想就是说你看到任何的系统都要有习惯性的思考;做就是把实际去做练习,然后提取经验。 总结测试用例,测试计划固然重要,但能力和思想一旦到位了,才能成为一名合格的软件测试工程师。 二、软件测试的分类 1.按照测试技术划分 (1)白盒测试:通过对程序内部结构的分析、检测来寻找问题。检查是否所有的结构及逻辑都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。--结构测试 (2)黑盒测试:通过软件的外部表现来发现错误,是在程序界面处进行测试,只是检查是否按照需求规格说明书的规定正常实现。--性能测试 (3)灰盒测试:介于白盒测试与黑盒测试之间的测试。

软件测试复习题集1解答

软件测试复习题1 一、判断题(10题,10分) 1.程序员兼任测试员可以提高工作效率。(×) 2.测试用例的数目越多,测试的效果越好。(×) 3.软件测试是有风险的行为,并非所有的软件缺陷都能够被修复。(√) 4.软件质量保证和软件测试是同一层次的概念。(×) 5.验收测试是以最终用户为主的测试。(√) 6.没有发现错误的测试是没有价值的。(×) 7.只要能够达到100%的逻辑覆盖率,就可以保证程序的正确性。(×) 8.在边界值方法中,对于一个有n个变量的函数作最坏情况测试,生成的测试用例个数是7n个。(×) 4n+1 9.我们有理由相信只要能够设计出尽可能好的测试方案,经过严格测试之后的软件可以没有缺陷。(×) 10.单元测试属于动态测试。(√) 11.软件生存周期是从软件开始开发到开发结束的整个时期。(×) 12.传统测试以发现错误为目的,现在测试已经扩展到了错误预防的范畴。(√) 13.调试从一个已知的条件开始,使用预先定义的过程,有预知的结果;测试从一个未知的条件开始,结束的过程不可预计。(×) 14.软件测试的生命周期包括测试计划、测试设计、测试执行、缺陷跟踪、测试评估。(√) 15.白盒测试往往会造成测试用例之间可能存在严重的冗余和未测试的功能漏洞。(×) 16.在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。(√) 17.可以把不合格的开发人员安排做测试。(×) 18.传统测试是在开发的后期才介入,现在测试活动已经扩展到了整个生命周期。(√) 19.在所有的黑盒测试方法中,基于决策表的测试是最为严格、最具有逻辑性的测试方法。(√) 20.永远有缺陷类型会在测试的一个层次上被发现,并且能够在另一个层次上逃避检测。(√) 二、填空题:(10空,10分) 1.软件开发过程中所产生的(需求规格说明)、概要设计规格说明、(详细设计规格说明)以及(源程序)都是软件测试的对象。 2.按照软件测试用例的设计方法而论,软件测试可以分为(白盒测试法)和(黑盒测试法)。 3.按照软件测试的策略和过程来分类,软件测试可分为单元测试、(集成测试)、(系统测试)、(验证测试)和确认测试。 4.质量管理是指以组织为质量中心、企业全员参与为基础,为追求客户满意和组织所有受益者满意而建立和形成的一整套质量方针、目标和(体系)。质量管理

软件测试计划书模板

软件测试计划书

修订历史记录 (A-添加,M-修改,D-删除)

目录 1.简介 (4) 1.1目的 (4) 1.2背景 (4) 1.3范围 (4) 2.测试参考文档和测试提交文档 (5) 2.1测试参考文档 (5) 2.2测试提交文档 (6) 3.测试进度 (6) 4.测试资源 (7) 4.1人力资源 (7) 4.2测试环境 (7) 4.3测试工具 (7) 5.系统风险、优先级 (8) 6.测试策略 (8) 6.1数据和数据库完整性测试 (8) 6.2接口测试 (9) 6.3集成测试 (9) 6.4功能测试 (10) 6.5用户界面测试 (11) 6.6性能评测 (11)

6.7负载测试 (12) 6.8强度测试 (13) 6.9容量测试 (14) 6.10安全性和访问控制测试 (15) 6.11故障转移和恢复测试 (16) 6.12配置测试 (18) 6.13安装测试 (18) 7.问题严重度描述 (19) 8.附录:项目任务 (19) 1.简介 1. 1目的 <项目名称>的这一“测试计划”文档有助于实现以下目标: [确定现有项目的信息和应测试的软件构件。 列出推荐的测试需求(高级需求)。 推荐可采用的测试策略,并对这些策略加以说明。 确定所需的资源,并对测试的工作量进行估计。 列出测试项目的可交付元素] 1. 2背景 [对测试对象(构件、应用程序、系统等)及其目标进行简要说明。需要包括的信息有:主要的功能和性能、测试对象的构架以及项目的简史。] 1.3范围 [描述测试的各个阶段(例如,单元测试、集成测试或系统测试),并说明本计划所针

2015--软件测试--期末重点复习资料

第一章 1.软件测试正反两方面的观点 正面观点:Bill Hetzel博士(软件测试领域的先驱,正向思维代表)主要观点是:软件测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作。 反面观点:Glenford J. Myers(反向思维的代表): 观点:测试是为了证明程序有错,而不是证明程序无错误。 2.软件测试的定义 IEEE 的定义: ?在特定的条件下运行系统或构件,观察或记录结果,对系统的某个方面做出评价。 ?分析某个软件项以发现现存的与要求的条件之差别(即错误)并评价此软件项的特性。 正确的定义:软件测是由“验证(Verification)”和“有效性确认(Validation)”活动构成的整体。 3.软件测试在软件开发中的地位 软件开发是生产制造软件;软件测试是验证开发出来软件的质量。类比传统加工制造企业,软件开发人员就是生产加工的工人,软件测试人员就是质检人员。 关系应该是: 1、没有软件开发就没有测试,软件开发提供软件测试的对象。 2、软件开发和软件测试都是软件生命周期中的重要组成部分

3、软件开发和软件测试都是软件过程中的重要活动。 4、软件测试是保证软件开发产物质量的重要手段。(网上) 4.P11 V模型 第二章 1.软件缺陷 定义:IEEE STD 729(1983)对软件缺陷给出了一个标准的定义: 从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题。 从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。主要类型:软件缺陷的主要类型/现象有: ?功能、特性没有实现或部分实现; ?设计不合理,存在缺陷; ?实际结果和预期结果不一致; ?运行出错,包括运行中断、系统崩溃、界面混乱;

软件测试复习题

软件测试复习题 集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

软件测试课程期末复习题 一、判断分析题(判断正误并分析说明)。 1、测试是为了验证该软件已正确地实现了用户的要求。(×) 2、用黑盒法测试时,测试用例是根据程序内部逻辑设计的。(×) 3、好的测试员不懈追求完美,力求做到穷举测试。(√) 4、软件测试的目的是尽可能多的找出软件的缺陷。(√) 5、单元测试能发现约80%的软件缺陷。(√) 6、自底向上集成需要测试员编写驱动模块程序。( √ ) 7、代码评审员一般由测试员担任。(× ) 8、发现错误多的程序模块,残留在模块中的错误也多。(√) 9、单元测试多采用白盒测试(结构性测试)技术。(√) 10、系统测试多采用白盒测试(结构性测试)技术。(×)(黑盒测试) 11、进行自底向上集成测试,需要为所测模块或子系统编制相应的驱动模块。(√) 12、软件测试的目的是证明软件没有错误。(×) 13、测试组负责软件质量。( ×) 14、软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。 (√ ) 15、测试程序仅仅按预期方式运行就行了。( ×) 16、不存在质量很高但可靠性很差的产品。( ×) 17、总是首先设计白盒测试用例。(×) 18、用黑盒法测试时,测试用例是根据程序内部逻辑设计的。(×) 19、黑盒测试方法中最有效的是因果图法。( √) 20、软件测试按照测试过程分为黑盒、白盒测试。(×) 21、白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。(√) 22、黑盒测试是从用户观点出发的测试。(√)

23、白盒测试根据程序外部特征进行测试,黑盒测试根据程序内部逻辑结构进行测试。(×) 24、程序通过了全面的白盒测试,就不需要再进行黑盒测试了。(×) 25、对于同一个测试对象,等价类的测试用例数多于边界值的测试用例数。() 26、如果输入条件规定了取值范围,则可定义一个有效等价类和两个无效等价类。(√) 27、有n个变量的函数的健壮最坏情况测试用例的个数为:5的n次方。(√) 28、有n个变量的函数的健壮性测试用例的个数为:5n+1。(×) 29、有n个变量的函数的最坏情况测试会产生5的n次方个测试用例。(√) 30、有n个变量的函数的边界值分析会产生4n+1个测试用例(√) 31、语句覆盖是最弱的逻辑覆盖。(√) 32、判定覆盖不一定包含条件覆盖。(√) 33、判定/条件覆盖能同时满足判定、条件两种覆盖标准。(√) 34、详细设计的目的是为软件结构图中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。( √) 35、对于连锁型分支结构,若有n个判定语句,则有2n条路径。(√) 36、尽量采用复合的条件测试,以避免嵌套的分支结构。(√) 37、G OTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。(√) 38、单元测试属于动态测试。 (× ) 39、单元测试需要从程序的内部结构出发设计测试用例。(√) 40、单元测试需要为每个基本单元开发驱动模块或桩模块。(√) 41、在面向对象语言语言中,单元测试是函数或子过程。() 42、单元测试又称为模块测试,是针对软件测试的最小单位-程序模块进行正确性检验的测试工作。(√) 43、验收测试是由最终用户来实施的。(×) 44、负载测试是验证要检验的系统的能力最高能达到什么程度。(×) 45、我们可以人为的使得软件不存在配置问题。(×) 46、可以发布具有配置缺陷的软件产品。( √)

软件测试复习知识点

软件测试复习知识点 熟练掌握: 1.面向对象的单元测试中基于服务的测试策略 2.向对象中的基于状态测试的策略 3.软件测试与软件开发的关系 狭义定义测试:比如“程序设计”与“测试”之间的关系,传统上总以为程序设计在先,测试在后。这种专指测试程序代码,定义在编码之后的“测试”是一种狭义定义的测试。 广义定义测试:这种测试活动可以在软件开发生命周期的任何阶段进行。但是,随着开发不断地进行,越到后续阶段,找出错误并改正它的代价会越大 全新的软件开发模式:以测试驱动软件开发。软件测试贯穿了整个软件开发过程,软件开发生命周期的各个阶段中都少不了相应的测试,这种思想与软件质量保证的出发点是一致的。 4.系统测试的概念及其分类; 系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。 1.用户层:①用户支持测试;②用户界面测试;③可维护测试;④ 安全性测试; 2.应用层:①性能测试;②系统可靠性、稳定性测试;③系统兼容 性测试;④系统组网测试;⑤系统安装升级测试; 3.功能层: 4.子系统层; 5.协议/指标层; 5.常见的黑盒测试用例的设计方法 黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。 ?在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完

国内软件测试中文书籍大全

国内软件测试中文书籍大全 一、自动化测试类: 1、软件自动化测试:引入、管理与实施 Automated Software Testing Introduction,Management,and Performance 2、软件测试自动化技术与实例详解 Software Test Automation 3、高效软件测试自动化 Effective Software Test Automation 4、图形用户界面测试自动化 Effective GUI Test Automation 5、软件测试自动化 Just Enough Software Test Automation 6、软件工程与软件测试自动化教程 二、Web应用测试类: 1、Web安全测试 Testing Web Security:Assessing the Security of Web Sites and Applications 2、Web应用测试 Testing Application on the Web:Test Planning for Internet-Based Systems 3、Web应用测试(第二版) Testing Applications on the Web: Test Planning for Mobile and Internet-Based Systems, Second Edition 4、Web测试指南 The Web Testing Companion: The Isider's Guide to Efficient and Effective Tests 三、软件测试基础类: 1、软件测试(原书第2版) Software Testing A Craftsmaj's Approach(Second Edition)

软件测试方法和技术重点和试题与答案

太原理工大学软件测试技术 适用专业:软件工程2011级考试日期:2014.1 时间:120 分钟 一、判断题 1. 测试是调试的一个部分(╳) 2. 软件测试的目的是尽可能多的找出软件的缺陷。(√ ) 3. 程序中隐藏错误的概率与其已发现的错误数成正比(√ ) 4. Beta 测试是验收测试的一种。(√ ) 5. 测试人员要坚持原则,缺陷未修复完坚决不予通过。(√ ) 6. 项目立项前测试人员不需要提交任何工件。(╳) 7. 单元测试能发现约80%的软件缺陷。(√ ) 8. 测试的目的是发现软件中的错误。(√ ) 9. 代码评审是检查源代码是否达到模块设计的要求。(√ ) 10. 自底向上集成需要测试员编写驱动程序。(√ ) 11. 测试是证明软件正确的方法。(╳) 12. 负载测试是验证要检验的系统的能力最高能达到什么程度。(√ ) 13. 测试中应该对有效和无效、期望和不期望的输入都要测试。(√ )验收测试是由最终用户来实施的。(√ ) 14. 测试人员要坚持原则,缺陷未修复完坚决不予通过。(√ )黑盒测试也称为结构测试。(╳)集成测试计划在需求分析阶段末提交。(╳) 15. 软件测试的目的是尽可能多的找出软件的缺陷。(√) 16. 自底向上集成需要测试员编写驱动程序。(√) 17. 负载测试是验证要检验的系统的能力最高能达到什么程度。(╳) 18. 测试程序仅仅按预期方式运行就行了。(╳) 19. 不存在质量很高但可靠性很差的产品。(╳) 20. 软件测试员可以对产品说明书进行白盒测试。(╳) 21. 静态白盒测试可以找出遗漏之处和问题。(√) 22. 总是首先设计白盒测试用例。(╳) 23. 可以发布具有配置缺陷的软件产品。(√) 24. 所有软件必须进行某种程度的兼容性测试。(√) 25. 所有软件都有一个用户界面,因此必须测试易用性。(╳) 26. 测试组负责软件质量。(╳) 27. 按照测试实施组织划分,可将软件测试分为开发方测试、用户测试和第三方测试。(√) 28. 好的测试员不懈追求完美。(×) 29. 测试程序仅仅按预期方式运行就行了。( ×) 30. 在没有产品说明书和需求文档的条件下可以进行动态黑盒测试。( √) 31. 静态白盒测试可以找出遗漏之处和问题。( √) 32. 测试错误提示信息不属于文档测试范围。( ×)

(答案整理)11《软件测试》复习

《软件测试》复习提纲 1.什么是软件测试?软件测试的意义? 软件测试是为了尽快尽早地发现在软件产品中所存在的各种软件缺陷而展开的贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程。 答案1:软件测试是为了发现错误而执行程序的过程。 答案2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例运行程序,以及发现错误的过程。 意义:确保软件的功能符合用户的需求,把尽可能多的问题在发布或交付前发现并改正。 2.什么是软件缺陷?请举例。哪里出现的缺陷最多? 软件缺陷就是软件产品中所存在的问题,最终表现为用户所需要的功能没有完全实现,未满足用户的需求。 举例:缺点(defect)异常(anomaly)偏差(variance)失败(failure)缺陷(bug)故障(fault)问题(problt)错误(error) 规格说明书出现的缺陷最多。 3.软件测试是否就是程序测试?哪些可以作为软件测试的对象? 不是。对象:程序、数据(库)、文档、服务 4.软件测试的目的是什么?软件测试的目标是什么?软件测试的原则是什么? 测试的目的就是发现软件中的各种错误和缺陷,但不是唯一目的,软件测试存在多种目的,其中最重要的三条为:(1)证明所做的是客户所需的(2)确保编码人员正确理解设计的意图(3)通过回归测试来保证目前运行的程序在将来仍然可以正常工作。 目标:确保软件完成了它所承诺或公布的功能;为软件的质量评估提供依据;确保软件满足性能的要求;确保软件是健壮的和适应用户环境,为软件质量改进和管理提供帮助原则:1.所有测试的标准都是建立在用户需求之上2.软件测试必须基于“质量第一”的思想去开展各项工作3.事先定义好产品的质量标准4.软件项目一启动,软件测试也就开始,而不是等程序写完才开始进行测试5.穷举测试时不可能的6.第三方进行测试会更客观更有效7.软件测试计划是做好软件测试工作的前提8.测试用例是设计出来的,不是写出来的9.对主观错误较多的程序段,应进行更深入的测试10.重视文档,妥善保管一切测试过程文档。 5.软件测试如何分类? 按照程序是否执行:静态测试(审查、评审和走查)、动态测试 按照测试用例的设计方法:白盒测试、黑盒测试 按照开发阶段划分:单元测试、集成测试、系统测试、验收测试 按照测试实施的组织划分:开发方测试、用户测试(β测试)、第三方测试 按照是否使用工具:手工测试、自动化测试

软件测试基础要点总结

软件测试基础要点总结 软件测试基础要点总结 从宏观的角度讲,软件测试过程一般可划分为单元测试、集成测试、验收测试和系统测试等几个主要测试阶段。 1.测试计划注意事项 1.测试计划不一定要尽善尽美,但一定要切合实际,要根据项目特点、公司实际情况来编制,不能脱离实际情况; 2.测试计划一旦制定下来,并不就是一成不变的,随着软件需求、软件开发、人员流动等发生变化,测试计划也要根据实际情况的变化而不断进行调整,以满足实际测试要求.3.测试计划要能从宏观上反映项目的测试任务、测试阶段、资源需求等,不一定要太过详细.测试原则 ①应尽早和不断地进行软件“测试”。 ②测试用例中,不仅要选择合理的输入数据,还要选择不合理的输入数据。③在开发各阶段应事先分别制定出相应的测试计划,在测试开始后应严格执行,防止随意性。④对发现错误较多的程序模块,应进行重点测试。⑤避免程序员测试自己的程序。 ⑥用穷举测试是不现实的,一般通过设计测试用例,充分覆盖所有条件或所有语句即可。⑦长期妥善保存测试计划、测试用例、出错统计和有关的分析报告。 2.测试用例文档 测试用例文档通常是由简介和测试用例两部分组成:

简介部分编制了测试目的、测试范围、定义术语、参考文档等,这个与测试计划是一致的。 测试用例部分逐一列出各个测试用例。 测试用例(TestCase)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。 测试用例部分 测试用例通常包含的信息:用例标识和用例名称内容描述前提条件执行步骤预期结果评价准则 用例设计人员和设计时间用例执行人员和执行时间其它内容3.软件缺陷 缺陷的表现形式不仅体现在功能的失效方面,还体现在其他方面。主要类型有:①软件没有实现产品规格说明所要求的功能模块软件中;②出现了产品规格说明指明不应该出现的错误; ③软件实现了产品规格说明没有提到的功能模块; ④软件没有实现虽然产品规格说明没有明确提及但应该实现的目标; ⑤软件难以理解,不容易使用,运行缓慢,或从测试员的角度看,最终用户会认为不好。测试用例:以计算器为例 ①计算器的产品规格说明定应能准确无误地进行加、减、乘、除运算。如果按下加法键,没什么反应,就是第一种类型的缺陷;若计算结果出错,也是第一种类型的缺陷。②产品规格说明书还可能规定计算器不会死机,或者停止反应。如果随意敲键盘导致计算器停止接受输入,这就是第二种类型的缺陷。 ③如果使用计算器进行测试,发现除了加、减、乘、除之外还可以求平方根,但是产品规格说明没有提及这一功能模块。这是第三种类型的缺陷④在测试计算

最新软件测试期末复习资料

一、等价类划分 例题: 等价类测试用例的设计: ●弱一般等价类 ●强一般等价类 ●弱健壮等价类 ●强健壮等价类 函数f(x,y)有两个输入变量,x的取值范围是[10,30],y的取值范围[40,70] 根据需求: x的有效等价类为[10,20],[21,30],无效等价类<10,>30 y的有效等价类为[40,50],[51,60],[61,70]无效等价类<40,>70 1、弱一般等价类测试用例(x和y的有效等价类的值至少取一次即可) 测试用例编号X y 预期输出 15 45 25 55 15 65 2、强一般等价类测试用例(x和y的有效等价类的值做笛卡尔乘积) 测试用例编号X y 预期输出 15 45 15 55 15 65 25 45 25 55 25 65 3、弱健壮等价类(强一般等价类+其中一个变量取无效值,其他变量取有效值的情况)测试用例编号X y 预期输出 15 45 15 55 15 65 25 45 25 55 25 65 5 45 5 55 5 65 35 45 35 55 35 65 15 35 25 35 15 75 25 75

4、强健壮等价类(在弱健壮等价类的基础上+都取无效值的情况,只是针对两个变量)测试用例编号X y 预期输出 15 45 15 55 15 65 25 45 25 55 25 65 5 45 5 55 5 65 35 45 35 55 35 65 15 35 25 35 15 75 25 75 5 35 5 35 5 75 5 75 35 35 35 35 35 75 35 75 注册界面的需求如下: ●用户名和密码6-20的字母数字组合 ●邮箱满足xxx@xxx.xx格式 ●年龄必须是数字 写出有效等价类和无效等价类,再写出弱健壮等价类测试用例 有效等价类无效等价类 用户名1、6-20的字母数字组合5、全字母 6、全数字 7、<6位的字母数字组合 8、>20位的字母数字组合密码2、6-20的字母数字组合9、全字母 10、全数字 11、<6位的字母数字组合 8、>20位的字母数字组合

软件测试复习(重点)

第1章软件测试概述 2.软件的分类方法都有哪些? 软件的分类方法有如下 4种: (1)按软件的功能分类 (2)按软件服务对象的范围分类 (3)按开发软件所需要的人力、时间以及完成的源程序行数分类。 (4)按软件工作方式分类 按软件的工作方式分为:实时处理软件、分时软件、交互式软件、批处理软件。3. 软件测试的概念 软件测试是软件工程中的一个环节,是开发项目整体的一部分。软件测试是有计划有组织的,是保证软件质量的一种手段,它是软件工程中一个非常重要的环节。因此,可以认为它是伴随软件工程的诞生而诞生的,伴随着软件复杂程度的增加、规模的增大,软件测试作为一种能够保证软件质量的有效手段,越来越受到人们的重视,软件测试最终目的是使产品达到完美。 4. 软件测试的方法有哪些? 软件的测试方法有3种,即用试题测试、用新旧两个系统作平行处理测试和软件测试自动化工具测试。 5. 请简要说明软件测试阶段的任务。 软件测试阶段有以下几方面的任务: (1) 制定测试大纲; (2) 制作测试数据; (3)程序测试; (4)功能测试; (5)子系统测试; (6)系统测试; (7)系统接口测试; (8)写出测试报告书; (9)向下阶段工作提交系统运行、维护手册的草案。 (10)制定测试大纲。 第2章白盒测试的实用技术 1. 白盒测试有哪两个分类? (1)静态测试 静态测试是测试中很重要的方法之一。它不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试。静态测试大约可以找出25%—60%的逻辑错误。 (2)动态测试: 输入一组预先按照一定的测试准则设计的实例数据驱动运行程序,检查程序功能是否符合设计要求,发现程序中错误的过程。 2. 说出白盒测试的4个原则。

软件测评师考试基础知识

软件评测基础知识 软件测试基本概念 软件质量与软件测试:软件测试是软件质量保证工作的一个重要环节。软件测试和软件质量保证是软件质量工程的两个不同层面的工作。软件测试只是软件质量保证工作中的一个重要环节。质量保证(QA)的工作是通过预防、检查与改进来保证软件的质量,它所关注的是软件质量的检查和测量。软件测试所关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析。 软件测试定义:软件测试就是在软件投入运行前对软件需求分析、软件设计规格说明和软件编码进行的查错(包括代码执行活动与人工活动)。软件测试是为了发现错误而执行程序的过程。软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序的错误。是在软件投入运行前,对软件需求分析、软件设计规格说明和软件编码的最终复审,是软件质量保证的关键步骤。 软件测试目的:(1)测试是一个为了寻找错误而运行程序的过程;(2)一个好的测试用例是指很可能找到迄今为止未发现的错误的用例;(3)一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。 软件测试的目标是能够以耗费最少时间与最小工作量找出软件系统中潜在的各种错误与缺陷。 测试只能证明程序中错误的存在,但不能证明程序中没有错误。

软件测试原则:(1)尽早地并不断地进行软件测试;(2)程序员或程序设计机构应避免测试自己设计的程序;(3)测试前应当设定合理的测试用例;(4)测试用例的设计不仅要有合法的输入数据,还要有非法的输入数据;(5)在对程序修改之后要进行回归测试;(6)充分注意测试中的群集现象;(7)妥善保留测试计划、全部测试用例、出错统计和最终分析报告,并把它们作为软件的组成部分之一,为软件的维护提供方便;(8)应当对每一个测试结果做全面检查;(9)严格执行测试计划,排除测试的随意性。 软件测试对象:软件的测试不仅仅是程序的测试,软件的测试应贯穿于整个软件生命同期中。在软件定义阶段产生的可行性报告、项目实施计划、软件需求说明书或系统功能说明书,在软件开发阶段产生的概要测试说明书、详细设计说明书,以及源程序等都是软件测试的对象。 软件测试过程模型:V模型、W模型、H模型。 软件测试模型的使用:在实际软件测试的实施过程中,应灵活地运用各种模型的优点,通常可以在W模型的框架下,运用H模型的思想进行独立的测试。当有变更发生时,按X模型和前置模型的思想进行处理。同时,将测试和开发紧密结合,寻找恰当的就绪点开始测试,并反复进行迭代测试,以达到按期完成预定的目标。 软件问题分类:软件错误、软件缺陷、软件故障、软件失效。 软件测试类型: 按开发阶段分:单元测试、集成测试、确认测试(有效性测试)、

软件测试[(美)ron patton]读书笔记

第一部分软件测试综述 软件测试-机械工业出版社(美)Ron Patton著周予滨姚静等译 雪舞奉天读书笔记 说真的,这本书真的很不错,里面的一些定义很权威的,而且话不罗嗦,讲的都是重点,美中不足的在测试用例设计方法那块不完整。许多人在推荐 入门看什么书的时候都提到此书,为了方便新手学习(其实我也是新手哈哈),我决定把我以前的读书笔记敲出来贴在网上,写的不是太全,主要是我觉得不错的东西。在此感谢此书作者和翻译人员! 软件测试读书笔记之一软件测试背景 (1) 软件测试读书笔记之二软件开发过程 (2) 软件测试读书笔记之三软件测试的实质 (3) 软件测试读书笔记之四检查产品说明书 (4) 软件测试读书笔记之五闭着眼睛测试软件 (5) 软件测试读书笔记之六检查代码 (9) 软件测试读书笔记之七带上X光眼镜检查软件 (13) 软件测试读书笔记之八配置测试 (16) 软件测试读书笔记之一软件测试背景 一.软件缺陷的正式定义: 符合下边5个规则的才能叫做软件缺陷。 1.软件未达到产品说明书标明的功能。 2.软件出现了产品说明书指明不会出现的错误。 3.软件功能超出产品说明书指明范围。 4.软件未达到产品说明书虽未指出但应达到的目标。 5.软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。 二.软件缺陷的产生原因: 导致软件缺陷最大的原因是产品说明书;第二大来源是设计方案;三是代码;四是某些软件缺陷产生的条件被错误地认定。 三.软件缺陷的修复费用: 随时间增长,修复软件缺陷的费用是呈几何数级增长的,随时间推移,数十倍增长。 四.软件测试人员的目的:

软件测试远的目标就是发现软件缺陷,尽可能早一些,并确保其得以修复。 五.怎么成为优秀测试员: 1.探索精神 2.故障排除能手 3.不懈努力 4.创造性 5.追求完美 6.判断准确 7.老练稳重 8.说服力 9.除了这些素质,在软件编程方面受过的教育也是重要的。 10.软件的功能为了解决现实问题,因此,教学烹饪航空木工医疗等知识都 将对查找该领域软件的缺陷有莫大帮助 软件测试读书笔记之二软件开发过程 一.测试文挡包括: 1.测试计划 2.测试案例 3.软件缺陷报告 4.归纳,统计和总结。 二.软件产品由哪些部分组成(都是要测的哦,当然我国许多软件都无法 达到这么多部分~呵呵) 1. 最终产品(光盘/软盘/程序...) 2.帮助文件 3.用户手册 4.样本和示例 5.标签和帖子 6.产品支持信息 7.图标和标志 8.错误信息 9.广告和宣传材料 10.安装 11.说明文件 这些都是要测试的,书中尤其提到了不要忘了测试错误提示信息(错误提示信息是软件产品最容易忽视的部分,通常是有程序员而不是训练有素的稿手来写的。这 些信息很少照顾到修复软件缺陷的需要,还常常造成麻烦。软件测试员 也难以找到并显示全部信息。在软件中不要加入吓人和不友好的错误提示信息。)

软件测试复习资料

1、软件缺陷的表现: (1)功能、特性没有实现或部分实现(2)设计不合理(3)实际结果和预期结果不一致(4)运行出错,包括运行中断、系统崩溃、界面混乱(5)数据结果不正确、精度不够(6)用户不能接受等其他问题,如存取时间过长、界面不美观 2、软件缺陷的产生 (1)技术问题:算法错误、语法错误、计算和精度问题、接口参数传递不匹配 (2)团队工作:误解、沟通不充分 (3)软件本身:文档错误、用户使用场合;时间上不协调/不一致性所带来的问题;系统的自我恢复或数据的异地备份、灾难性恢复等 3、软件测试的发展4阶段 (1)1957~1978年,以功能验证为导向,测试是证明软件是正确的(正向思维)。 (2)1978~1983年,以破坏性为导向,测试是为了找到软件中的错误(逆向思维)。 (3)1983~1987年,以质量评估为导向,测试是提供产品的评估和质量度量。 (4)1988年起,以缺陷预防为导向,测试是为了展示软件符合设计要求,发现缺陷、预防缺陷。 4、软件测试定义的两面性 5、软件测试流程图 需求测试、单元测试、集成测试、系统测试、系统测试、性能测试、验收测试、回归测试 6、软件测试和开发的关系

1、评审(属于静态测试)的概念:检验产品(需求或设计文档)是否正确地满足以往建立的规范、是否符合客户的需求。 技术评审:对产品及各阶段的输出内容进行评估;查找需求、架构、逻辑、功能和算法上的错误。 文档评审:对各文档的格式、内容等进行评审。如市场需求说明书、功能设计说明书、测试计划、测试用例…。 2、缺陷修正成本 VS 时间 3、评审方法

各种方法交替使用,不同阶段和场合选取合适的方法 临时评审:设计、开发和测试人员自行进行。 轮查:邮件分发评审内容,搜集评审意见。 互为审查(同行评审):适用于两个工作内容和技术相近的人员(团队)。 走查:从头到尾进行检查。 会议审查:系统化、严密的集体评审方法,用于最可能产生风险的工作成果(需求分析报告、系统架构设计、核心模块的代码)。 1、测试用例的元素 测试目标,测试环境要求,输入数据,操作步骤,期望输出(重要的)2、如何设计出高质量的测试用例: (1)客户需求导向的设计思路;(2)责任到人; (3)灵活的设计方法 (4)测试用例设计不能局限于输入数据 (5)避免含糊/冗长/复杂的测试用例(6)将具有类似功能的测试用例抽象并归类 1、手工测试:发现缺陷率高;容易实施;创造性、灵活性;覆盖率量化困难;重复测试效率低;不一致性、可靠性低;依赖人力资源 自动测试:高效率(速度);高复用性;覆盖率容易度量;准确、可靠;不知疲劳;激励团队士气;机械、难以发现缺陷;一次性投入大2、两者相互补充: 手工测试适用于:功能逻辑测试、验收测试、适用性测试、交互性测试…不稳定、开发周期短或一次性的软件 自动测试适用于:单元测试、集成测试、系统负载或性能测试、可靠性测试… 工具本身缺乏想象力和创造性 自动测试:发现15%的缺陷;手工测试:发现85%的缺陷 1、单元测试概念:针对软件设计的最小模块——程序模块,进行正确性检验的测试工作。

软件测试考试重点

一、单项选择题(每小题2分,共20分) 二、判断题(每题1分,共10分) 三、名词解释(每题2分,共10分) 四、分析题(共6题30分) 五、综合题(共2题30分) 第二章 软件质量:软件质量是软件特性的总和,以及满足规定和潜在用户需求的能力 产品质量的标准:1.功能性2.可用性(简单安装; 轻松使用; 友好界面)3.可靠性(用户使用的根本)4.性能5.容量6.可测量性7.可维护性8.兼容性9.可扩展性 软件测试分类:1.方法:白盒,黑盒2.目标/特性:功能,强壮性,性能,适用性,安全性,可靠性3.阶段/层次:单元,集成,系统,验收 单元测试的对象是程序系统中的最小单元---模块或组件上,在编码阶段进行,针对每个模块进行测试,主要通过白盒测试方法,从程序的内部结构出发设计测试用例,检查程序模块或组件的已实现的功能与定义的功能是否一致、以及编码中是否存在错误。 集成测试,也称组装测试、联合测试、子系统测试,在单元测试的基础上,将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的模块之间问题。两种集成方式:一次性集成方式和增殖式集成方式。 功能测试一般须在完成集成测试后进行,而且是针对应用系统进行测试。功能测试是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使用 系统测试是将软件放在整个计算机环境下,包括软硬件平台、某些支持软件、数据和人员等,在实际运行环境下进行一系列的测试,包括恢复测试、安全测试、强度测试和性能测试等。验收测试的目的是向未来的用户表明系统能够像预定要求那样工作,验证软件的功能和性能如同用户所合理期待的那样 安装测试是指按照软件产品安装手册或相应的文档,在一个和用户使用该产品完全一样的环境中或相当于用户使用环境中,进行一步一步的安装操作性的测试。 第三章 测试的关键问题是如何选择测试用例:高效的测试用例 测试用例:由测试数据和预期结果构成的 测试的对象:源程序、目标程序、数据及相关文档。 测试的目的:为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了至今为止尚未发现的错误的测试。 软件是人的创造活动,错误不可避免,因此只能发现错误,不能预防错误。 掌握各种逻辑覆盖法和基路径覆盖法的概念,并能设计相关的测试用例

软件测试复习资料(带答案)

第1章 软件测试:是由“验证”和“有效性确认”活动构成的整体:“验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性;“有效性确认”是确认所开发的软件是否满足用户真正需求的活动。 软件测试和软件开发的关系? 软件测试盒软件开发构成一个全过程的交互、协作之关系,亮着自始至终一起工作,共同致力于同一个目标——按时、高质量的完成项目。 第2章 软件质量:软件产品具有满足规定的或隐含要求能力要求有关的特征与特征总和。 软件产品质量的属性:功能性、可用性(简单安装;轻松使用;界面友好)、可靠性(用户使用的根本)、性能、容量、可测量性、可维护性、兼容性、可扩展性。 软件缺陷的标准定义:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。 软件缺陷产生的主要原因:1.技术问题,2.软件本身,3.团队工作。 软件缺陷的构成:规格说明书,设计,代码,其他。软件产品规格说明书为什么是软件缺陷存在最多的地方?用户一般是非计算机专业用户,开发人员和用户的沟通存在较大困难,对要开发的产品功能理解不一致;由于软件产品还没有设计、开发,完全靠想象去描述系统的实现结果,所以有些特性还不够清晰;需求变化的不一致性;对规格说明书不够重视;没有在整个开发队伍中进行充分沟通,有时只是设计师或项目经理得到比较多的信息。 软件评审的目的:就是通过软件评审尽量早地发现产品中的缺陷,因此软件评审可以看做软件测试的有机组成部分,两者之间有着密不可分的联系。 软件评审:是对软件元素或者项目状态的一种评估手段,以确定其是否与计划的结果保持一致,并使其得到改进。 软件评审的对象分为:管理评审,技术评审,文档评审和流程评审。 软件质量保证:是通过对软件产品和活动有计划的进行评审和审计来验证软件是否合乎标准的系统工程活动。SQA(软件质量保证)与软件测试的关系和区别?SQA 与软件测试之间相辅相成,存在包含和交叉的关系。SQA 指导、监督软件测试的计划和执行,督促测试工作的结果客观、准确和有效,并协助测试流程的改进。而软件测试是SQA重要手段之一,为SQA提供所需的数据,作为质量评价的客观依据。它们的相同点在于两者都是贯穿整个软件开发生命周期的流程。它们的不同之处在于SQA是一项管理工作,侧重于对流程的评审和监控,而测试是一项技术性的工作,侧重对产品的评估和验证。软件测试的分类:1.按测试的对象或范围分类,如单元测试、文档测试、系统测试等 2.按测试目的分类,如功能测试、回归测试、性能测试、可靠性测试、安全性测试和兼容性测试等。3.根据测试过程中被测软件是否被执行,分为静态测试和动态测试。4.根据是否针对系统的内部结构和具体实现算法来完成测试,可分为白盒测试和黑盒测试。 软件测试的整个过程包括8个阶段:1.规格说明书审查。2.系统和程序设计审查。3.单元测试。4.集成测试。 5.功能测试。 6.系统测试。 7.安装测试。 8.验收测试。软件测试工作范畴分2个层次:1.软件测试工作的组织与管理:制定测试策略、测试计划,确认所采用的测试方法与规范,控制测试进度,管理测试资源。2.测试工作的实施:编制符合标准的测试文档搭建测试环境,开发测试脚本、与开发组织协作实现各阶段的测试活动。软件测试工作流程概括为6个主要方面1.测试组织和管理1.测试计划3.测试用例设计4.测试实施5.测试结果分析6.测试评审与报告。 第3章 白盒测试:也称结构测试或逻辑驱动测试,是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。 白盒测试的具体方法有:逻辑覆盖、循环覆盖、基本路径覆盖等。 白盒测试的基本原则:保证每个模块中所有独立路径至少被使用一次;完成所有逻辑值分别为真值和假值的条件下的测试;在上下边界及可操作范围内运行所有循环,完成循环覆盖测试;检查内部数据结构以确保其有效性,完成边界条件的测试。 黑盒测试:也称功能测试,在测试中,把程序看作一个不能打开的黑盒子,不考虑程序内部结构和特性,在程 序接口进行测试,它只检查程序功能是否按照需求规格 说明书的规定正常使用,程序是否能适当地接收输入数 据而产生正确的输出信息。 黑盒测试的具体方法有:等价类划分法、边界值分析法、 错误推测法、因果图法等。 静态测试:就是静态分析,对模块的源代码进行研读, 查找错误或收集一些度量数据,并不需要对代码进行编 译和仿真运行。 动态测试:是通过真正运行程序发现错误,通过观察代 码运行过程,来获取系统行为、变量实时结果、内存、 堆栈、线程以及测试覆盖度等各方面的信息,来判断系 统是否存在问题,或者通过有效的测试用例,对应的输 入输出关系来分析被测程序的运行情况,来发现缺陷。 主动测试方法:测试人员主动向被测试对象发送请求、 或借助数据、事件驱动被测试对象的行为,从而验证被 测试对象的反应或输出结果。 被动测试方法:测试人员不干预产品的运行,而是被动 地监控产品在实际环境中运行,通过一定的被动机制来 获得系统运行的数据,包括输入、输出数据。 第4章 IBM统一过程(RUP):是以用例驱动、以体系结构为中 心的软件开发迭代过程。 RUP把软件的生命周期划分为4个阶段:初始阶段、细 化阶段、构造阶段和交付阶段。 TMap (测试管理方法):是一种结构化的、基于风险策 略的测试方法体系,目的能更早地发现缺陷,以最小的 成本、有效地、彻底地完成测试任务,以减少软件发布 后的支持成本。 TMap所定义的测试生命周期:计划和控制、准备、说 明、执行和完成等阶段。 TMap的基石:1.与软件开发生命周期一致的测试活动 生命周期(L);2.坚实的组织融合(O); 3.正确的基础设施和工具(I); 4.可用的技术(T)。 软件测试的标准级别:国际标准,国家标准,行业标准, 企业(机构)规范,项目规范。 软件测试规范:对软件测试的流程过程化并对每一个过 程元素进行明确的界定,形成完整的规范体系。 软件测试规范的内容:1.角色的确定,2.进入的准则, 3.输入项, 4.活动过程, 5.输出项, 6.验证与确认, 7. 退出的准则,8.度量。 软件测试管理与评价体系的目标:1.监视和测量软件产 品;2.识别和控制不符合要求的产品;3.验证产品设计 和开发;4.监视和测量软件过程。 建立软件测试管理体系步骤:1.测试规划;2.测试设计; 3.测试实施; 4.配置管理; 5.资源管理; 6.测试管理。 第5章 单元测试:是对软件基本组成单元进行的测试。 单元测试的基本过程:1.在详细设计阶段完成单元测试 计划2.建立单元测试环境,完成测试设计和开发3.执 行单元测试用例,并详细记录测试结果 4.判定测试用 例是否通过5.提交《单元测试报告》。 为什么要进行单元测试?1.尽早发现错误,错误发现越 早,成本越低;开发人员过于自信,后期复杂度高,发 现解决BUG困难。2.检查代码是否符合设计和规范。 单元测试的主要目标:确保各单元模块被正确地编码。 单元测试的任务:1.单元中所有独立执行路径测试 2. 单元局部数据结构测试3.单元接口测试4.单元边界条 件测试5.单元的各条错误处理通路测试6.内存分析 静态测试技术:是指不运行被测程序本身,仅通过分析 或检查源程序的语法、结构、过程、接口等来检查程序 的正确性。 驱动程序:也称驱动模块,用以模拟被测模块的上级模 块,能够调用被测模块。 桩程序:也称桩模块,用以模拟被测模块工作过程中所 调用的下层模块。 单元测试管理的5个阶段:1.计划阶段2.设计阶段3. 执行阶段4.评估阶段5.提交阶段。 Junit的优点:1.可以使测试代码与产品代码分开,这 更有利于代码的打包发布和测试代码的管理。2.针对某 一个类的测试代码,通地较少的改动便可以应用另一个 类的测试,JUnit提供了一个编写测试类的框架,使测 试代码的编写更加方便。3.易于集成到程序中的构建过 程中,JUnit和Ant的结合还可以实施增量开发。 4.JUnit的源代码是公开的,故而可以进行二次开发。 5.JUnit具有很强的扩展性,可以方便地对JUnit进行 扩展。 第6章 集成测试定义:集成测试是将已分别通过测试的单元按 设计要求组合起来再进行的测试,以检查这些单元之间 的接口是否存在问题。 集成测试前的准备:1.人员安排2.测试计划3.测试内 容4.集成模式5.测试方法 集成测试的模式:1.非渐增式测试模式:先分别测试每 个模块,再把所有模块按设计要求放在一起结合成所要 的程序,如大棒模式。2.渐增式测试模式:把下一个要 测试的模块同已经测试好的模块结合起来进行测试,测 试完以后再把下一个应该测试的模块结合进来测试。 非渐增式渐增式两种模式的优缺点:1.渐增式测试模式 需要编写的软件较多,工作量较大,非渐增式测试开销 小。2.渐增式测试模型发现模块间接口错误早,非渐增 式测试模式晚。3.非渐增式测试模式发现错误较难诊 断,使用渐增式测试模式,如果发生错误则往往和最近 加进来的模块有关。4.渐增式测试模式测试更彻底。5. 渐增式测试模式需要较多的机器时间。6.使用非渐增式 测试模式,可以并行测试。 回归测试的目的:在程序有修改的情况下保证原有功能 正常,不需要进行全面测试,而是根据修改的情况进行 有效测试,保证改动不会带来新的严重的错误。 回归测试的方法:1.再测试全部用例 2.基于风险选择 测试3.基于操作剖面选择测试4.再测试修改的部分。 性能测试步骤:1.确定性能测试需求2.根据测试需求, 选择测试工具和开发相应的测试脚本 3.建立性能测试 负载模型,就是确定并发虚拟用户的数量、每次请求的 数据量、思考时间、加载方式和持续加载的时间等 4. 执行性能测试5.结果分析,并提交性能测试报告 压力测试:也称为强度测试、负载测试。压力测试是模 拟实际应用的软硬件环境及用户使用过程的系统负荷, 长时间或超大负荷地运行测试软件,来测试被测系统的 性能、可靠性、稳定性等。 容量测试目的:通过容量测试可以确定软件系统还能保 持主要功能正常运行的某项指标的极限值(如最大并发 用户数、数据库记录数等),或者说能够确定测试对象 在给定时间内能够持续处理的最大负载或工作量。 安全性测试:是检查系统对非法侵入的防范能力。 安全性测试方法:1..静态的代码安全测试2.动态的渗 透测试3.程序数据扫描。 软件可靠性主要包括以下三个要素:1.规定的时间;2. 规定的环境条件;3.规定的功能。 容错性测试:主要检查系统的容错能力,检查软件在异 常条件下自身是否具有防护性的措施或者某种灾难性 恢复的手段。 容错性测试包括两个方面:1.输入异常数据或进行异常 操作,以检验系统的保护性。如果系统的容错性好的话, 系统只给出提示或内部消化掉,而不会导致系统出错甚 至崩溃。2.灾难恢复性测试。通过各种手段,让软件强 制性地发生故障,然后验证系统已保存的用户数据是否 丢失、系统和数据是否能尽快恢复。 第7章 验收测试:在软件产品完成了功能测试和系统测试之 后、产品发布之前所进行的软件测试活动,它是技术测 试的最后一个阶段,也称为交付测试。 验收测试的测试内容:验证系统是否达到了用户需求规 格说明书(可能包括项目或产品验收准则)中的要求, 测试试图尽可能地发现软件中存留的缺陷,从而为软件 进一步改善提供帮助,并保证系统或软件产品最终被用 户接受。主要包括易用性测试、兼容性测试、安装测试、 文档(如用户手册、操作手册等)测试等几个方面的内 容。 验收测试的测试步骤:1.制定测试计划,测试项,测试 策略及验收通过准则,并经过客户参与的计划评审。2. 建立测试环境,设计测试用例,并经过评审。3.准备测 试数据,执行测试用例,记录测试结果。4.分析测试结 果,根据验收通过准则分析测试结果,作出验收是否通 过及测试评价。5.提交测试报告。 验收测试通过标准:1.完全执行了验收测试计划中的每 个测试用例。2.在验收测试中发现的错误已经得到修改 并且通过了测试或者经过评估留待下一版本中修 改。 3.完成软件验收测试报告。 用户界面的7个要素:符合标准和规范,直观性,一致 性,灵活性,舒适性,正确性,实用性。 兼容性测试包括:软件兼容性、数据共享兼容性、硬件 兼容性。 软件兼容性测试:是指验证软件之间是否正确地交互和 共享信息。 数据共享兼容性表现在以下方面:1.剪切、复制和粘贴 2.文件的存取 3.文件导入和导出。 恢复测试:主要检查系统的容错能力。当系统出错时, 能否在指定时间间隔内修正错误或重新启动系统。 文档的种类:1.联机帮助文档或用户手册;2.指南和向 导;3.安装、设置指南;4.示例及模板;5.错误提示信 息;6.用于演示的图像和声音;7.授权/注册登记表及 用户许可协议;8.软件的包装、广告宣传材料。 文档测试主要检查文档的正确性、完备性、易理解性和 一致性。 第8章 面向对象层次结构测试重点:1.对认定对象的测试 2. 对认定结构的测试3.构造的类层次结构的测试 线程:是一个操作系统进程内能够独立运行的内容,拥 有自己的计数器和本地数据。线程是能够被调度执行的 最小单位。 第10章 软件国际化:一些大型软件或者热门软件,不但要提供 一国语言的版本,还要提供其他国家语言的版本,这就 是软件国际化。 软件本土化:是将一个软件产品按特定国家或语言市场 的需要进行全面定制的过程。 为什么要进行软件本地化?为了使软件产品可以满足 不同国家或地区的用户的使用要求。 软件本地化和软件国际化的关系?本地化要适应国际 化的规定,而国际化是本地化的基础和前提,为本地化 做准备,使本地化过程不需要对代码做出改动就能完 成,或将代码修改降到最低限度。 字符集:是操作系统中所使用的字符映射表。 软件国际化规范:1.切换语言的机制。2.与语言无关的 输出接口。3.与语言无关的输入接口和标准的输入协 议。4.资源文件的国际化。5.支持和包容本地化数据格 式。 软件本地化的基本步骤:1.建立配置管理体系,跟踪目 标语言各个版本的源代码;2.创造和维护术语表;3. 源语言代码和资源文件分离、或提取需要本地化的文 本;4.把分离或提取的文本、图片等翻译成目标语言; 5.把翻译好的文本、图片重新检入目标语言的源代码版 本;6.如果需要,编译目标语言的源代码;7.测试翻译 后的软件,调整UI 以适应翻译后的文本;8.测试本地 化后的软件,确保格式和内容都正确。 本地化测试包括6个方面:1.功能性测试,所有基本功 能、安装、升级等测试;2.翻译测试,包括语言完整性、 术语准确性等的检查;3.可用性测试,包括用户界面、 度量衡和时区等;4.兼容性调试,包括硬件兼容性、版 本兼容性等测试;5.文化、宗教、喜好等适用性测试; 6手册验证,包括联机文件、在线帮助、PDF文件等测 试。 本地化测试的技术问题有:1.数据格式 2.页面显示和 布局3.配置和兼容性问题。 第11章 自动化测试:是把人为驱动的测试行为转化为机器执行 的一种过程,即模拟手工测试步骤,通过执行由程序语 言编制的测试脚本,自动地完成如软件的单元测试、功 能测试、负载测试或性能测试等全部工作。 自动化测试的优势:1.自动运行的速度快,执行效率高, 是手工无法相比的。2.永不疲劳 3.测试结果准确。4. 可靠。5.可复用性。一旦完成所用的测试脚本,可以一 劳永逸运行很多遍。6特别的能力。 自动化测试带来的好处:1.缩短软件开发测试周期 2. 更高质量的产品3.软件过程更规范4.测试效率高,充 分利用硬件资源5.节省人力资源,降低测试成本6.增 强测试的稳定性和可靠性7.提高软件测试的准确度和 精确度8.手工不能做的事情,软件测试工具可以完成 9.高昂的团队士气 第12章 软件测试的人员的责任:1.发现软件程序、系统或产品 中所有的问题;2.尽早地发现问题;3.督促开发人员尽 快地解决程序中的缺陷;4.帮助项目管理人员制定合理 的开发计划;5.并对问题进行分析、分类总结和跟踪; 6.帮助改善开发流程、提高产品开发效率; 7.提高程序 编写的规范性、易读性、可维护性。 测试团队的基本构成:1.QA/测试经理:人员管理,资 源调配、测试方法改进等;2.实验室管理人员:设置、 配置和维护实验室的测试环境 3.内审员:审查流程, 建立测试模板,跟踪缺陷测试报告的质量等;4.测试组 长:负责项目的管理、测试计划、测试用例、任务安排 等;5.测试设计人员/资深测试工程师:产品设计规格 说明书的审查、测试用例的设计、技术难题的解决、培 训和指导、实际测试任务的执行;6.一般(初级)测试 工程师:执行测试用例和相关的测试任务。 优秀测试工程师应具备的素质:1.高度的责任感 2.非 常好的沟通能力、幽默感3.技术能力4.自信心 5.耐心 6.怀疑一切的精神 7.适度的好奇心8 .洞察力 9.反向思维和发散思维能力10记忆力。 第14章 测试用例的作用:1.有效性2.可复用性3.易组织性4. 可评估性5.可管理性 测试用例的标准模板中主要元素如下:1.标志符 2.测 试项3.测试环境要求4.输入标准5.输出标准6.测试用 例之间的关联。 测试用例设计中考虑因素:1.必须具有代表性、典型性。 2.寻求系统设计、功能设计的弱点。 3.测试用例需要考 虑到正确的输入,也需要考虑错误的或者异常的输入, 以及需要分析怎样使得这样的错误或者异常能够发生。 4.考虑用户实际使用场景。 测试用例设计的基本原则:1.尽量避免含糊的测试用 例。2.尽量将具有相类似功能的测试用例抽象并归类。 3.尽量避免冗长和复杂的测试用例。 测试套件:是根据特定的测试目的和任务而构造的某个 测试用例的集合。 测试用例的组织方法:1.按照程序的功能模块 2.按照 测试用例的类型3.按照测试用例的优先级。 跟踪测试用例包括两个方面:1.测试用例执行的跟踪; 2.测试用例覆盖率的跟踪。 跟踪测试用例方法:1.书面文档2.电子表格3.数据库 测试用例的覆盖率:是评估测试过程以及测试计划的一 个参考依据,它根据测试用例进行测试的执行结果与软 件实际存在的问题进行比较,从而获得测试有效性的评 估结果。 第15章 软件缺陷生命周期指的是一个软件缺陷被发现、报告到 这个缺陷被修复、验证直至最后关闭的完整过程。 一个基本的软件缺陷生命周期包含了3个状态:“新打 开的”、“已修正”和“已关闭”。 软件缺陷的严重性级别:1.致命的2.严重的3.一般的 4.微小的 软件缺陷的优先级级别:1.立即解决2.高优先级3.正 常排队4.低优先级 缺陷描述的基本要求:1.单一准确2.可以再现3.完整 统一4.短小简练5.特定条件6.补充完善7.不做评价 优秀的缺陷报告和散漫的缺陷报告的主要区别?优秀 的缺陷报告:记录下最少的重现步骤,不仅包括了期望 结果、实际结果和必要的数据、附件、测试环境或条件, 还包括了简单的分析。散漫的缺陷报告:无关的重现步 骤,以及对开发人员理解这个错误毫无帮助的结果信 息。 分离和再现软件缺陷的步骤?确保所有的步骤都被记 录。特定条件和时间。压力和负荷、内存和数据溢出相 关的边界条件。考虑资源依赖性包括内存和硬件共享的 相互作用等。不能忽视硬件。 第17章 软件测试项目管理的内容:1.软件项目的测试过程管 理;2.软件自动化解决方案和实施;3.软件项目的测试 资源分配和进度控制;4.软件测试工作和产品质量的风 险评估和控制;5.软件版本定义、测试范围变化的控制 等;6.软件构建和发布等监控。 测试项目管理的特点:1.软件测试存在较大风险,质量 标准定义不准确、任务边界模糊 2.软件测试项目的变 化控制和预警分析要求高。3.软件测试管理要求更严格 和细致 4.测试任务的分配难 5.测试要求人力资源十 分稳定 6.测试人员在待遇、地位可能受到一些不公正 的待遇。 测试项目进入的准则:1.清楚了解项目的整体计划框 架;2.完成需求规格说明书评审;3.技术知识或业务知 识的储备;4.标准环境;5.技术设计文档是测试用例设 计的重要参考资料;6.足够的资源;7.人员组织结构、 成员及其责任已确定。 软件测试计划是指导测试过程的纲领性文件,描述测试 活动的范围、方法、策略、资源、任务安排和进度等, 并确定测试项、哪些功能特性将被测试、哪些功能特性 将无需测试,识别测试过程中的风险。 测试设计分为2个层次: 1.高层次的设计2.低层次的 设计 有效管理Bug的规则和流程:1.设计好每个BUG应该包 含的信息条目、状态分类等;2.通过系统自动发出邮件 给相应的开发人员和测试人员,使得任何BUG都不会错 过,并能得到及时处理;3.通过日报、周报等各类报告 来跟踪项目的当前状态;4.在各个大小里程碑之前,召 开有关人员的会议,对BUG进行集体会审;5.通过缺陷 时间曲线等进行趋势分析,更好地控制、调整项目。 里程碑:是项目中完成阶段性工作的标志,即讲一个过 程性的任务用一个结论性的标志来描述任务结束的、明 确的起止点,一系列的起止点就构成应道整个项目发展 的里程碑。 测试文档存储的规划、设计考虑因素:1.强大的搜索功 能2.安全性3.目录结构4.操作要灵活。

相关文档
最新文档