slide09 - Testing_第1页
slide09 - Testing_第2页
slide09 - Testing_第3页
slide09 - Testing_第4页
slide09 - Testing_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

软件测试 1 内容提纲 验证与确认验证与确认的基本概念与活动模型静态方法 走查 审查 检查软件测试基础测试的概念与原则 测试文档软件测试活动软件测试技术黑盒测试与白盒测试等价类划分 边界值分析路径测试 基于状态的测试面向对象的测试 2 基本术语 错误 Error 错误是指导致系统可能包含故障的人的行为 如输入错误 需求错误 设计错误等 缺陷 Defect Bug 缺陷是错误的表现 包括过错缺陷和遗漏缺陷 故障 Fault 故障是指系统的规格说明与其行为之间的偏差 通常由一个或多个缺陷引起 3 基本术语 验证 Verification 我们是否在正确地制造产品 软件验证试图证明在软件生存周期的各个阶段 软件产品或中间产品是否能够满足客户需求 包括一致性 完整性和正确性 确认 Validation 我们是否在制造正确的产品 软件确认的目的是保证所开发的最终软件产品能够符合用户的需求 说明 验证强调对于过程的检验 确认强调对于结果的检验 4 软件错误 或软件缺陷 的表现软件未达到产品说明书标明的功能 软件出现了产品说明书指明不会出现的错误 软件功能超出了产品说明书指明的范围 软件未达到产品说明书虽未指出但应达到的目标 软件测试人员认为软件难以理解 不易使用 运行速度缓慢 或者最终用户不满意 有错是软件的属性 而且是无法改变的 因此 关键在于如何避免错误的产生和消除已经产生的错误 使程序中的错误密度达到尽可能低的程度 软件错误或缺陷 5 验证与确认 6 这是什么 7 错误的状态 8 算法错误 9 机械错误 10 处理错误或缺陷 缺陷 11 处理错误或缺陷 特性 12 处理错误或缺陷 冗余 13 处理错误或缺陷 补丁 14 处理错误或缺陷 测试 15 另一种观点 错误预防 在系统发布之前实施 使用好的程序设计方法来减少复杂性使用版本控制来防止系统的不一致应用验证技术来防止算法错误错误检测 当系统运行时实施 测试 以事先规划的方式发现错误调试 假设从意外故障着手可以找到错误监控 发送状态信息 发现性能错误错误恢复 一旦系统发布后出现错误时实施 数据库系统 提供从故障中恢复的基本事务处理模块冗余 将不止一个组件分配执行同一个操作恢复程序 该程序处理错误信息 使系统从故障中恢复过来 16 验证与确认的活动模型 17 验证与确认的活动模型 需求分析与规格说明阶段用例表示待开发系统的场景 有助于建立完整的系统 可以用于在后续的实现阶段生成测试用例 形式化方法 如状态机 可以自动地检验一致性和完整性等特性 需求检查 需求评审 原型方法设计阶段断言 抽象数据类型 契约设计等是详细设计的验证工具设计走查 设计检查 设计评审 18 验证与确认的活动模型 软件实现阶段软件测试是一种主要的验证与确认工具代码走查 代码检查 代码评审动态监控工具 如断言的动态监控 验证与确认的方式静态方法 通过人工分析或程序正确性证明的方式来确认程序的正确性 包括走查 审查 检查等方法 动态方法 通过动态分析和程序测试来检查程序执行状态 以确认程序是否有问题 19 评审 评审 Review 评审是由若干开发人员 项目经理 测试人员 用户或领域专家等组成一个会审小组 通过阅读 讨论和争议 对工作制品进行静态分析的过程 类型 需求评审 设计评审和代码评审 评审过程小组负责人提前把需求规格说明 设计说明或程序代码及有关要求 规范等分发给小组成员 作为评审的依据 在充分阅读有关材料后召开评审会议 主要开发人员进行讲解 其他成员提出问题并展开讨论 审查是否存在错误 评审小组形成产品评审的书面报告 20 走查 走查 Walkthrough 走查是由设计人员或编程人员组成一个走查小组 通过阅读一段文档或代码 并进行提问和讨论 从而发现可能存在的缺陷 遗漏和矛盾的地方 类型 设计走查 代码走查 走查过程与评审过程类似 即先把材料先发给走查小组每个成员 让他们认真研究程序 然后再开会 与评审的区别 评审通常是简单地读程序或对照错误检查表进行检查 走查则是按照所提交的测试用例 人工模仿计算机运行一遍 并记录跟踪情况 21 走查 走查是开发者的一次友好的会议 需要仔细规划 并有明确的目的 日程 持续时间和参与人员 许多小组以星期为单位走查 走查前几天 召集人将收集的一些要在会上审查的材料 模型 文档 程序代码等 分发给参与者 参与者研究这些材料并在会议之前提交意见 会议期间 召集人提出大家的意见并对每一项进行讨论 会议时间比较短 一般2 3小时 会议的目的是查明问题 而不是干扰开发者 会议的思想是确认问题的存在 甚至不必去谋求问题的解决 会后 将问题分发给相应人员进行解决 22 检查 Inspection 检查是由一些经过严格训练的人员根据评估标准 对于开发过程中的产品或中间制品进行检查 发现其中存在的错误 检查一般是按规定程序和时间计划进行的 参与者来自开发人员 测试人员 质量保证人员或用户 以3 7人组成小组 检查过程检查遵循一个严格的过程 人员经过培训 检查过程有评估标准 检查过程包括计划 会议准备 会议召开 修改错误 问题跟踪等环节 目的是获得项目管理和质量评估的数据 并改进检查过程本身 检查 23 检查 检查也是一次友好会议但要在项目管理的密切监督下完成 其目的是识别故障 验证它们是否真的失效 记录这些故障点并安排何时及由谁来解决 检查之前 可能需要安排一个较短的信息通报会 一般在检查会之前一个星期召开 在信息通报会上 由检查的开发者先介绍一下主题 而且检查材料要在通报会期间或之前交给参与者 检查会议 识别 记录软件故障并记下个数 会议之后 召集者要做好故障日志 验证这些故障是否已经解决 并决定是否需要进一步检查 24 内容提纲 验证与确认验证与确认的基本概念与活动模型静态方法 走查 审查 检查软件测试基础测试的概念与原则 测试文档软件测试活动软件测试技术黑盒测试与白盒测试等价类划分 边界值分析路径测试 基于状态的测试面向对象的测试 25 软件测试的概念 测试的定义传统 测试是一种旨在评估一个程序或系统的属性或能力 确定它是否符合其所需结果的活动 Myers 测试是为了发现错误而执行一个程序或系统的过程 IEEE 测试是使用人工和自动手段来运行或检测某个系统的过程 其目的在于检验系统是否满足规定的需求或弄清预期结果与实际结果之间的差别 测试的目的测试是为了证明程序有错 而不是证明程序无错误 一个好的测试用例在于能够发现至今未发现的错误 一个成功的测试是发现了至今未发现的错误的测试 26 软件测试的概念 对待软件测试的态度从用户的角度出发普遍希望通过软件测试暴露软件中隐藏的错误和缺陷 以考虑是否可接受该产品 从软件开发者的角度出发希望测试成为表明软件产品中不存在错误的过程 验证该软件已正确地实现了用户的要求 确立人们对软件质量的信心 一种正确的态度发现错误时关注于改正错误 而不是埋怨具体的开发人员 27 软件测试的概念 软件测试的原则应当把 尽早地和不断地测试 作为软件开发者的座右铭程序员应避免检查自己的程序设计测试用例时 应包括合理的输入和不合理的输入 以及各种边界条件 特殊情况下要制造极端状态和意外状态充分注意测试中的群集现象对测试错误结果一定要有一个确认过程制定严格的测试计划 排除测试的随意性注意回归测试的关联性 往往修改一个错误会引起更多错误妥善保存一切测试过程文档 测试重现往往要靠测试文档 28 软件测试文档 测试计划 TestPlan 测试计划是测试工作的指导性文档 规定测试活动的范围 方法 资源和进度 明确正在测试的项目 要测试的特性 要执行的测试任务 每个任务的负责人 以及与计划相关的风险 主要内容 测试目标 测试方法 测试范围 测试资源 测试环境和工具 测试体系结构 测试进度表 29 软件测试文档 测试规范 TestSpecification 测试规范是从整体上规定测试案例的运行环境 测试方法 生成步骤 执行步骤以及调试和验证的步骤 主要内容 系统运行环境 总体测试方法 测试用例的生成步骤 测试用例的执行步骤 调试和验证 30 软件测试文档 测试用例 TestCase 测试用例是数据输入和期望结果组成的对 其中 输入 是对被测软件接收外界数据的描述 期望结果 是对于相应输入软件应该出现的输出结果的描述 测试用例还应明确指出使用具体测试案例产生的测试程序的任何限制 测试用例可以被组织成一个测试系列 即为实现某个特定的测试目的而设计的一组测试用例 例如 一部分测试用例用来测试系统的兼容性 另一部分是用来测试系统在特定的环境中 系统的典型应用是否能够很好地运作 31 软件测试文档 缺陷报告 BugReport 缺陷报告是编写在需要调查研究的测试过程期间发生的任何事件 简而言之 就是记录软件缺陷 主要内容 缺陷编号 题目 状态 提出 解决 所属项目 测试环境 缺限报告步骤 期待结果 附件在报告缺陷时 一般要讲明缺陷的严重性和优先级 严重性表示软件的恶劣程度 反映其对产品和用户的影响 优先级表示修复缺陷的重要程度和应该何时修复 32 软件测试人员 33 软件测试人员的综合素质 沟通能力理想的测试人员必须能与测试涉及到的所有人进行沟通 具有与技术人员 开发者 和非技术人员 客户 管理人员 的交流能力 自我调节能力和系统开发有关的所有人员 用户 开发者 管理者 都处于一种既关心又担心的状态中 测试人员必须和每一类人打交道 因此需要对每一类人都具有足够的理解和同情 从而将测试人员与相关人员之间的冲突和对抗减少到最低程度 技术能力一个测试人员必须既明白被测软件系统的概念又要会使用工程中的那些工具 最好有几年以上的编程经验 从而有助于对软件开发过程的较深入理解 34 软件测试人员的综合素质 自信心开发人员指责测试人员出了错是常有的事 测试人员必须对自己的观点有足够的自信心 外交能力当你告诉某人他出了错时 就必须使用一些外交方法 机智老练和外交手法有助于维护与开发人员之间的协作关系 幽默感在遇到狡辩的情况下 一个幽默的批评将是很有帮助的 很强的记忆力理想的测试人员应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来 这一能力在测试过程中的价值是无法衡量的 35 软件测试人员的综合素质 耐心一些质量保证工作需要难以置信的耐心 有时你需要花费惊人的时间去分离 识别和分派一个错误 怀疑精神开发人员会尽他们最大的努力将所有的错误解释过去 测式人员必须听每个人的说明 但他必须保持怀疑直到他自己看过以后 自我督促干测试工作很容易使你变得懒散 只有那些具有自我督促能力的人才能够使自己每天正常地工作 洞察力一个好的测试人员具有 测试是为了破坏 的观点 捕获用户观点的能力 强烈的质量追求 对细节的关注能力 36 软件测试活动 37 软件测试活动 38 软件测试的V模型 39 单元测试 单元测试 UnitTesting 单元测试是对软件基本组成单元进行的测试 有时也称 组件测试 单元测试一般由编写该单元代码的开发人员执行 该人员负责设计和运行一系列的测试以确保该单元符合需求 单元测试的目的验证代码是与设计相符的跟踪需求和设计的实现发现设计和需求中存在的错误发现在编码过程中引入的错误 40 单元测试 单元测试分析 41 单元测试 单元测试环境驱动模块 模拟被测模块的上一级模块桩模块 模拟被测单元需调用的其他函数接口单元测试的动态环境 生成测试数据 42 单元测试 Junit 43 集成测试 集成测试 IntegrationTesting 集成测试是在单元测试的基础上 将所有模块按照总体设计的要求组装成为子系统或系统进行的测试 集成测试的对象是模块间的接口 其目的是找出在模块接口上 包括系统体系结构上的问题 集成测试策略基于层次的集成 自顶向下与自底向上基于功能的集成 按照功能的优先级逐步将模块加入系统中基于进度的集成 把最早可获得的代码进行集成基于使用的集成 通过类的使用关系进行集成 44 系统测试 系统测试 SystemTesting 系统测试是将已经集成好的软件系统作为一个元素 与计算机硬件 外设 某些支持软件 数据和人员等其他元素结合在一起 在实际运行环境下进行的一系列测试 系统测试方法功能测试 协议一致性测试性能测试 压力测试 容量测试 安全性测试 恢复测试备份测试 GUI测试 健壮性测试 兼容性测试 可用性测试安装测试 文档测试 在线帮助测试 数据转换测试 45 系统测试 功能测试 FunctionalTesting 功能测试是系统测试中最基本的测试 它不管软件内部的实现逻辑 主要根据软件需求规格说明和测试需求列表 验证产品的功能实现是否符合需求规格 功能测试主要发现以下错误 是否有不正确或遗漏的功能 功能实现是否满足用户需求和系统设计的隐藏需求 能否正确地接受输入 能否正确地输出结果 常用的测试技术黑盒测试方法 等价类划分 边界值测试 46 系统测试 压力测试 PressTesting 压力测试是检查系统在资源超负荷情况下的表现 特别是对系统的处理时间有什么影响 压力测试的例子对于一个固定输入速率 如每分钟120个单词 的单词处理响应时间在一个非常短的时间内引入超负荷的数据容量成千上万的用户在同一时间从网上登录到系统引入需要大量内存资源的操作压力测试采用边界值和错误猜测方法 且需要工具的支持 47 系统测试 安全性测试 SecurityTesting 安全性测试检查系统对非法侵入的防范能力 安全性测试期间 测试人员假扮非法入侵者 采用各种办法试图突破防线 安全性测试的例子想方设法截取或破译口令专门定做软件破坏系统的保护机制故意导致系统失败 企图趁恢复之机非法进入试图通过浏览非保密数据 推导所需信息 48 系统测试 恢复测试 RecoveryTesting 恢复测试是检验系统从软件或者硬件失败中恢复的能力 即采用各种人工干预方式使软件出错 而不能正常工作 从而检验系统的恢复能力 恢复性测试的例子当供电出现问题时的恢复恢复程序的执行对选择的文件和数据进行恢复恢复处理日志方面的能力通过切换到一个并行系统来进行恢复 49 系统测试 GUI测试 GraphicUserInterfaceTesting GUI测试一是检查用户界面实现与设计的符合情况 二是确认用户界面处理的正确性 GUI测试提倡界面与功能的设计分离 其重点关注在界面层和界面与功能接口层上 GUI自动化测试工具WinRunner QARun QARobot VisualTest常用的测试技术等价类划分 边界值分析 基于状态图方法 错误猜测法 50 系统测试 安装测试 InstallationTesting 系统验收之后 需要在目标环境中进行安装 其目的是保证应用程序能够被成功地安装 安装测试应考虑应用程序是否可以成功地安装在以前从未安装过的环境中 应用程序是否可以成功地安装在以前已有的环境中 配置信息定义正确吗 考虑到以前的配置信息吗 在线文档安装正确吗 安装应用程序是否会影响其他的应用程序吗 安装程序是否可以检测到资源的情况并做出适当的反应 51 验收测试 验收测试 AcceptanceTesting 验收测试是以用户为主的测试 一般使用用户环境中的实际数据进行测试 在测试过程中 除了考虑软件的功能和性能外 还应对软件的兼容性 可维护性 错误的恢复功能等进行确认 测试与 测试 测试与 测试是产品在正式发布前经常进行的两种测试 测试是由用户在开发环境下进行的测试 测试是由软件的多个用户在实际使用环境下进行的测试 问题 微软公司如何进行其产品的 测试 52 回归测试 RegressionTesting 回归测试是验证对系统的变更没有影响以前的功能 并且保证当前功能的变更是正确的 回归测试可以发生在软件测试的任何阶段 包括单元测试 集成测试和系统测试 其令人烦恼的原因在于频繁的重复性劳动 回归测试应考虑的因素范围 有选择地执行以前的测试用例 自动化 测试程序的自动执行和自动配置 测试用例的管理和自动输入 测试结果的自动采集和比较 测试结论的自动输出 回归测试 53 内容提纲 验证与确认验证与确认的基本概念与活动模型静态方法 走查 审查 检查软件测试基础测试的概念与原则 测试文档软件测试活动软件测试技术黑盒测试与白盒测试等价类划分 边界值分析路径测试 基于状态的测试面向对象的测试 54 黑盒测试 黑盒测试 BlackBoxTesting 又称功能测试 它将测试对象看做一个黑盒子 完全不考虑程序内部的逻辑结构和内部特性 只依据程序的需求规格说明书 检查程序的功能是否符合它的功能说明 问题 用黑盒测试发现程序中的错误 必须在所有可能的输入条件和输出条件中确定测试数据 来检查程序是否都能产生正确的输出 但这是不可能的 55 白盒测试 白盒测试 WhiteBoxTesting 又称结构测试 它把测试对象看做一个透明的盒子 它允许测试人员利用程序内部的逻辑结构及有关信息 设计或选择测试用例 对程序所有逻辑路径进行测试 问题 对一个具有多重选择和循环嵌套的程序 不同的路径数目可能是天文数字 56 等价类划分 等价类划分等价类划分是黑盒测试技术 可将测试用例数量降到最少 等价类划分是将可能的输入划分成若干等价的类 每一个类选择一个测试用例 这种方法假设对于一个类的所有成员来说 系统通常按照类似的方式运行 关键步骤 确定等价类和选择测试输入基本原则 每个可能的输入属于某一个等价类任何输入都不会属于多个等价类用等价类的某个成员作为输入时 如果证明执行存在误差 那么用该类的任何其他成员作为输入 也能检查到同样的误差 57 边界值分析 边界值分析边界值分析是等价类测试的特例 主要是考虑等价类的边界条件 在等价类的 边缘 选择元素 在 R1 R2 的取值区间中 应如何选择 等价类与边界测试的缺点没有考虑测试输入数据的组合 在很多情况下程序出现故障是因为某些值的组合引起了误差 58 举例 Date 举例 设计Date increment 的测试用例问题 你认为以下的等价类划分是否恰当 D1 1 day 31 M1 1 month 12 Y1 1812 year 2012 59 举例 Date 另一种划分方法D1 1 date lastdayofthemonth D2 lastdayofthemonth D3 Dec 31 M1 30 daymonths M2 31 daymonths M3 Feb Y1 2000 Y2 leapyear Y3 notleapyear 60 举例 Date 61 举例 Date 62 举例 Date 63 举例 Date 64 路径测试 路径测试路径测试是确定组件实现中错误的白盒测试技术 它假设通过至少一次代码的所有可能路径 大多数错误将引起故障 路径测试是在程序控制流图的基础上 分析控制构造的环路复杂性 导出基本可执行路径集合 由此设计测试用例 并保证在测试中程序的每一个可执行语句至少要执行一次 程序控制流图符号 为控制流图的一个结点 表示一个或多个无分支的源程序语句 箭头为边 表示控制流的方向 65 路径测试 66 举例 SelectSort 举例 函数SelectSort 的代码VoidSelectSort datalist 问题 如何使用路径测试方法设计测试用例 67 举例 SelectSort 68 举例 SelectSort 测试用例Path1 取n 1Path2 取n 2预期结果 路径5 8 3不可到达Path3 取n 2预期结果 路径5 9 3不可到达路径1 2 4 6 5 8 3 取n 2 v 0 2 v 1 1预期结果 k 1 v 0 1 v 1 2路径1 2 4 6 5 9 3 取n 2 v 0 2 v 1 1预期结果 k 1 路径9 3不可到达 69 举例 SelectSort 测试用例路径1 2 4 7 5 8 3 取n 2 v 0 1 v 1 2预期结果 k 0 路径8 3不可到达路径1 2 4 7 5 9 3 取n 2 v 0 1 v 1 2预期结果 k 0 v 0 1 v 1 2说明 路径测试技术不适合面向对象语言 例如多态性可以与不同的方法绑定 因此所有的绑定都需要确定并测试 70 基于状态的测试 基于状态的测试基于状态的测试主要考虑面向对象系统 它根据系统的特定状态选择大量的测试输入 测试某个组件或系统 并将实际的输出与预期的结果相比较 在类环境中 从类的UML状态图中得出测试用例组成基于状态的测试 举例 测试CourseOffering类 71 再工程活动 源代码转换代码从原有的程序设计语言转换到一种新语言逆向工程分析程序并抽取信息记录其结构和功能程序结构改善分析和修改程序的控制结构 使其更易读和好理解程序模块化重新组织程序的结构数据再工程改变程序处理的数据以反映程序的变

温馨提示

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

评论

0/150

提交评论