软件测试与质量管理概述:方法、过程与质量

一、测试基础

1.1 软件测试的定义

定义: 软件测试是通过人工或自动化手段运行或直接观察软件的过程,目的是为了检验软件是否满足用户需求,或者找出软件和需求之间的差距。

除了满足需求这一根本目标,软件测试还包含以下三个目的:

  1. 证明:
    软件测试无法保证软件中没有任何错误,不能证明软件没有缺陷。

  2. 检验:
    软件测试不仅要发现错误,还包括可以优化的缺陷。缺陷是一个更广泛的概念,涵盖了错误及可优化的部分。

  3. 预防:
    通过早期测试和修复,避免问题在后期被放大,从而降低损失。测试还能帮助发现问题根源,进行改进,避免同类问题再次发生。

1.2 软件的生命周期

以瀑布模型为例,软件生命周期包括以下阶段:

  1. 计划阶段:

    • 提出总体目标与规划。
    • 进行可行性论证。
    • 制定项目计划。
  2. 需求分析阶段:

    • 调研市场趋势,与用户沟通以掌握需求。
    • 编写软件需求说明书(SRS)。
  3. 设计阶段: 设计阶段分为概要设计详细设计

    • 概要设计:
      构建系统的高层架构,确保合理性与技术可行性。

    • 详细设计:
      提供足够的技术细节,指导开发人员进行编码。

  4. 编码阶段:

    • 开发人员根据设计文档编写代码,完成软件的具体实现。
  5. 测试阶段:
    • 单元测试:
      验证系统中最小的功能单元是否按预期运行,发现并修复局部错误。

    • 集成测试:
      测试模块之间的接口与交互,确保系统各部分的正确集成。

    • 系统测试:
      验证整个系统是否符合需求规范,确保功能和性能达到标准。

    • 验收测试:
      确保系统符合客户或用户的要求,包括用户验收测试(UAT)和业务验收测试(BAT)。 

     6. 运行和维护阶段:

                运行:
                系统交付用户使用后,产品进入实际运行阶段。在此期间,用户会根据使用情况提出改                  进意见或发现新的问题。

                维护:
                产品研发团队根据用户反馈进行改进或修复,并将改进后的版本再次交付用户使用。

               生命周期结束:
               当产品的改进和维护完成后,并不再有新的需求时,该产品的生命周期结束。

二、测试方法

           一些常用的测试方法:     

  • 黑盒测试(Black-box Testing)

    • 基于系统的外部行为进行测试,不关注内部实现。测试人员通过输入和输出的比较,判断系统是否符合预期功能。主要关注功能性、可用性和用户体验。
    • 常见技术包括等价类划分、边界值分析、决策表测试等。
  • 白盒测试(White-box Testing)

    • 也称为结构化测试,基于代码的内部结构和实现来进行测试。测试人员通过覆盖路径、分支、条件等代码部分来设计测试用例。
    • 常见技术包括路径测试、语句覆盖、分支覆盖等。
  • 灰盒测试(Gray-box Testing)

    • 结合了黑盒和白盒测试的特点。测试人员对系统内部有部分了解,既关注外部行为,也评估系统的内部工作原理。
    • 适用于集成测试和安全性测试等场景。
  • 静态测试(Static Testing)

    • 不执行代码,通过检查和分析代码、文档、设计等静态资源来发现潜在的问题。它能在开发早期发现问题,帮助优化设计。
    • 静态测试包括代码审查、静态代码分析、文档审查等。
  • 动态测试(Dynamic Testing)

    • 在软件运行时进行的测试,主要通过输入和输出的比较来验证系统的实际行为。测试依赖于代码执行,评估系统在运行时的功能性和性能。
    • 动态测试包括单元测试、集成测试、系统测试等。
  • 手工测试(Manual Testing)

    • 由测试人员手动执行测试用例,检查系统的功能是否符合预期。手工测试适合小规模项目或特殊场景下的验证。
    • 常用于用户界面测试、可用性测试和探索性测试。
  • 自动化测试(Automated Testing)

    • 使用自动化工具执行预先编写的测试脚本,以提高测试效率和覆盖率。自动化测试适合重复性高、稳定性强的测试场景,如回归测试和性能测试。
    • 常见工具有Selenium、JUnit、TestNG等。
  • 回归测试(Regression Testing)

    • 确保在修改或修复Bug后,系统的其他部分仍然正常工作。通过重新执行以前的测试用例,确保新代码的引入没有破坏现有功能。
  • 性能测试(Performance Testing)

    • 评估系统在高负载、压力或并发条件下的响应能力,确保系统在不同情况下都能高效运行。包括负载测试、压力测试、容量测试等。
    • 测试重点是响应时间、资源使用、吞吐量等性能指标。
  • 安全性测试(Security Testing)

    • 检查系统的安全性,发现潜在的安全漏洞,确保系统能够抵御恶意攻击和保护数据的机密性、完整性和可用性。
    • 包括渗透测试、漏洞扫描、身份验证测试等。

