一、测试方法

(一)按执行阶段划分:

1.黑盒测试 :叫做功能测试或基于规格说明的测试。基本观点是:任何程序都可以看做是从输入定义域到输出值域的映射,将程序看作是一个打不开的黑盒,黑盒里面的内容是完全不知道的。使用黑盒测试方法,测试人员所使用的唯一信息就是软件的规格说明,只依靠被测程序输入和输出之间的关系或程序的功能来设计测试用例,推断测试结果的正确性。黑盒测试是从用户角度出发的测试。

优点:1)黑盒测试与软件具体实现无关,所以如果软件实现发生了变化,测试用例仍然可以使用;2)设计黑盒测试用例可以和软件实现同时出现,因此可以压缩项目总的开发时间。

缺点:最大的缺点就是不能针对特定的程序段,这样很容易造成程序路径的漏测,当程序非常复杂时其隐藏的问题很难发现。由于黑盒测试的测试人员编程能力相对薄弱,所以大部分测试人员现在研究的都是介于白盒和黑盒之间,就是灰盒测试,也是常说的接口测试。

(1)等价类划分法:根据程序规格说明书对输入范围进行划分,把所有可能的输入数据划分为若干个互不相交的子集,称为等价类,然后从每个等价类中选取少数具有代表性的数据作为测试用例,进行测试。

(2)边界值分析法:大量的软件测试表明,故障往往出现在定义域或值域的边界上,而不是在其内部,为检测边界附近的处理专门设计测试用例。

(3)因果图法:因果图是一种简化了的逻辑图,能直接的表明程序输入条件(原因)和输出动作(结果)之间的相互关系,因果图法是借助图形来设计测试用例的一种方法,特别适合于被测试程序具有多种输入条件,程序的输出又依赖于输入条件的各种情况。

(4)决策表法:在所有的黑盒测试方法中,基于决策表的测试时最严格的,最具有逻辑性的测试方法。决策表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格。它能够将复杂的问题按照各种可能的情况全部罗列出来,简明并避免遗漏。

(5)流程分析法:也称场景法,若将软件系统的某个流程看成路径的话,则可以针对该路径使用路径分析法的方法设计测试用例。

(6)状态迁移法:通过把被测系统,分析出他的若干个状态,以及这些状态之间的转换条件和路径,那么就可以从状态迁移路径覆盖的角度对设计用例进行测试。

(7)异常分析法:异常分析法就是针对系统有可能存在的异常操作、软硬件缺陷引起的故障进行分析,依次设计用例。

(8)错误推测法:在软件测试中,基于经验和直觉推测程序中可能存在的各种错误,从而有针对性的设计测试用例的方法。

2.白盒测试:叫做结构测试、逻辑驱动测试或基于程序的测试。它一般用来分析程序的内部结构。它依赖于对程序细节的严密验证,针对特定条件和循环设计测试用例,对程序的逻辑路径进行测试。白盒测试要求对被测程序的结构特性做到一定程度的覆盖,并以软件中的某类成分是否都已经得到测试为准则来判断软件测试的充分性,也称为基于覆盖的测试技术。

优点:检测代码中的每条分支和路径,对代码的测试比较充分。它可以揭示一些隐藏在代码中的缺陷或错误;还可以迫使测试人员仔细思考软件是如何实现的。

缺点:对软件规格的正确性不进行验证。并且对测试人员的要求非常高,必须要有一定的开发经验,能够编写测试驱动或测试桩。

(1)静态分析技术:

     1)控制流分析:将程序的流程图转换为控制流程图借助算法进行控制分析;

     2)数据流分析:根据代码得到的数据流表进行分析,主要关注数据的定义和引用;

     3)信息流分析:根据输入变量、语句的关系及输出变量三者之间关系表进行分析;

     4)代码审计:代码评审是在开发组内部进行,主要检查代码和设计的一致性,代码对文档标准的遵循及代码的可读性,代码的逻辑表达式正确性,代码结构的合理性等方面。

(2)动态分析技术:

     1)程序插装:对程序的路径和分支中设计程序插装,即在程序中插入一些打印语句,其目的就是在执行程序时打印出最关注的信息。

     2)逻辑覆盖率测试

     ①语句覆盖:在运行程序时,通过设计足够的测试数据,使被测程序中每一个语句至少被执行一次;

     ②判定覆盖:也称为分支覆盖,是指在运行程序时程序时,通过设计足够的测试数据,使被测程序中每个判定(逻辑真与假)至少执行一次;

     ③条件覆盖:在运行程序时,通过设计足够的测试数据,使被测程序中所有判断语句中每个条件的可能取值(为真、为假)至少被执行一次;

     ④判定条件覆盖:在运行程序时,通过设计足够的测试数据,使被测程序中所有判断语句中每个条件的可能取值(为真、为假)至少被执行一次,并且每个判定的结果(逻辑真假)也首先被执行一次。

     ⑤路径覆盖:运行程序时,通过设计足够的测试数据,使被测程序中所有的路径至少被执行一次。

     逻辑覆盖法中语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、路径覆盖,它们的覆盖长度依此增强,但是每种覆盖率都有局限性,在测试中要把各种覆盖率方法组合进行测试。

    3)基本路径测试:白盒测试最为广泛的一种测试方法,它是一种通过程序的流程图,将其转化为程序控制流程图,然后拆分控制构造的环形复杂性,导出基本可执行路径集合,最后进行测试用例设计的方法。

    ①控制流:控制流程图是以图形的方式用来描述控制流的一种方法。在控制流程图中的只有两种图形符号(圆圈和箭头),圆圈用来表示程序流程图中矩形框、菱形框的功能,也称为节点。箭头用来表示控制的顺序,也称为边(是指两个节点的连线)。

    ②基本路径测试法的步骤:

       步骤1:将程序的流程图转化为控制流程图

       步骤2:计算控制流程图的圈复杂度

       步骤3:确认独立路径的集合

       步骤4:生成测试用例,确保基本路径集中每一条路径的执行

