软件测试综述_第1页
软件测试综述_第2页
软件测试综述_第3页
软件测试综述_第4页
软件测试综述_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件测试方法综述 1 9 软件测试方法综述 摘要 软件测试是一个涉及开发周期各阶段的活动 不同阶段的测试目标各异 软件测试研究面临一系列的挑战 本文介绍了已有的方法 技术和模型 并指 出软件测试需要深入研究的关键技术 最后 总结并提出今后的发展方向 关键字 软件测试 测试模型 测试方法 研究方向 The Summary of Software Testing Methods Abstract Software testing is a matter of the activities which involve in all stages of software development different goals at different stages of testing The research of Software testing is facing a series of challenges It described the existing methods techniques and models and pointed out some key technology that requires in depth study It is proposed the future direction of development Keyword Software testing Test model Test Methods Research direction 软件测试方法综述 2 9 1 1 引言引言 软件测试在软件生存周期中占有重要的地位 是提高软件质量的有效途径之一 通过排除软件测试中发现的错误和缺陷 可以有效实现软件的可靠性增长 据 统计 在欧美的软件项目中 软件测试的工作量要占到总工作量的 40 软件 测试的费用要占到项目总经费的 30 特殊情况下 对性命攸关可靠性要求很 高的软件 其测试费用甚至高达所有其他软件工程阶段费用总和3 5 在微软 开发人员和测试人员的比例为1 1 5 在BORLAND公司 测试人员与开发人的比 例大概是1 1 比尔 盖茨曾经说过 人们都说我们是世界上最大的软件开发 公司 其实我们更是世界上最大的软件测试公司 软件测试并不单纯等同于程序测试 它应该贯穿整个软件定义与开发整个期间 因此需求分析 概要设计 详细设计以及程序编码等各阶段所得到的文档 包 括需求规格说明 概要设计规格说明 详细设计规格说明以及源程序 都应该 是软件测试 评审 的对象 在对需求理解与表达的正确性 设计与表达的正确 性 实现的正确性以及运行的正确性的验证中 任何一个环节发生了问题都可 能在软件测试中表现出来 2 2 软件测试基本概念软件测试基本概念 软件测试的定义 使用人工或自动的手段 来运行或测试某个系统的过程 其 目的在于检验它是否满足规定的需求或弄清与其结果与实际结果之间的差别 软件测试为了发现并指出软件系统缺陷即 bug 软件中的 Bug 指的是软件中 包括程序和文档 不符合用户需求的问题 我们测试一个软件的第一件事情 通常是搭建用来云慈宁宫软件的测试环境 简单的说 软件测试环境就是软件运行的平台 即软件 硬件和网络的集合 如下式所示 测试环境 软件 硬件 网络 搭建测试环境有如下几个要点 1 真实 尽量模拟用户的真实使用环境 2 干净 测试环境测试环境中尽量不要安装其他与北侧软件 无关的软件 3 无毒 测试环境没有中毒 4 独立 测试环境和开发环境独立 测试用例 英文为 Test Case 缩写 TC 值得是在测试执行之前设计的一套详 细的测试方案 包括测试环境 测试步骤 测试数据和预期结果 简单用一个等式表示 测试用例 输入 输出 测试环境 软件测试方法综述 3 9 期中 输入 包括测试数据和操作步骤 输出 指的是期望结果 测试环 境 指的是系统环境设置 编写测试用例时应注意 4W 即 why 为什么要编写测试用例 when 什么时候 写测试用例 who 有谁来写测试用例 what 根据什么写测试用例 3 3 软件测试分类软件测试分类 软件测试的目标在于以最少的时间和人力系统地找出软件中潜在的各种错误和 缺陷 所以如何测试的彻底 怎样设计测试用例是测试的关键所在 而软件测 试的方法是多种多样的 这些方法各有优缺点 适用于不同的场合 下面针对 各种测试方法及其优缺点作一下简要地介绍 可以从不同的角度加以分类 1 根据软件测试的阶段可以划分为单元测试 集成测试 系统测 试 验收测试 其中验收测试又可分为 测试和 测试 2 从是否需要执行被测软件的角度来看 可分为静态测试和动态 测试 3 从测试是否针对系统的内部结构和具体实现算法的角度来看 可分为黑盒测试和白盒测试 黑盒测试又可以分为功能测试和性能测试 期中功能测试包括逻辑功能测试 界面测试 易用性测试 安装测试 兼容想测试 性能测试包括一般性能测试 稳定性测试 负载测试 压 力测试 4 其他的测试还有回归测试 冒烟测试 随机测试 灰盒测试 自动化测试等 软件测试的方法和技术是多种多样的 从不同的角度出发 软件测试可以划分 为不同的分类 4 4 软件测试的一些基本原则软件测试的一些基本原则 1 Zero Bug 与 Good Enough Zero Bug 指的是软件中没有任何 Bug Good Enough 指的是只要软件大 道一定的质量要求 就可以停止测试了 对于相对复杂的产品或系统来说 没有 Bug 是不可能的 我们只能相仿 设法把软件的 Bug 书控制在可以忍受的范围之内 Good Enough 原则就是一种权衡投入 产出比的原则 不充分的测试时不 负责任的 过分的测试时一种资源的浪费 同样也是一种不负责任的表 现 2 不要试图穷举测试 3 开发人员不能及时运动员又是裁判员 也就是说测试应该由独 立的第三方机构来完成 软件测试方法综述 4 9 4 软件测试要尽早执行 实践证明 在大多数情况下 在需求分析阶段就会产生缺陷 而且需求 分析阶段引入的缺陷是最多的 其修复成本确实最低的 所以软件测试 应该尽早执行 越早执行 风险越小 5 软件测试应该追溯需求 测试环节包括 4 个部分 正确的功能 有错误编码带来的错误 这种错 误可有开发人员直接修改 有错误设计产生的错误 这种错误时不能直 接修改的 必须去修改设计 最后一种是有错误说明带来的错误 这种 也是潜伏的不容易发现的错误 需要我们追溯需求 6 缺陷的二八定理 一般情况下 80 的缺陷集中在 20 的模块中 我们测试时要抓住主要矛 盾 如果发现某一程序模块比其他模块有跟多的缺陷 就要投入主要的 人力和精力重点测试这 20 的模块 以提高我们的测试效率 7 缺陷具有免疫性 程序员在修改完缺陷 把新版本提交给测试人员 测试人员根据相同的 测试用例进行回归测试 就像是用同一种农药来杀害虫一样 其效果五 一回大打折扣 这就要求测试人员要根据新版本的特点去修改维护测试 用例 8 要严格执行测试计划 排除测试的随意性 5 软件测试的模型软件测试的模型 5 1 测试模型概述 正如软件开发有过程模型一样 软件测试也有测试模型 软件测试模型是软件 测试框架 它描述了软件测试过程所包含的主要活动 以及这些活动之问的相 互关系等 一种好的软件测试模型 应具有以下特征 1 它将测试计划 测试用例设计 测试执行 测试结果收集与分析结合在一起 2 不同的测试技术 应用于不同的时间点 需求和运行环境对应用程序进行测 试 3 使软件设计中的错误尽可能早地暴露出来 通过测试模型 软件测试人员及有关人员可以了解 测试从什么时候开始 在 什么时候结束 测试过程包括哪些活动 需要什么资源等 在软件测试策划时 要根据测试目的 所采用的开发过程模型和组织的条件等 选择合适的测试模 型 5 2测试模型介绍 软件测试方法综述 5 9 系统与测试设计 集成测试设计 单元测试设计 1 模型基本介绍 目前 软件测试模型有V 模型 W 模型 前置测试模型 H模型 X模型 蝶型 模型等 其中V 模型和W 模型是常用的测试模型 得到了普遍接受 本文只介 绍V 模型与W 模型 在传统的瀑布型软件开发过程中 仅仅把测试过程作为在需求分析 概要设计 详细设计及编码之后的一个阶段 对软件测试过程没有进一步的描述 V模型针 对瀑布模型对软件测试过程进行了补充 v模型最早由已故的Paul Rook在80年 代后期提出 V模型被包含在英国国家计算中心文献中发布 旨在改进软件开发 的效率和效果 V模型在欧洲尤其是英国被接受 并被认为是瀑布模型的替代品 V模型最早提出测试并不是一个事后弥补行为 而是一个同开发过程同样重要的 过程 这是它最大的积极意义所在 Fig 1 V 模型 Fig 1 因此 V模型主要向我们传递了如下信息 需求 功能 设计和编码的开发活动 随时间而进行 而相应的测试活动 即针对需求 功能 设计和编码的测试 用户需求 规格定义 概要设计 详细设计 编 码 验收测试 系统测试 集成测试 单元测试 验收测试设计 软件测试方法综述 6 9 其开展的次序则正好相反 换而言之 代码最后被开发 而相应的单元测试首 先被执行 需求最早被开发 可相应的验收测试到最后才进行 V模型揭示了软 件测试活动分层和分阶段的本质特性 V 模型的哟点就是详细表示了测试的各个阶段以及参考依据 单元测试参考的是详细设计 集成测试参考的是概要设计 系统测试参考的是需求规格说明书 验收测试参考的是用户需求 V 模型的缺点是没有说明在项目的前期测试需要做哪些工作 编写测试技术啊 测试用例等 而且和瀑布模型一样 流程也是单向的 不可逆的 V 模型容 易让人形成测试是开发之后的一个阶段 测试的对象就是程序 之类的误解 2 W 模型 软件开发过程各阶段都可能产生错误 据国外对一些大型软件系统的统计 需 求分析与设计阶段产生的错误占64 编码错误占36 软件错误具有传递性 即需求分析产生的错误如果没有发现 会依次传递到设计和编码 软件错误的 发现和解决具有放大性 据估计 在分析设计阶段产生的错误 如果在编码结 束后的测试过程才被发现 其代价约为在分析设计阶段发现和解决错误的代价 的10倍 如果该错误在产品交付使用后才发现和解决 则其代价将超过100倍 因此 测试工作越早进行 发现和解决错误的代价越小 风险越小 根据这个 观点 Systeme Evolutif公司在V 模型的基础上 提出了W 模型 如图Fig 2 所示 Fig 2 W 模型 按照W 模型 软件开发过程中各个阶段的可交付产品 中间的或者最终的产品 需求 规格 设计 编码 需求测试 构建软件 单元测试 规格测试 设计测试集成测试 安装 构件系统系统测试 验收测试 软件测试方法综述 7 9 验收测试 验收测试计划和准备 计划 和准备 系统测试计划和准备 集成测试计划和准备 单元测试计划和准备 都要进行测试 尽可能使各阶段产生的错误在该阶段得到发现和解决 W 模型 在V 模型的基础上增加需求测试 规格测试和设计测试 目的是确保需求的完 整性 一致性 准确性 可实现性和可测试性等 以及设计对需求的可追踪性 正确性 规范性和可测试性等 测试与开发是同步进行的 软件需求规格说明 软件概要设计说明以及软件详细设计说明等是被测试的对象 3 Spillner W 模型 Andreas Spillner在Evolutif基本模型的基础上 增加了测试 查错 更改 再测试循环 并将启动测试活动 测试计划和准备活动在模型上明确表示出来 如图Fig 3所示 Fig 3 根据该模型 在软件项目开始时 应该启动软件测试活动 该活动包括以下几 个方面的内容 1 确定测试策略 进行风险分析 确定关键特性和测试强度 估算测试费用 等 2 编制测试计划 3 组建测试组 并对测试人员进行必要的培训 4 建立监控与报告机制 5 准备必要的硬件和软件资源 需求 规格 概要设计 设计 详细设计 启动测试活动需求评审 动 集成测试 查错与更改 规格评审 概要设计评审查错与更改 验收测试 系统测试查错与更改 查错与更改 评 审 详细设计评审单元测试 软件测试方法综述 8 9 在开发过程的各个阶段 需要进行需求评审 规格评审 概要设计评审和详细 设计评审 并完成相对应的验收测试 系统测试 集成测试和单元测试的计划 和准备工作 测试计划和准备工作主要包括根据关键特性确定测试的优先级 进行测试用例设计等方面 当单元测试 集成测试 系统测试或者验收测试中发现错误时 测试进入了测 试 查错 更改 再测试循环 在该循环中 通过测试发现错误 然后对发现 的错误进行原因分析并定位 再对有关程序和文档进行更改 一旦发生更改 将会进入再测试 递归测试 以验证错误是否得到排除以及是否引入新的错 误 W 模型使我们树立了一种新的观点 即软件测试并不等于程序测试 不应仅限 于程序测试的狭小范围内 而应贯穿于软件定义与设计开发的整个过程 因此 需求分析 概要设计 详细设计以及程序编码等各阶段所得到的文档 包括需 求规格说明 概要设计规格说明 详细设计规格说明以及源程序 都应成为软 件测试的对象 6 6 软件测试的研究方向软件测试的研究方向 方向一 通用测试理论 长久以来测试研究的一个梦想是 构建可靠且全面的理论来支持和丰富测试技 术 基于 通用 测试理论即一致且严格的框架 测试人员可以了解已有测试 技术的相对优势和局限性 在给定条件下 选出最合适的一种或几种技术 软 件测试理论开创性工作要追溯到上世纪七十年代晚期首次提出可靠的或理想的 测试套件的概念 这些工作告诉我们 测试永远不够精确 通用测试理论需要 关注几个关键技术 如明确测试假设 测试效率 组合测试和测试实验 方向二 基于测试的建模 基于模型测试是利用软件设计时定义的模型驱动测试过程 特别是自动生成测 试用例 使用符号语言如UML或Z进行建模 从测试人员的角度出发 理想情况 应是将顺序颠倒过来 不是利用模型进行测试 而是构造模型有效地测试软件 将当前 基于模型的测试 改为 基于测试的建模 方向三 100 自动测试 随着软件数量和复杂性的增加 自动化成为一种保证软件质量的方法 大部分 现有测试研究针对提高自动化程度 通过研究先进的技术来产生测试输入 或 自动化测试过程 100 自动测试是一个强大的集成测试环境 作为软件的一部 分被完善和配置 可以自动地产生或恢复所需的桩代码 驱动 桩程序和模拟器 生 成最合适的测试用例 执行并最终发布测试报告 方向四 测试效率最大化 软件测试研究的最终目标是应用测试方法 工具和过程开发高质量的软件 测 试效率最大化面临的最大障碍是现代系统不断增加的复杂性 这种复杂性不仅 影响了系统本身 也影响系统配置环境 可测试性是比系统怎样建模更广泛的 一个概念 它还涉及到实现特征 测试技术本身以及其支持环境 软件测试方法综述 9 9 方向五 新范型和新环

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论