zoukankan      html  css  js  c++  java
  • 软件测试基础

    软件测试基础知识

    1. 什么是软件测试?

      业界存在的两种定义:证“实”和证“伪”。软件测试就是证明软件不存在错误的过程。-证“实”;软件测试是为了发现软件中错误而执行程序的过程。-证“伪”。

      软件测试是在软件投入正式运行前对需求分析、设计和编码的结果进行复查的活动;根据需求、设计文档、代码、经验等精心设计一批用例,利用这些测试用例去运行程序,并发现程序错误的过程。

    2. 软件测试的对象是什么?

      软件测试不仅仅局限于软件程序的测试,测试活动贯穿于软件开发过程的整个周期中。因此,需求分析、概要设计、详细设计以及编码各阶段所得到的交付件,包括设计文档,源代码,应用程序乃至随软件版本发布的资料,都是软件测试的对象

    3. 软件测试的分类有哪些?

      按测试用例设计方法,软件测试分为白盒测试和黑盒测试。这是测试的方法。
      按测试策略和过程,软件测试分为单元测试,集成测试,确认测试和系统测试。这是测试策略和步骤。

    4. 什么是白盒测试?

      白盒测试是根据被测程序的内部结构设计测试用例的一种测试方法。也称结构测试、逻辑驱动测试或基于程序本身的测试。测试者了解待测试程序的内部结构、算法等信息,这是从程序设计者的角度对程序进行的测试。

    5. 白盒测试的常用方法是什么?

      采用白盒测试方法,业界比较成熟的方法有:程序控制流分析、数据流分析、逻辑覆盖、域测试、符号测试、路径测试、测试插装、程序变异等。其中最常用的是逻辑覆盖,逻辑覆盖测试是程序结构测试最常用的测试方法,常用的逻辑覆盖测试方法包括:

    •  语句覆盖:设计若干测试用例,运行被测程序,使得每一个可执行语句至少执行一次;
    •  判定覆盖:设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少执行一次;
    •  条件覆盖:设计若干测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次;
    •  判定-条件覆盖:设计足够的测试用例,使得判断中的每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次;
    •  路径覆盖:设计的测试用例要求覆盖程序所有可能的路径。

    我们开发的代码要保证语句100%覆盖,尽量做到判定100%覆盖。

    白盒测试具体说明链接:what's the 白盒测试

    6. 什么是黑盒测试?

      黑盒测试又称为功能测试、数据驱动测试或基于规格说明的测试。黑盒测试相对于白盒测试而言,并不关心被测对象的内部实现,而是针对被测对象提供的外部功能与规格出发来设计测试用例进行测试。

    7. 黑盒测试的常用方法是什么?

      等价类划分、边界值分析、错误推测、因果图、判定表、正交分析、功能图等。

      其中等价类划分是典型的黑盒测试设计方法,使用最普遍,可避免穷举法的缺点,基于某具体需求规格和特性测试规范,不用深入了解系统内部实现,对输入域划分的不同部分选取代表性的数据进行测试,在特性测试用例设计活动中,常与其他工程方法配合使用,如边界值方法等。

      边界值划分测试一般分为四步:第一步,确定输入的范围;第二步,确定范围的边界值;第三步:多个输入关系分析(可选步骤);第四步,生成测试用例。在划分时一般要找到几个“点”,根据域测试方法可以把测试域划分为上点、离点和内点:

    • 上点:边界上的点,如果域的边界是封闭的,上点就在域范围内;如果域的边界是开放的,上点就在域范围外。
    • 离点:就是离上点最近的一个点,如果域的边界是封闭的,离点就在域范围外,如果域的边界是开放的,离点就在域范围内
    • 内点:顾名思义,就是在域范围内的任意一个点。

    黑盒测试具体说明链接:what's the 黑盒测试

    8.什么是单元测试(UT, Unit Test)?

      单元测试是对软件基本组成单元进行的测试,单元测试主要关注每个具体单元模块内部的逻辑结构和功能是否正确,侧重于发现程序设计或实现的逻辑错误,基本属于白盒测试范畴。

      “单元”具有一些基本属性,如:明确的功能、规格定义,明确的与其他部分的接口定义等,可清晰地与同一程序的其他单元划分开来。如:函数、模块、类或者组件或函数为基本测试单元。

    9.什么是单元测试中的测试驱动和测试桩?

      单元本身不能独立运行,所以必须为每个单元测试开发驱动模块(Driver)和桩模块(Stub)以构成一个可运行的软件系统进行测试。

      驱动模块:是一个接收测试数据,并把数据传送给(被测试)模块,然后显示或比较相关结果的“主程序”;

      桩模块的功能是替代那些隶属于本模块(被调用)的模块,使被测对象得以运行。

    10.单元测试的目的是什么?

      软件测试目的在于发现错误,而单元测试时就不仅仅要检测代码的错误,而需要测试代码是否是根据详细设计进行的,因此我们认为单元测试的主要目的有:

    1. 发现设计和需求中存在的错误 ;
    2. 跟踪需求和设计的实现 ;
    3. 验证代码是否于设计相符合;
    4. 发现在编码过程中引入的错误。

    11.什么是集成测试(IT, Integrated Test)?

      集成测试是把若干个经过单元测试的组件/模块/单元组装到一起的测试,主要目的是测试模块之间的接口 ,以及被对象与系统其他部分的相互作用。

      集成测试主要依据是软件概要设计说明书,一般不过多的考虑集成测试对象(子模块)内部的实现,通过对模块功能、接口设计进行分析,覆盖所有的功能项目,重点的接口、重点的边界进行重点测试。

      根据被测对象的规模,集成测试有可分为:模块内集成测试、子系统内集成测试和子系统间集成测试。

      根据测试过程中组合模块的方式,集成测试可分为:

    • 非增式集成:又称一次性集成,对完成单元测试的所有模块在一起进行测试。
    • 增式集成:又称递增式集成,即逐次将未测试的模块与已测试的模块组合成较大的系统,在集成的过程中边连接边测试,以发现连接过程中产生的问题。

      根据集成的过程又可分为:自顶向下集成、自底向上集成和衍变式集成。

    集成测试介于单元测试和系统测试之间,测试方法介于也相应的单元测试方法(白盒测试)和系统测试方法(黑盒测试),即业界通用的灰盒测试方法。

    12.什么是系统测试(ST, System Test)?

      系统测试是针对软件项目组所承担开发的软件系统进行的整体测试,将软件系统作为整体运行或实施明确定义的软件行为子集的测试。主要采用的测试方法是黑盒测试,即不管程序内部的实现逻辑,以检验输入输出信息是否符合规格说明书中有关需求规定的测试方法。

                   

  • 相关阅读:
    在SQLite中使用索引优化查询速度
    SQLite支持的SQL数据操作
    left (outer) join , right (outer) join, full (outer) join, (inner) join, cross join 区别
    深入理解Android内存管理原理(六)
    Merge Sorted Array
    Sort Colors
    Construct Binary Tree from Preorder and Inorder Traversal
    Binary Tree Postorder Traversal
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/zhuminghui/p/10788528.html
Copyright © 2011-2022 走看看