三、测试过程

1. 回归测试

定义:
回归测试是指在产品修改后,为确保修改正确且未影响其他部分的再次测试。

回归测试的目的

  1. 检验产品的修改是否正确。
  2. 确保未修改的部分没有受到影响。

回归测试的策略

  1. 完全重复回归测试
    无论修改了哪些内容,所有功能都重新测试。

  2. 选择性回归测试

    • 覆盖修改法
      仅测试修改的内容,其他部分不做测试。
    • 周边影响法
      测试修改的内容,并分析可能受影响的区域,确保相关功能正常。
    • 指标达成法
      根据设定的回归测试指标,挑选特定的部分进行测试。

2. 测试模型

  1. 瀑布模型:
    瀑布模型将测试过程划分为多个阶段:单元测试、集成测试、系统测试、验收测试,按照顺序执行,展示了测试分阶段进行的特点。

  2. V模型:
    V模型展示了测试阶段与开发阶段的对应关系:

    • 单元测试与详细设计相对应
    • 集成测试与概要设计相对应
    • 系统测试与需求分析相对应
      它强调了测试活动与开发活动之间的紧密联系。
  3. H模型:
    H模型揭示了开发与测试并行进行的特性,测试分为前期准备与后期执行两部分,且测试执行时间点由开发进度决定。

  4. 双V模型
    双V模型结合了V模型与H模型的特点,强调测试的准备与执行相分离,并进一步细分为单元测试、集成测试和系统测试的准备与执行阶段。它还体现了测试与开发的对应关系,越早准备,越晚执行。

3.测试的4个活动

1. 测试计划活动
  • 制定测试计划
    • 4W
      • Who:规划测试团队,明确人员职责。
      • Where:确定测试的环境和地点。
      • When:制定测试的时间安排。
      • What:明确测试范围、排列计划。
    • 测试计划文档:由测试组长编写,包含上述各项内容。
2. 测试设计活动
  • 制定测试方案
    • How
      • 设计如何实施每个任务。
      • 搭建测试环境。
      • 分析业务、设计测试用例。
      • 准备测试数据。
      • 执行测试、记录结果。
      • 编写和管理缺陷报告。
      • 进行回归测试。
      • 编写测试报告和总结。
    • 编写人:主要是测试组长。
3. 测试实现活动
  • 编写和评审测试用例
    • 测试用例:技术文档,用于指导测试执行人员操作软件和检查结果的正确性。
    • 编写原因:确保测试的系统性和可重复性。
    • 评审测试需求:由开发人员对测试组进行业务培训。
    • 设计测试项:使用思维导图工具进行业务分析。
    • 评审思维导图:确保测试项的完整性和正确性。
    • 设计测试用例:采用适当的设计方法。
    • 评审用例:确保用例的有效性。
    • 自动化测试(如有需求):选择工具、编写和评审脚本。
  • 编写和审核测试规程
4. 测试执行活动
  • 搭建测试环境
    • 服务器端环境:大部分情况下由开发或发布人员搭建,少数情况由测试人员搭建。
    • 客户端环境:由测试人员自行安装。
    • 环境分类:开发环境(包含开发工具)、运行环境(真实环境、仿真环境)、主测试环境和辅助测试环境。
  • 准备测试数据
    • 初始化数据:通常由开发人员导入数据库。
    • 后期数据:由测试人员自行完成,涉及数据库技能。
    • 数据方法
      • 生成:使用软件或工具生成的测试数据。
      • 构造:人为创建的测试数据,优点是方便快捷,但构造不正确可能引入缺陷。
  • 执行预测试
    • 冒烟测试:运行主流程,初步检验软件是否能用。
  • 全面测试
    • 记录测试结果。
    • 发现缺陷后填写缺陷报告。
    • 分析、定位、修复缺陷。
    • 回归测试。
    • 达到测试通过标准后,总结测试并编写测试报告。

四、软件质量

1 质量的定义

质量是指实体基于其特性满足需求的程度。实体可以是任何客观存在的事物,包括具体的物品、人物、服务、组织,或这四者的组合。

  • 实体:可被感知、分析、使用和需要,具有众多特性。使用者对实体的需求和使用是基于这些特性。
  • 质量:实体特性满足需求的程度,即实体的质量表现了这些特性满足需求的程度。
