【软件测试基础】软件测试的分类

1.按测试手段来分类

  • 对象的可见度:黑盒测试、白盒测试
  • 状态:静态测试、动态测试
  • 执行方式:手工测试和自动化测试

2.黑盒测试

  • 在测试中,完全不考虑程序内部结构和内部特性的情况下,通过相关暴露出来的接口,来对程序进行测试。
  • 只检查程序的功能是否能按照需求规格说明的规定正常使用。
  • 程序是否能适当地接收输入数据,并产生正确的输出信息。
  • 着眼于程序的外部结构,不考虑内部的逻辑。
  • 一般来说,针对软件外部的界面或者可见的功能来进行测试。
  • 是从用户的视角,通过不同的数据和事件来驱动系统。并通过输出结果来进行判断。

 

黑盒测试的优缺点:

优点

  • 容易实施,不需要关注内部的实现
  • 更贴近用户的使用角度

 

缺点:

  • 测试覆盖率较低,一般只能覆盖到代码量的不到40%。
  • 针对黑盒的自动化测试,复用率较低,维护成本较高。(针对功能不适合做自动化测试,因为功能经常会变,特别是互联网产品)

 

黑盒测试主要测试什么?

  • 是否有不正确或遗漏的功能?
  • 在接口上,输入是否能正确的接受?能否输出正确的结果?
  • 是否有数据结构错误或外部信息(例如数据文件)访问错误?
  • 性能上是否能够满足要求?

 

黑盒测试的主要设计方法:

  • 等价类划分法:所有输入中等价的划分为一类,从而形成若干典型的,代表性的输入。
  • 边界值分析法:开区间、闭区间,边界的值。因为开发人员在处理边界值时,容易出现问题。
  • 错误推测法:基于经验或直觉来判断程序中可能出现错误的地方,从而有针对性地设计测试用例。比如界面输入时,考虑特殊字符的处理;处理文件时,考虑文件不存在、文件超大这些特殊的情况。
  • 因果图法:根据需求规格说明书,针对每种输入和输出,在因果图中,会把输入和输出看作原因和结果,对输入和输出赋以特定的标识符,然后将这些情况叫做因果图。根据规格语义的说明,形成一个判定表。根据判定表,来编写测试用例。
  • 正交试验分析法:通过正交性,从一组数据中筛选出典型的、代表性数据的设计方法。主要用于筛选输入数据,然后再来设计测试用例。
  • 状态迁移图法:通过梳理软件功能点里的状态迁移关系,来设计测试用例。所谓状态迁移,比如软件有一个审批的功能,提交审批到待审批状态,到审批后通过或退回这些状态。通过状态画出之间关系变迁的一个关系图。
  • 流程分析法:梳理程序的逻辑执行的路径来设计测试用例。

 

3.白盒测试

白盒测试:测试人员对于内部结构是非常了解的。逻辑结构对测试人员是透明的。所以白盒测试又称为结构化测试和透明盒测试。白盒测试是针对程序的逻辑结构来设计测试用例。用逻辑的覆盖率来测试程序的完整性。

主要的逻辑单位:

语句、条件、条件组合、分支、路径

不同的逻辑单位有不同的覆盖方法。

  • 语句覆盖:测试用例设计出来,执行以后会保证每条语句至少执行一次。
  • 判定覆盖:每条分支至少执行一次,也称分支覆盖。
  • 条件覆盖:覆盖到条件的表达式,所有的表达式都至少计算一次。
  • 条件组合覆盖:覆盖所有不同条件的组合情况。
  • 路径覆盖:每一条可能的路径至少执行一次。

白盒测试的优缺点:

优点

  • 迫使测试人员去仔细思考软件的实现,理解原理。
  • 可以检测代码中的每条分支和路径。
  • 提示隐藏在代码中的错误。
  • 对代码的测试比较彻底。

缺点

  • 昂贵。因为白盒测试需要做到较高的覆盖率,所以成本高。
  • 无法检测代码中遗漏的路径和数据敏感性错误。
  • 不能直接验证需求的正确性。

白盒测试的主要测试方法

代码检测法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法

  • 代码检测法:包括桌面检查、代码审查和走查,主要检查代码和设计的一致性,对代码本身进行检查。
  • 静态结构分析法:测试者通过使用测试工具,来分析源代码的系统结构、数据结构、内部的控制逻辑。通过这样的内部结构的分析,来设计测试用例。
  • 静态质量度量法:根据标准的质量模型,比如ISO的质量标准,来作为基础,然后来构造质量的度量模型,用于评估软件的各个方面的要素。
  • 逻辑覆盖法:语句覆盖、条件覆盖、条件组合覆盖、分支覆盖、判定覆盖、路径覆盖、条件和判定的组合覆盖,这6种逻辑覆盖的方法来对代码进行逻辑覆盖。
  • 基本路径测试法:在程序控制流图的基础上,通过分析控制构造的圈复杂度,导出基本可执行路径的集合,进而设计测试用例的方法。程序控制流图,描述程序控制流的一种图示的方法。

 

4.灰盒测试

介于黑盒、白盒测试之间的一种测试,关注输出对于输入的正确性,同时也关注内部表现。更多的是在系统组件这一层评价系统的设计符合需求的情况。

5.静态测试

定义:静态测试是指无须执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合变成标准,借以发现编写的程序的不足之处,减少错误出现的概率。

  • 方式:互审、走查、会议
  • 互审:程序员相互检查对方的代码
  • 走查:一个小组集体来走查程序或文档
  • 会议:召开一个正式的会议,并有相应的记录、纪要、相应结果的文档。

从互审到会议,是从不正式到正式这样一个区别。

6.动态测试

定义:动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等。

7.手工测试

定义:有专门的测试人员从用户视角来验证软件是否满足设计要求的行为。更适用针对深度的测试和强调主观判断的测试。

众包测试、探索式测试都是用手工测试来做的。

8.自动化测试

定义:使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。

强调使用第三方的测试工具来控制我们测试自动地执行,还要对预期和结果进行一个检查。

单元测试、接口测试、 性能测试等

9.手工测试vs自动化测试

手工测试

  • 易发现缺陷
  • 容易实施
  • 创造性、灵活性
  • 覆盖量化难
  • 重复测试效率低
  • 不一致性、可靠性低
  • 人力资源依赖

自动化测试

  • 高效率、速度快
  • 高复用性
  • 覆盖率容易度量
  • 准确、可靠
  • 不知疲劳
  • 机械、发现缺陷率低
  • 一次性投入较大

转自:https://www.cnblogs.com/sophia194910/p/6424968.html

猜你喜欢

转载自blog.csdn.net/lb838315586/article/details/84987187