软件测试第一章

软件测试基础知识

一、 软件测试的定义、目的、对象与分类

1. 定义

  • 软件测试是指使用人工或自动化的手段来运行或测试某个系统的过程,其目的在于检验系统能否满足规定需求或理清预期结果与实际结果间的差别。
  • 软件测试是为了尽快、尽早地发现在软件产品中所存在的各种软件缺陷而展开的贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程。

额外定义:

  • 软件测试是指为了发现错误而执行程序的过程。
  • 软件测试是指利用根据软件开发个阶段的规格说明或内部结构设计的测试用例来运行程序以及发现错误的过程。
  • 软件测试的根本目的是证明软件存在错误,而并非是证明软件没有错误。
  • 一个好的软件测试用例在于其可以发现至今未被发现的错误
  • 一个成功的软件测试工作也在于其可以发现至今未被发现的错误

2. 目的

  • 发现隐藏在软件中的错误或缺陷,并将其修复
  • 最大程度满足软件需求,提高用户满意度
  • 提升软件质量。

3. 对象
软件测试的对象包括:需求说明文档、概要设计文档、详细设计文档、程序数据、用户文档等。

软件测试包含程序测试,但不等于程序测试。

4. 分类
单元测试、集成测试、系统测试、验收测试、白盒测试、黑盒测试、灰盒测试、功能测试、性能测试、界面测试、易用性测试、兼容性测试、安全性测试、安装测试等。

二、 软件测试环境

1. 软件测试流程

  • 拟定计划
  • 设计与生成测试用例
  • 搭建环境
  • 实施
  • 评估
  • 总结

2. 测试环境概述
软件测试环境是指软件在测试流程中运行时所在的平台。
测试环境三要素硬件、软件、网络。

  • 一般情况下,软件应当在“最终用户环境”(用户实际运行软件时一定会或最有可能使用的环境)下进行测试。如果确实无法做到完全一致的话,可以考虑使用类型相同但性能略低的其他环境作为测试环境。

3. 测试环境搭建原则
搭建测试环境四要素

  • 真实
    项目软件与产品软件所需的测试环境有所不同,需要用不同的思维进行分析。
  • 干净
    测试环境中没有其他占用资源的应用程序。
  • 独立
    开发环境与测试环境应当是相互独立的。独立环境可以避免在开发环境下执行的操作误删改用于测试软件的特殊数据,避免发生冲突。
  • 无毒
    测试环境中没有病毒。

三、 软件测试的时间、信息流程与周期性

1. 软件生命周期
计划、需求、设计、编码、测试、运行、维护、淘汰。

2. 软件测试时间
软件在需求、设计、编码、测试直至交付用户使用的过程中都有可能产生错误或缺陷。随着开发时间的推移,修复缺陷或错误所需的代价将会呈几何级数增长。
因此,软件测试应当尽早开展,从软件需求阶段就开始介入测试,覆盖整个生命周期。

3. 测试信息流程
在这里插入图片描述
测试流程中需要三类输入:

  • 软件配置
    准备好被测试的软件、需求规格文档、设计规格文档、源代码等。
  • 测试配置
    准备好测试环境、计划、用例等。
  • 测试工具
    如果需要执行自动化测试的话,准备好数据生成、静态分析、动态分析、结果分析、测试驱动数据库等工具。

4. 软件测试周期性
软件测试的周期性是指测试、修复、回归测试、再修复这样的一个循环过程。一般分为以下两种:串行测试(使用最广)和并行测试(效率最高)。

四、 软件测试的停止依据

1. 推荐依据

  • 超过了测试的预定时间即停止测试。
  • 所有测试用例执行完毕但未发现错误或缺陷即停止测试。
  • 直接指出停止测试的具体要求,例如发现xx数量的故障或缺陷后即停止测试。

2. 推荐标准

  • 缺陷修复率标准
    高严重性错误或缺陷修复率达到100%
    中等严重性错误或修复率达到80%以上
    低严重性错误或缺陷修复率达到60%以上
  • 覆盖率标准
    语句覆盖率达到80%以上
    测试用例执行覆盖率达到100%
    测试需求执行覆盖率达到100%

五、 软件测试的原则

1. 基本原则

  • 软件测试应当越早开展越好。
  • 执行软件测试前,应当准备好测试用例,也就是测试数据与对应预期结果二者的组合。
  • 测试数据应当包含合理输入条件与不合理输入条件
  • 程序提交测试后,应当由专门的测试工程师进行测试。
  • 应当严格执行软件测试计划,尽量排除测试的随意性。
  • 应当全面检查软件测试用例的所有预期结果。
  • 应当充分注意软件测试中的群体现象

群体现象:指的是80%的软件错误与缺陷会集中在20%的程序模块中,错误与缺陷一般会扎堆出现。

  • 应当将软件测试的计划、用例、错误统计、分析报告等数据全部进行存档,便于日后进行软件维护。

2. 补充原则

  • 软件的错误与缺陷会随着测试工作的进展而逐渐减少,但是需要花费的资金也会逐渐增加。一般情况下,完全要求软件没有任何的错误与缺陷是没有必要的,应当选择资金花费与剩余错误、缺陷数量相平衡的“Good Enough”位置终止测试。
  • 软件的错误与缺陷具有免疫性。

免疫性:每修改3-5个错误或缺陷,就会引入1个新的错误或缺陷。

六、 软件测试模型

1. V模型

  • V模型是最具代表意义的测试模型。是软件开发中常用的“瀑布模型”的变种,可以用于反映测试活动与需求设计分析之间的关系。V模型从左到右分别描述了基本的开发过程与测试流程,明确的表示了测试流程存在不同的级别,清楚地描述了各阶段测试流程与开发过程之间的对应关系。
    在这里插入图片描述
    • V模型的局限性
      测试工作只能在编码完成后才能开展,不能做到测试与开发工作并行,测试工作过于落后。
    • V模型的改进
      V模型 + 各阶段同步开展测试工作 = W模型

2. W模型

  • W模型是V模型的自然发展。W模型强调了“软件测试流程应当伴随完整的软件开发过程同步进行”,同时也指明了软件测试的对象不仅仅是程序本身,还包含着软件的需求、功能与设计部分。
    在这里插入图片描述
  • W模型的局限性
    W模型仍然是线性流程,缺少迭代。前一项测试工作结束前,无法提前执行下一项。

3. H模型
H模型强调了软件测试是一个独立的流程,应当尽早准备、尽早执行。同时也指明了软件测试是根据被测对象的不同而分层次执行的,不同层次的测试流程可以按照某个次序先后进行,也可以反复执行。H模型在相应条件具备时,可以直接开展测试工作,没有严格或线性的执行顺序。
在这里插入图片描述

七、 软件质量的概念、范围与标准

1. 概念
软件质量是指软件符合文档或用户明确描述的功能、性能需求与开发标准,以及专业软件应当具备的隐含特征的程度。

软件质量可以反映以下三方面的问题:软件需求、开发标准和隐形需求。

2. 范围

软件质量的评定范围可以用“3A”表示:

  • Accountability(可说明性):用户可以基于软件的描述或定义进行使用。
  • Availability(有效性):软件对于绝大多数用户来说总是有效的。
  • Accessibility(易用性):软件容易使用、功能非常有用。

以用户的角度评定软件质量,主要有以下几点:

  • 软件是否具有所需功能
  • 软件可靠程度如何
  • 软件效率如何
  • 软件的使用是否方便
  • 软件的环境开放程度如何

以开发者的角度判定软件质量,主要有以下几点:

  • 软件是否易于维护
  • 软件是否易于移植
  • 软件是否易于重用
  • 软件是否易于测试

3. 标准
软件质量标准指的是评价软件质量好坏的准则。

  • 产品质量标准:对最终软件产品的质量把控。
  • 过程质量标准:对软件开发过程的质量把控。

八、软件测试的流程

  • 拟定软件测试计划
    拟定软件测试计划是软件测试工作的第一步,本阶段主要是对即将开展的测试工作进行整体的安排(如资金、资源、人员分配、准备测试用例等)。

  • 测试设计与开发
    分析测试需求,设计测试用例,准备测试数据,开发测试代码,搭建测试环境。

  • 实施软件测试
    实施软件测试的过程主要分为以下三个阶段:
    初测期:测试主要功能与关键执行路径,排除主要障碍。
    细测期:根据测试计划与测试用例,逐一测试所有功能、特性、性能、兼容性、可用性等测试点。
    回归测试期:软件已经区域稳定,在测试过程中可用发现行的错误与缺陷已经非常有限。此时应当复查已知错误与缺陷的纠正情况,确认未引入新的缺陷时即可终止回归测试。

    在执行测试用例的过程中,如果发现了错误和缺陷,应当记录并提交缺陷报告。

  • 测试评估与总结
    评估软件产品质量、评估测试人员工作情况。总结测试情况,编写软件测试报告。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值