质量的层次
  1. 满足需求规格的要求

    • 指软件或其他实体满足需求说明书中的最低标准要求。这是质量的基本层次。
  2. 满足用户显性需求

    • 软件或实体满足用户明确表达的需求。
  3. 满足用户实际需求

    • 隐性需求:用户未明确提出但仍然需要的需求。
      • 原因
        • 用户觉得理所当然,没有主动提出。
        • 用户缺乏提出该需求的专业技能。
    • 潜在需求:用户需要但已放弃的需求。
质量铁三角
  • 组织

  • 技术

  • 流程

    核心:人。质量管理的核心是人的管理,没有最先进或最好的方法,只有最适合的。

2质量管理阶段

  1. 质量检查

    • 通过对产品或过程进行审查,确保其符合预定的质量标准和规范。包括检验和测试,以发现和纠正不符合项。
  2. 质量统计

    • 利用统计方法收集、分析和解释数据,以评估和改进质量。这包括监控生产过程中的变化、确定问题的根本原因,并采取纠正措施。
  3. 全面质量管理(TQM)

    • 一种全面的管理方法,旨在通过全员参与和持续改进来提升组织的质量和效能。TQM 强调从领导层到基层员工的全员参与和质量控制。

3.质量认证体系

  1. ISO 9000

    • 一系列关于质量管理体系的国际标准,提供了建立、实施和维持质量管理体系的指导方针和要求。ISO 9000 主要关注于确保产品和服务的一致性及满足顾客需求。
  2. 6Sigma

    • 一种数据驱动的方法,通过识别和消除缺陷和变异来提高过程的质量和效率。6Sigma 的目标是将缺陷率降到每百万机会中的 3.4 次以下。
  3. CMMI(Capability Maturity Model Integration)

    • 全称:能力成熟度模型集成。
    • 模型类型
      • 阶梯式
        • CMMI 分为 5 个等级
          1. 完成级(Initial):基本的项目管理流程。
          2. 已管理级(Managed):过程规范化,项目和过程的管理。
          3. 已定义级(Defined):过程在组织内得到标准化和文档化。
          4. 量化管理级(Quantitatively Managed):过程的量化管理和数据驱动的决策。
          5. 优化级(Optimizing):持续改进和优化过程。
      • 连续式
        • 不同的过程域(如需求管理、项目管理、工程管理)可以有不同的成熟度级别。

4.ISO 25010 质量模型

ISO 25010 是一个软件产品质量模型,定义了质量特性和子特性,以帮助评估软件产品的质量。该模型包括 8 大特性和 31 个子特性:

1. 功能性
  • 定义:产品在指定条件下,满足用户需求的可使用行为能力的程度。
  • 子特性
    • 完整性:产品满足用户所有需要的可使用行为能力的程度。
    • 正确性:产品准确达到用户所有需要的可使用行为能力的程度。
    • 适合性:产品满足规定目标用户群体所需要的可使用行为能力的程度。
2. 效率
  • 定义:产品在使用功能时资源消耗和时间利用方面的表现。
  • 子特性
    • 时间特性:产品在规定时间内执行任务的能力。
    • 资源特性:产品在使用功能时消耗的资源量。
    • 容量特性:产品满足用户使用功能时容纳负载的能力。
3. 可靠性
  • 定义:产品在规定条件下执行其功能的能力,具体内容未在此描述。
4. 兼容性
  • 定义:产品在运行环境中与其他要素正常运行、相互联系交互的能力。
  • 子特性
    • 共存性:产品在运行环境中与其他要素共同存在且互不干涉的能力。
    • 互操作性:产品与环境中其他要素之间的联系和信息交互能力。
5. 安全性
  • 定义:产品保护信息和数据不被未经授权访问或损坏的能力,具体内容未在此描述。
6. 易用性
  • 定义:产品满足用户对使用方便性的要求。
  • 子特性
    • 可识别性:产品具有鲜明的特点,便于用户发现其满足需求的程度。
    • 易学性:用户学习如何使用产品的难易程度。
    • 易操作性:用户操作产品的难易程度。
    • 防错性:产品防止用户错误操作的能力。
    • 美观性:产品外观设计的吸引力。
    • 可访问性:产品方便用户访问和使用功能的程度。
7. 可维护性
  • 定义:产品满足用户对易于修改的要求。
  • 子特性
    • 模块化:产品可分为若干相对独立的模块,以便于修改时不影响其他模块的程度。
    • 可重用性:产品组件在多个系统中使用的程度。
    • 易于分析:分析产品问题的难易程度。
    • 易于修改:修改产品的难易程度。
    • 易于测试:测试产品的难易程度。
8. 可移植性
  • 定义:产品从一个环境有效转移到另一个环境的能力。
  • 子特性
    • 环境适应性:产品适应不同环境的能力。
    • 易安装性:产品易于安装、升级和卸载的效率。
    • 易替换性:产品替换其他产品的能力。

你可能感兴趣的:(单元测试,压力测试,功能测试)