3.灰盒测试:是一种综合测试法,介于白盒测试和黑盒测试之间的一种测试,不仅要关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试以程序的主要功能和主要性能为测试依据,测试方法主要根据程序流程图、需求说明书以及测试者的实践经验来设计。灰盒测试由方法和工具组成,这些方法和工具取材于应用程序的内部知识和与之交互的环境。灰盒测试关注的粒度是一个模块或模块和模块之间的接口问题。要求测试人员清楚系统内部是由哪些模块构成,模块之间是如何运作的。

(二)按执行状态划分:

4.静态测试:不运行程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。

(1)同行评审:通常是指通过评审对象作者的同行来确认缺陷或错误的检查方法。

(2)阶段评审:对不同阶段的里程碑进行正式评审,只有前一个阶段的输出产物通过了验证评审无误后,才能开展后续的活动。

5.动态测试:通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,此方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。通过运行软件来检验软件的动态行为和运行结果的正确性。

(三)按执行行为划分:

6.手工测试:通过模拟终端用户的业务流程应用软件系统,检查被测对象实际表现与预期结果间的差异,测试工程师手工运行被测对象。

7.自动化测试:利用测试工具,编程实现模拟用户业务使用流程的脚本,设定特定的测试场景,自动寻找缺陷。

优点:快速,可重用,替代人的重复活动。

缺点:只能检查一些比较重要的问题,如奔溃、死机,但无法发现新的错误。在自动化测试中编写测试脚本的工作量也很大,有时该工作量甚至超过了手工测试时间。

二、测试过程

 

软件测试学习系列一:测试基础

 

1.单元测试:简称UT,是对软件基本组成单元进行检测的测试工作。

2.集成测试:简称IT,是在单元测试的基础上,将所有的模块按照设计的要求进行集成,主要验证组装后的功能以及模块之间接口是否正确安装的测试工作。

3.系统测试:简称ST,是将已经通过集成测试的软件系统,与计算机硬件、外设、数据库、网络等其他元素结合在一起,在实际运行环境下,进行的一些系列的测试工作。

包含:功能测试、性能测试、压力测试、容量测试、安全性测试、容量测试、安全性测试、兼容性测试、GUI测试、可靠性测试、配置测试、异常测试、安装测试、网络测试、可用性测试、健壮性测试、文档测试

4.验收测试:验收测试是部署软件应用之前最后一个测试操作。是以用户为主的测试,软件开发人员和软件质量保证人员参加。除考虑功能和性能外,还应对软件的兼容性、可移植性、可维护性、可恢复性以及法律法规、行业标准进行测试。

非正式验收就是用户验收测试(UAT)

非正式验收包括α测试和β测试

5.回归测试:在测试或其他活动中发现的缺陷经过修改后,重新进行测试,目的是验证修改后缺陷是否得到正确的修复,同时还要关注有没有引入新的缺陷或导致其他代码产生缺陷或错误。

三、测试模型

1.V模型

软件测试学习系列一:测试基础

V模型是最典型的测试模型,从左到右,描述了基本的开发过程和测试行为。V模型的价值在于它强调软件开发的协作和速度,反映测试活动和分析设计关系。但仍然存在巨大局限性:该模型呈现线性的发展趋势,而且它把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段,主要针对程序寻找错误,忽略了测试活动对需求分析、系统设计等活动的验证和确认。如果需求分析前期产生的错误,要到后期的验收测试才能发现。

V模型适用于项目比较小、周期比较短的项目。该模型已渐渐被淘汰。

2.W模型(双V模型)

软件测试学习系列一:测试基础

W模型由两个V组成,分别代表开发和测试过程。

Verification(验证):保证软件正确地实现了特定功能,验证是否满足软件生命周期过程中的标准和约定,判断每个软件生命周期活动是否完成。

Validation(确认):保证所生产的软件可追溯到用户需求,确认过程是否满足系统需求,并解决了相应问题。

W模型遵循了测试原则,要求测试活动从用户需求介入,强调了被测对象不仅仅是程序、需求、设计以及每个阶段输出文档同样需要测试,测试与开发是同步进行的。局限性:在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束后,才可正式开始下一阶段工作,无法支持迭代的开发模型。

3.H模型

软件测试学习系列一:测试基础

测试准备:包括测试需求分析、测试分析、测试计划、测试设计、测试用例、测试验证等;

测试执行:包括测试运行、测试报告、缺陷分析、回归测试等。

H模型,贯穿于整个产品的生命周期,与其他流程并发地进行。H模型中,软件测试活动是完成独立的,它将测试准备和测试执行分离,有利于资源调配,降低成本,提高测试效率,充分体现测试过程的复杂性。

 
 
 

相关文章: