软件测试概述

软件质量模型

image

功能性

含义: 当软件在指定条件下使用时,软件产品提供满足明确和隐含要求的功能的能力。

具体包含4方面:

  • 适合性:为指定的任务和用户目标提供一组合适的功能的能力
    具体体现在两方面:1、软件提供了用户所需要的功能 2、软件提供的功能是用户所需要的

  • 准确性:提供具有所需精度的正确或相符的结果或效果的能力
    (例如:运算结果的准确,数字发生偏差,多个0或少个0)

  • 互操作性:与一个或更多的规定 系统/软件 进行交互的能力与其他 系统/软件 交互
    (例如:PC机中WORD和打印机完成打印互通;接口调用)

  • 安全保密性:保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,而不拒绝授权人员或系统对它们的访问
    (主要是权限和密码)

可靠性

含义:软件产品维持规定的性能级别的能力。
具体包含3方面:

  • 成熟性:避免由软件中故障而导致失效的能力(主要是对内错误的隔离
  • 容错性:在软件出现故障或者违反指定接口的情况下,软件产品维持规定的性能级别的能力(主要是对外错误的隔离
  • 易恢复性:在失效发生的情况下,软件产品重建规定的性能级别并恢复受直接影响的数据的能力

易用性:

含义:产品被理解、学习、使用和吸引用户的能力。

具体包含4方面:吸引易理解、易学易操作

  • 易理解性:使用户能理解软件是否合适以及如何能将软件用于特定的任务和使用条件的能力
  • 易学性:使用户能学会其应用的能力
  • 易操作性:使用户能操作和控制的能力
  • 吸引性:吸引用户的能力

效率:

含义:相对于所用资源的数量,软件产品可提供适当性能的能力。(服务器端的特性
(主要出现在海量并发用户时表现的特征)

具体包含2方面:

  • 时间特性:执行功能时,提供适当的响应和处理时间以及吞吐率的能力
  • 资源利用性:执行功能时,使用合适数量和类别的资源的能力

维护性

含义: 可被修改的能力。修改可能包括纠正、改进或软件对环境、需求和功能规格说明变化的适应。

具体包含4方面:稳定、易分析、易测试、易改变

  • 易分析性:可被诊断自身的缺陷/失效原因或标识其待修改部分的能力

  • 稳定性:避免因软件修改而造成意外结果的能力

  • 易测试性:使已修改的软件能被确认的能力

  • 易改变性:使指定的修改可以被实现的能力

可移植性

含义: 从一种环境转移到另一种环境的能力。

具体包含4方面:适应易安装、共存易替换

  • 适应性:无须采用额外的活动或手段就可适应不同的指定环境的能力
  • 易安装性:在指定环境中被安装的能力
  • 共存性(兼容性):在公共环境中同与其分享公共资源的其他软件共存的能力
  • 易替换性:在同样环境下,替代另一个相同用途的指定软件产品的能力

2. 软件质量模型—新的ISO/IEC 9126

分为三类:
image

  1. 内部质量:程序员角度
  2. 外部质量:测试人员角度
  3. 使用质量:最终用户角度

主要变化是:在使用质量角度增加了满意程度

软件测试分类

image
注: 所有的分类之间相互独立,可以相互组合(笛卡尔积)

按测试执行方式

  • 静态测试:不需要执行所测试的程序,查询代码是否符合规范,对程序的数据流和控制流进行分析
  • 动态测试:选择实际测试用例运行所测试程序,模拟用户输入

按测试对象

  • 黑盒测试:行为测试、功能测试、基于需求的测试、数据驱动测试
  • 白盒测试:结构测试、基于代码的测试、逻辑驱动测试
  • 灰盒测试

软件测试技术
image

按测试过程
image

测试过程 测试角度 测试目的 测试方法
单元测试 开发人员 发现模块内部的软件缺陷 白盒测试为主
集成测试 测试人员 发现模块之间接口的软件缺陷 黑盒测试+白盒测试
系统测试 测试人员 验证系统是否满足用户各项需求 黑盒测试
验收测试 最终用户 验证系统是否满足交付要求 黑盒测试

  • 测试范围:逐渐增大
  • 测试视角:从代码到使用

按测试目的
image

按测试执行手段

  • 自动化测试
  • 手工测试
测试执行手段 优点 缺点
手工测试 ① 执行测试成本较低
② 人工比对更具智能化
① 执行效率低、精确度无法保证
② 不可复用
自动化测试 ① 执行测试快速、可靠
② 支持反复测试、可程序化
③ 支持人工无法胜任的测试类型,如性能测试、安全性测试等
① 商业软件普遍成本偏高,不适用于中小型企业
② 精确依照测试脚本的指令执行,不够灵活、智能

image

软件测试过程模型

1. V模型

image

  • 两大贡献:
    1.四个测试过程:单元测试\(\to\) 集成测试\(\to\) 系统测试\(\to\)验收测试
    2.引入了测试:先开发后测试,开发\(\to\)测试

  • 两大缺点(局限性)(和瀑布模式一样):
    1.软件=程序
    2.线性

2. W模型

W模型由两个V字型模型组成,分别代表测试与开发过程
image
两大机制:

  • 增加对每个阶段的验证和确认
  • 对测试进行了 提前准备

注: W模型解决了 V模型的 软件=程序 的缺陷。

验证和确认 V&V

  1. 验证Verification:过程正确性,确保选择的工作产品符合它们的给定需求。对比上阶段产物
  2. 确定Validation:结果正确性(有最终用户的参与),展示产品或产品组件能够在其预期的环境中满足其预期的应用。对比最终用户需求

W模型强调
测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的

3. H模型

只要测试条件成熟了,测试准备活动完成了,测试执行活动便可以随时随地进行
image

  • H模型将测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来
  • H模型揭示了软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行

优点: 将w模型抽象成了相同的过程
缺点: 太抽象,不知道各个过程的工作。(因此需要软件测试的生命周期)

软件测试生命周期

image

  1. 根据需求制定测试计划、测试方案
  2. 测试用例设计、脚本编写,进行用例评审
  3. 执行测试并提交Bug,验证Bug
  4. 测试分析与总结
  5. 版本发布

  • 除了测试需求,其余都可以迭代
  • 测试需求除非用户需求发生变化,其余不得变化

软件测试过程中的活动及内容

1.测试准备活动

  • 测试项目启动-确定项目组长,进行项目的前期准备(参加会议、获取文档等)

  • 测试需求分析-以软件开发需求为基础进行分析,通过细化分解,形成可测试的内容

  • 制定测试计划-确定测试范围、测试策略和方法,以及对风险、日程表、资源等进行分析和评估

  • 测试设计和测试开发-制定测试的技术方案、设计测试用例、选择测试工具、编写测试脚本,并进行评审

2.测试执行活动

  • 测试实施和执行-建立或设置相关的测试环境,准备测试数据,执行测试用例,报告、分析和跟踪发现的缺陷

3.审查与分析

  • 测试结果审查和分析-分析测试结果,确定产品质量,提供发布依据

(1) 测试项目启动

image

(2) 软件测试需求分析

重要性

  • 进行测试计划等准备工作的前提
  • 完成测试任务、保证测试质量和进度的基础
  • 开发测试用例的依据

原则

  • 测试需求项可核实
  • 测试需求指明正常和异常的输入条件
  • 测试需求不涉及具体的测试数据

image

(3) 软件测试计划制定

测试计划要点 5W1H:

  • What:内容、原因(测试范围的界定)
  • Why:测试目的(测试目标)
  • When:安排进度
  • Where:分配测试资源
  • Who:分配测试人员
  • How:(简单的/宏观的)测试策略

(4-1) 软件测试设计⭐

测试过程设计

  1. 测试内容——如何展开?测试类型?
  2. 测试顺序——功能→性能→可靠性→安全性

测试用例设计:测试输入数据 的定义 和 对预期测试结果 的描述

  • 类型纯数据型,文件型, 操作序列型(例:删除),程序型(构件库或API函数库)

(4-2) 软件测试开发

准备测试脚本
测试数据自动生成
测试流程自动化
测试准备和搭建测试环境

(5) 软件测试执行

  • 手工测试 按事先准备好的手工过程进行测试,测试者输入数据、观察输出、记录发现的问题
  • 自动化测试 启动测试工具,执行测试用例,并将结果记录在日志文件中

(6) 软件测试评估

测试结果的评估

  • 信息比较:将测试结果与期望输出进行比较
  • 通过各种量化方法,对测试的有效性及结果的可信性提供量化的依据
  • 覆盖评测:对测试完全程度的评测,包括基于需求的覆盖和基于代码-的覆盖
  • 质量评测:对测试软件的可靠性、稳定性以及性能的评测,建立在对测试结果的评估和对测试过程中确定的缺陷分析的基础上

发现错误数的统计
image

软件测试过程管理

image
image
测试结果的审查和分析 贯穿到其余所有阶段。

其各个阶段的使用的软件如下:
image

习题

  1. 某软件采用了向导模式,按步骤引导新用户快速熟悉产品和完成各项配置操作,主要目的是为了改善ISO/IEC 9126质量模型中的 质量特性。
    可维护性
    功能性
    可靠性
    可移植性
    效率
    易用性 (我的答案)

  2. 基于ISO/IEC 9126质量模型的定义,以下选项不属于描述易用性的质量子特性有 。
    易学性
    互操作性 (我的答案)
    易操作性
    易理解性
    测试详情

  3. ALM服务器在Win 7操作系统下安装不成功,该软件缺陷与ISO/IEC 9126质量模型中定义的哪个质量特性相关 。
    可靠性
    可维护性
    易用性
    可移植性 (答案)
    效率
    功能性

  4. 软件过程哪个阶段产生缺陷的数量最多 。
    运行维护阶段
    详细设计阶段
    编码阶段
    概要设计阶段
    需求分析阶段 (答案)

  5. 为了提高软件测试的效率,以下做法正确的是 。
    选取一切可能的输入数据作为测试用例
    随机选取测试用例
    在完成程序的编码之后再制定软件的测试计划
    选择易于暴露软件缺陷的数据作为测试用例 (答案)

  6. 经验表明,在程序设计中,某模块与其他模块相比,若该模块已发现并改正的错误数目较多,则该模块中残留的错误与其他模块相比,通常应该 。
    较少
    不确定
    相近
    较多 (答案)

  7. 在McCall质量模型中,不能反映软件承受修改能力的特性是 。
    可维护性
    可测试性
    可复用性 (答案)
    灵活性

  8. 从现代软件测试理论的角度出发,以下对软件测试目的的描述中,最不合理的是 。
    软件测试用于发现软件缺陷。
    软件测试用于证明程序运行正确。 (答案)
    软件测试用于度量和提高软件质量。
    软件测试用于验证系统实现与用户需求的一致性。

  9. 软件测试的对象包括 。
    源程序、目标程序、数据及相关文档 (答案)
    源程序和目标程序
    目标程序和相关文档
    目标程序、操作系统和平台软件

  10. 由于热键冲突,在打开金山词霸时,Excel的区域选择功能失效,该软件缺陷与ISO/IEC 9126质量模型中定义的哪个质量子特性相关 。
    易恢复性
    共存性 (答案)
    容错性
    互操作性

不定项选择题

  • 软件产生缺陷的原因包括 。
    代码编写不符合平台标准,文档撰写不规范或不完整。 (答案)
    客户需求时常发生变更,而后续文档没有及时更新。 (答案)
    开发人员之间交流不够或交流方式不当,造成信息传递误差。 (答案)
    程序员对文档理解有误,或技术不过关。 (答案)
    测试计划制定不够合理,导致项目进度过于紧张。 (答案)

  • 以下选项中对软件测试的理解错误的是 。
    软件测试的目的是发现缺陷,而调试的目的是定位和解决缺陷,两者代表了测试人员和开发人员的职责,有着本质的不同。
    软件测试是重复性的枯燥工作,不需要任何技术含量 (答案)
    软件测试过程中由测试人员发现并提交的所有缺陷,程序员都必须要修复。 (答案)
    以证明程序正确为目的的软件测试,会不自觉的挑选容易通过的测试数据,不利于软件缺陷的暴露。
    软件测试是软件工程的一个重要阶段,发生于代码编写完成之后,运行维护之前 (答案)

填空题

  • 在IEEE所提出的软件工程标准术语中,软件测试被定义为:"使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚 与 之间的差别"。其中前者代表了最终用户的需求,而后者代表了系统的实现。
    预期结果
    实际结果

  • 2001年在新的ISO/IEC 9126《产品质量-质量模型》中定义的软件质量包括3部分,其中反映在软件开发过程中软件质量特性的是 。
    内部质量

  • 是存在于软件之中的不希望出现或不可接受的偏差,导致软件在运行于某一特定条件时会被激活为 。
    软件缺陷
    软件故障

  • 某网上购物软件无法打开手机照相机,用以完成拍照识物功能,该软件缺陷与ISO/IEC 9126质量模型中定义的哪个质量子特性相关 。
    互操作性

单项选择题

  1. 不运行被测程序,仅通过分析或检查等其他手段达到检测目的的测试方法称为 。
    动态测试
    静态测试 (答案)
    手工测试
    白盒测试

  2. 以下选项中,不属于测试项目启动阶段执行的活动是 。
    获取需求规格说明书和项目开发计划
    参加需求评审会议
    进行项目估算和风险分析 (答案)
    组建测试小组

  3. 以下对测试需求的描述中,错误的是 。
    测试需求必须指明正常和异常的输入条件
    为了确保测试的顺利进行,测试需求一经团队评审,在测试期间不允许发生任何变更 (答案)
    测试需求描述为一般规则,不涉及具体的测试数据
    测试需求项必须有可观测的输出结果

  4. V模型描述了软件基本的开发过程和测试行为,描述了不同测试阶段与开发过程各阶段的对应关系。其中,集成测试对应的开发阶段是 。
    概要设计阶段 (答案)
    需求分析阶段
    编码阶段
    详细设计阶段

  5. 以下测试工具中,使用 可实现自动化的软件测试过程管理。
    Unified Functional Testing
    JUnit
    Application Lifecycle Management (答案)
    LoadRunner

  6. 在软件测试过程模型中, 将软件测试作为与开发过程并行进行的一个独立流程,贯穿于整个软件的生命周期中,并通过测试就绪点将测试准备活动和测试执行活动清晰的体现出来。
    H模型 (答案)
    W模型
    X模型
    V模型

  7. 以下选项不包括在软件测试计划中的有 。
    测试内容及用例 (答案)
    测试资源及进度安排
    测试范围及目标
    风险及应急措施

  8. ALM应用程序生命周期管理流程中用于完成测试用例设计的是 模块。
    计划测试 (答案)
    指定发布
    跟踪缺陷
    指定需求
    执行测试

  9. 需求分析与系统设计阶段完成后,测试人员需对需求规格说明书进行确认和验证,并为 阶段做准备工作。
    集成测试
    验收测试
    系统测试 (答案)
    单元测试

  10. 以下哪个测试过程是从开发人员角度开展测试的,关注底层代码,主要用于发现模块内部的软件缺陷 。
    单元测试 (答案)
    验收测试
    系统测试
    集成测试

  11. 以下关于手工测试和自动化测试的描述中错误的是 。
    人工比对更具智能化、更加灵活,因此手工测试在某些功能测试场景下测试效果更好
    用于验证高并发情况下系统负载能力的性能测试,只能采用自动化测试手段执行 (答案)
    自动化测试执行测试效率、精确度高、可复用,且能支持多种人工无法胜任的测试类型
    自动化测试精确依照测试脚本的指令执行,不够灵活、智能

  12. W模型提供了两大机制用于体现测试与开发的同步性。其中对于概要设计阶段的验证工作需完成概要设计说明书与 之间的验证和比对。
    需求规格说明书 (答案)
    最终用户需求
    系统使用说明书
    详细设计说明书

不定项选择题

  1. 对于某网上购物系统而言,测试人员通过LoadRunner进行负载测试,并分析该系统是否存在性能问题。则本次测试采用了以下哪些测试技术 。
    自动化测试 (答案)
    动态测试 (答案)
    手工测试
    静态测试

  2. H模型将测试活动分为测试准备和测试执行两部分,以下活动中只属于测试准备阶段的有 。
    测试需求分析 (答案)
    测试结果审查和分析
    测试设计和测试开发 (答案)
    测试项目启动 (答案)
    测试实施和执行
    制定测试计划 (答案)

填空题

  1. 相对于V模型,W模型在软件测试准备阶段增加了软件开发各个阶段中应同步进行的 和 活动(中文定义)。其中前者强调过程的正确性,后者强调结果的正确性。
    验证
    确认

  2. 按测试对象进行分类,软件测试可分为 和 ,其中前者又被称之为逻辑驱动测试。
    白盒测试
    黑盒测试

posted @ 2023-02-28 09:09  kingwzun  阅读(365)  评论(0编辑  收藏  举报