软件测试相关理论知识.ppt_第1页
软件测试相关理论知识.ppt_第2页
软件测试相关理论知识.ppt_第3页
软件测试相关理论知识.ppt_第4页
软件测试相关理论知识.ppt_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

测试技术 软件测试策略 软件测试策略 2 概述单元测试集成测试确认测试系统测试验收测试 软件测试策略 3 什么是软件测试策略 是为软件工程过程定义的一个软件测试的模板 也就是把特定的测试用例方法放置进去的一系列步骤 软件测试策略包含的特征 1 测试从模块层开始 然后扩大延伸到整个基于计算机的系统集合中 2 不同的测试技术适用于不同的时间点 3 测试是由软件的开发人员和 对于大型系统而言 独立的测试组来管理的 4 测试和调试是不同的活动 但是调试必须能够适应任何的测试策略 软件测试充分性准则 4 对任何软件都存在有限的充分测试集合 如果一个软件系统在一个测试数据集合上的测试是充分的 那么再多测试一些数据也应该是充分的 这一特性称为单调性 即使对软件所有成分都进行了充分的测试 也并不表明整个软件的测试已经充分了 这一特性称为非复合性 即使对软件系统整体的测试是充分的 也并不意味软件系统中各个成分都已经充分地得到了测试 这个特性称为非分解性 软件测试的充分性应该与软件的需求和软件的实现都相关 软件越复杂 需要的测试数据就越多 这一特性称为复杂性 测试得越多 进一步测试所能得到的充分性增长就越少 这一特性称为回报递减率 单元测试 UnitTesting 5 概述单元测试的内容单元测试的步骤单元测试的执行 单元测试 UnitTesting 6 单元测试 又称模块测试 是针对软件设计的最小单位 程序模块进行测试工作 其目的在于发现模块内可能存在的各种差错 检查各个程序模块是否正确地实现了规定的功能 在单元测试活动中 软件的独立单元将在与程序的其他部分相隔离的情况下进行测试 单元测试时 多个模块可平行地独立进行单元测试 单元测试的内容 7 单元测试依据在单元测试时 测试者需要依据详细设计说明书和源程序清单 了解该模块的I O条件和模块的逻辑结构 主要采用白盒测试的测试用例 辅之以黑盒测试的测试用例 使之对任何合理的输入和不合理的输入 都能鉴别和响应 单元测试的考虑 8 模块接口算法和逻辑局部数据结构边界条件独立的路径错误处理 9 单元测试的考虑 单元测试的考虑 10 单元测试的考虑 模块接口测试 11 在单元测试的开始 应对通过被测模块的数据流进行测试 只有在数据能正确流入 流出模块的前提下 其他测试才有意义 测试项目包括 调用本模块的输入参数是否正确 本模块调用子模块时输入给子模块的参数是否正确 是否修改了只读型参数全局量的定义在各模块中是否一致 单元测试的考虑 模块接口测试 12 如果模块内包括外部输入输出 还应该考虑下列因素 文件属性是否正确 OPEN与CLOSE语句是否正确 缓冲区容量与记录长度是否匹配 在进行读写操作之前是否打开了文件 在结束文件处理时是否关闭了文件 正文书写 输入错误 I O错误是否检查并做了处理 单元测试的考虑 局部数据结构测试 13 检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整 正确 局部数据结构往往是错误的根源 应仔细设计测试用例 力求发现下面几类错误 不正确或不一致的数据类型说明使用尚未赋值或尚未初始化的变量错误的初始值或错误的缺省值变量名拼写错或书写错上溢 下溢或地址异常除了局部数据结构外 如可能 单元测试时还应该查清全局数据 如FORTRAN的公用区 对模块的影响 14 在模块中应对每一条独立执行路径进行测试 单元测试的最基本要求是满足语句覆盖 设计测试用例是为了发现因错误计算 不正确的比较和不适当的控制流造成的错误 此时基本路径测试和循环测试是最常用且最有效的测试技术 计算中常见的错误包括 误解或用错了算符优先级 混合类型运算 变量初值错 精度不够 表达式符号错 单元测试的考虑 路径测试 单元测试的考虑 路径测试 15 比较判断与控制流常常紧密相关 测试用例还应致力于发现下列错误 不同数据类型的对象之间进行比较 错误地使用逻辑运算符或优先级 因计算机表示的局限性 期望理论上相等而实际上不相等的两个量相等 比较运算或变量出错 循环终止条件或不可能出现 迭代发散时不能退出 错误地修改了循环变量 16 一个好的设计应能预见各种出错 并预设各种出错处理 出错处理需认真测试 测试应着重检查下列问题 出错的描述是否难以理解出错的描述是否能够对错误定位显示的错误与实际的错误是否相符对错误条件的处理正确与否在对错误进行处理之前 错误条件是否已经引起系统的干预 单元测试的考虑 错误处理测试 17 边界条件测试是单元测试中最后 也是最重要的一项任务 众所周知 软件经常在边界上失效 采用边界值分析技术 注意数据流 控制流中刚好等于 大于或小于确定的比较值时出错的可能性 对这些地方要仔细地选择测试用例 认真加以测试 如果对模块运行时间有要求的话 还要专门进行关键路径测试 以确定最坏情况下和平均意义下影响模块运行时间的因素 单元测试的考虑 边界测试 单元测试的步骤 18 一般认为 单元测试应紧接在编码之后 当源程序编制完并通过复审和编译检查 便可开始单元测试 驱动模块和桩模块模块并不是一个独立的程序 在考虑测试模块时 同时要考虑它和外界的联系 应为测试模块开发一个驱动模块 driver 和 或 若干个桩模块 stub 下图显示了一般单元测试的环境 驱动模块 用于模拟被测模块的上级模块 在大多数场合称为 主程序 它接收测试数据并将这些数据传递到被测试模块 被测试模块被调用后 主程序 显示类似 进入 退出 消息 桩模块 也称存根程序 用于模拟被测模块的调用模块 19 单元测试的步骤 单元测试的步骤 20 单元测试的说明驱动模块和桩模块是测试用的软件 而不是软件产品的组成部分 它需要一定的开发费用 若驱动和桩模块比较简单 实际开销相对低些 遗憾的是 仅用简单的驱动模块和桩模块有时不能完成某些模块的测试任务 这些模块的单元测试只能采用一些综合测试方法 提高模块的内聚度可简化单元测试 如果每个模块只完成一个功能 所需测试用例数目将显著减少 模块中的错误也更易发现 如果一个模块要完成多种功能 可以将这个模块看成由几个小程序组成 必须对其中的每个小程序先进行单元测试要做的工作 对关键模块还要做性能测试 对支持某些标准规程的程序 更要着手进行互联测试 有人把这种情况特别称为模块测试 以区别单元测试 单元测试的执行 21 检查编码是否遵循软件编程规范和标准自动或手动分析程序设计测试用例并运行错误跟踪分析 软件测试策略 22 概述单元测试集成测试确认测试系统测试验收测试 当前位置 集成测试 23 概述集成测试的方式一次性组装方式 bigbang 增殖式组装方式自顶向下结合自底向上结合混合增殖试测试其他 集成测试 24 也称为组装测试 联合测试 是将模块按照设计要求组装起来进行测试 主要目标是发现与接口有关的问题 通常 在单元测试的基础上 需要将所有模块按照设计要求组装成为系统 这时需要考虑的问题是 在把各个模块连接起来的时侯 穿越模块接口的数据是否会丢失 一个模块的功能是否会对另一个模块的功能产生不利的影响 集成测试 25 为什么进行集成测试 一个模块可能对另一个模块产生不利的影响将子功能合成时不一定产生所期望的主功能独立可接受的误差在组装后可能会超过可接受的误差限度可能会发现单元测试中未发现的接口方面的错误在单元测试中无法发现时序问题 实时系统 在单元测试中无法发现资源竞争问题 集成测试的目的 26 在模块组装后查找模块间接口的错误各个子功能组合起来 能否达到预期要求的父功能 全局数据结构是否有问题 单个模块的误差累积起来 是否会放大 从而达到不能接受的程度 在单元测试的同时可进行组装测试 发现并排除在模块连接中可能出现的问题 最终构成要求的软件系统 27 子系统的组装测试特别称为部件测试 它所做的工作是要找出组装后的子系统与系统需求规格说明之间的不一致 通常 把模块组装成为系统的方式有两种一次性组装方式 bigbang 增殖式组装方式 集成测试的方式 28 它是一种非增殖式组装方式 也叫做整体拼装 非增式测试方法采用一步到位的方法来构造测试 对所有模块进行个别的单元测试后 按程序结构图将各模块联接起来 把联接后的程序当作一个整体进行测试 集成测试 一次性组装方式 29 集成测试 一次性组装方式 集成测试 一次性组装方式 30 一次性组装方式的做法是先分散测试 再集中起来一次完成集成测试 因此其特点是 可以并行调试所有模块 因此充分利用人力 加快工作进度 如果在模块的接口处存在差错 只会在最后的集成测试时一下子暴露出来 错误定位困难 集成测试 增殖式组装方式 31 这种组装方式又称渐增式组装首先对一个个模块进行模块测试 然后将这些模块逐步组装成较大的系统在组装的过程中边连接边测试 以发现连接过程中产生的问题通过增殖逐步组装成为要求的软件系统 集成测试 增殖式组装方式 32 增式测试把单元测试与集成测试结合起来进行 将模块逐步集成起来 逐步完成集成测试 优点 把可能出现的差错分散暴露出来 便于找出问题和修改 一些模块在逐步集成的测试中 得到了较为频繁的考验 因而可能取得较好的测试效果实施方法 自顶向下结合自底向上结合 自顶向下增式测试 33 集成步骤 主控模块作为测试驱动 所有与主控模块直接相连的模块作为桩模块 根据集成的方式 深度或广度 每次用一个替换从属的桩模块 在每个模块被集成时 都必须已经进行了单元测试 进行回归测试以确定集成新模块后没有引入错误上述过程从第2步重复进行 直到整个系统结构被集成完成 自顶向下增式测试 34 特点 这种组装方式将模块按系统程序结构 沿控制层次自顶向下进行组装 自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点 选用按深度方向组装的方式 可以首先实现和验证一个完整的软件功能 35 自顶向下增式测试 自底向上增式测试 36 工作程序 组装从最底层的模块开始 组合成一个构件 用以完成指定的软件子功能编制驱动程序 协调测试用例的输入与输出 测试集成后的构件按程序结构向上组装测试后的构件 同时除掉驱动程序 自底向上增式测试 37 这种组装的方式是从程序模块结构的最底层的模块开始组装和测试 因为模块是自底向上进行组装 对于一个给定层次的模块 它的子模块 包括子模块的所有下属模块 已经组装并测试完成 所以不再需要桩模块 在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到 自底向上增式测试 38 两种实施方法的比较 39 混合增殖式测试 40 自顶向下增殖的方式和自底向上增殖的方式各有优缺点 一般来讲 一种方式的优点是另一种方式的缺点 因此 通常是把以上两种方式结合起来进行组装和测试 下面简单介绍三种常见的综合的增殖方式 混合增殖式测试 41 衍变的自顶向下的增殖测试它的基本思想是强化对输入 输出模块的和引入新算法模块的测试 并自底向上组装成为功能相当完整且相对独立的子系统 然后由主模块开始自顶向下进行增殖测试 首先对输入 输出模块和引入新算法模块进行测试 再自底向上组装成为功能相当完整且相对独立的子系统 然后由主模块开始自顶向下进行增殖测试 混合增殖式测试 42 自底向上 自顶向下的增殖测试首先对含读操作的子系统自底向上直至根结点模块进行组装和测试 然后对含写操作的子系统做自顶向下的组装与测试 回归测试这种方式采取自顶向下的方式测试被修改的模块及其子模块 然后将这一部分视为子系统 再自底向上测试 以检查该子系统与其上级模块的接口是否适配 关键模块问题 43 在组装测试时 应当确定关键模块 对这些关键模块及早进行测试 关键模块的特征 满足某些软件需求 在程序的模块结构中位于较高的层次 高层控制模块 较复杂 较易发生错误 有明确定义的性能要求 在做回归测试时 也应该集中测试关键模块的功能 其他 集成测试计划 44 集成测试必须精心计划 并与单元测试的完成时间协调起来 在制定测试计划时 应考虑如下因素 1 是采用何种系统组装方法来进行组装测试 2 组装测试过程中连接各个模块的顺序 3 模块代码编制和测试进度是否与组装测试的顺序一致4 测试过程中是否需要专门的硬件设备 考虑上述问题后 可列出各个模块的编制 测试计划表 标明每个模块单元测试完成的日期 首次集成测试的日期 集成测试全部完成的日期 以及需要的测试用例和所期望的测试结果 在缺少软件测试所需要的硬件设备时 应检查该硬件的交付日期是否与集成测试计划一致 如 若测试需要数字化仪和绘图仪 则相应测试应安排在这些设备能够投入使用之时 并需要为硬件的安装和交付使用保留一段时间 以留下时间余量 此外 在测试计划中需要考虑测试所需软件 驱动模块 桩模块 测试用例生成程序等 的准备情况 其他 集成测试完成的标志 45 判定集成测试过程完成了 可按以下几个方面检查 1 成功地执行了测试计划中规定的所有集成测试 2 修正了所发现的缺陷 3 测试结果通过了专门小组的评审 集成测试人员集成测试应由专门的测试小组来进行 测试小组由有经验的系统设计人员和程序员组成 整个测试活动要在评审人员出席的情况下进行 在完成预定的集成测试工作后 测试小组应负责对测试结果进行整理 分析 形成测试报告 测试报告内容测试报告中要记录实际的测试结果 在测试中发现的问题 解决这些问题的方法及解决之后再次测试的结果 此外还应提出目前不能解决 还需要管理人员和开发人员注意的一些问题 提供测试评审和最终决策 以提出处理意见 提交的文档集成测试需要提交的文档有 集成测试计划 集成测试规格说明 集成测试分析报告 回归测试 46 什么是回归测试 在集成测试策略的环境中 回归测试是对某些已经进行过的测试的某些子集再重新进行一遍 以保证上述改变不会传播无法预料的副作用或引发新的问题 在更广的环境里 回归测试就是用来保证 由于测试或其他原因的 改动不会带来不可预料的行为或另外的错误 回归测试可以通过重新执行所有的测试用例或其一个子集人工地进行 也可以使用自动化的捕获回放工具来进行 回归测试集包括三种不同类型的测试用例 1 能够测试软件的所有功能的代表性测试用例 2 专门针对可能会被修改而影响软件功能的附加测试 3 针对修改过的软件成分的测试 软件测试策略 47 概述单元测试集成测试确认测试系统测试验收测试 当前位置 确认测试 48 什么是确认测试有效性测试软件配置审查 确认测试 49 什么是确认测试说法众多 其中最简明的解释是检验所开发的软件是否能按顾客提出的要求运行 若能达到这一要求 则认为开发的软件是合格的 因而有的软件开发部门把确认测试称为合格性测试 qualificationtesting 这里所说的顾客要求通常指的是在软件规格说明书中确定的软件功能和技术指标 或是专门为测试所规定的确认准则 集成测试完成以后 分散开发的模块被联接起来 构成完整的程序 其中各模块之间接口存在的种种问题都已消除 于是测试工作进入确认测试 Validationtesting 确认测试 50 确认测试包括有效性测试和软件配置审查 确认测试 有效性测试 51 有效性测试 功能测试 任务是验证软件的功能和性能及其它特性是否与用户的要求一致 对软件的功能和性能要求在软件需求规格说明书中已经明确规定 它包含的信息就是软件确认测试的基础 有效性测试是在模拟的环境 可能就是开发的环境 下 运用黑盒测试的方法 验证被测软件是否满足需求规格说明书列出的需求 首先制定测试计划 规定要做测试的种类 还需要制定一组测试步骤 描述具体的测试用例 确认测试 有效性测试 52 通过实施预定的测试计划和测试步骤 确定软件特性是否与需求相符 确保所有的软件功能需求都能得到满足 所有的软件性能需求都能达到 所有的文档都是正确且便于使用 对其它软件需求 如可移植性 兼容性 出错自动恢复 可维护性等 都进行测试 确认是否满足 确认测试 有效性测试 53 在全部软件测试的测试用例运行完后 所有的测试结果可以分为两类 测试结果与预期的结果相符 这说明软件的这部分功能或性能特征与需求规格说明书相符合 从而这部分程序被接受 测试结果与预期的结果不符 这说明软件的这部分功能或性能特征与需求规格说明不一致 这时需要开列一张软件各项缺陷表或软件问题报告 通过与用户的协商 解决所发现的缺陷和错误 确认测试 软件配置复查 54 确认测试的另一个重要环节是配置复审 软件配置复查的目的是保证 软件配置的所有成分都齐全 各方面的质量都符合要求 具有维护阶段所必需的细节 已经编排好分类的目录 文件资料包括 用户所需资料 用户手册 操作手册 需求规格说明书 SRS 设计资料 设计说明书 源程序及测试资料 测试说明书 测试报告 在确认测试的过程中 除了人工审查软件配置之外 还应当严格遵守用户手册和操作手册中规定的使用步骤 检查这些文档资料的完整性和正确性 必须仔细记录发现的遗漏和错误 并且适当地补充和改正 55 确认测试应交付的文档有 确认测试分析报告最终的用户手册和操作手册项目开发总结报告 确认测试 软件测试策略 56 概述单元测试集成测试确认测试系统测试验收测试 当前位置 57 系统测试概述几种系统测试强度 压力 测试安全测试 可靠性测试和恢复测试兼容性测试 系统测试 58 什么是系统测试系统测试 是将通过确认测试的软件 作为整个基于计算机系统的一个元素 与计算机硬件 外设 某些支持软件 数据和人员等其它系统元素结合在一起 在实际运行环境下 对整个计算机系统进行一系列的组装测试和确认测试 系统测试的目的在于通过与系统的需求定义作比较 发现软件与系统的定义不符合或与之矛盾的地方 系统测试的测试用例应根据需求分析规格说明来设计 并在实际使用环境下来运行 系统测试 系统测试 59 为什么要进行系统测试 由于软件只是计算机系统中的一个组成部分 软件开发完成之后 最终还要和系统中的硬件系统 某些支持软件 数据信息等其他部分配套运行 因此 在投入运行前要完成系统测试 以保证各组成部分不仅能单独的得到检验 而且在系统各部分协调工作的环境下也能正常工作 这里所说的系统组成部分除去软件外 还可能包括计算机硬件及其相关的外围设备 数据及其收集和传输机构 掌握计算机系统运行的人员及其操作等 甚至还可能包括受计算控制的执行机构 显然 系统测试已经完全超出了软件工作的范围 然而 软件在系统中毕竟占有相当重要的位置 软件的质量如何 软件的测试工作进行得是否扎实势必与能否顺利 成功地完成系统测试关系极大 另一方面 系统测试实际上是针对系统中各个组成部分进行的综合性检验 尽管每一个检验有着特定的目标 然而所有的检测工作都要验证系统中每个部分均已得到正确的集成 并能完成指定的功能 系统测试 60 以下分别简要说明几种系统测试 强度测试 性能测试目的虽不同 但方法类似 通常会用特定的测试工具 来模拟超常的数据量 负载等 监视系统的各项性能指标 安全测试 可靠性测试和恢复测试正确性测试兼容性测试 系统测试 强度测试 61 强度测试 压力测试 检验系统能力的最高实际限度 是检查在系统运行环境不正常乃至发生故障的情况下 系统可以运行到何种程度的测试 进行强度测试时 让系统的运行处于资源的异常数量 异常频率和异常批量的条件下 遵循的一些准则为 把输入数据速率提高一个数量级 确定输入功能将如何响应 设计需要占用最大存储量或其它资源的测试用例进行测试 设计出在虚拟存储管理机制中引起 颠簸 的测试用例进行测试 设计出会对磁盘常驻内存的数据过度访问的测试用例进行测试 例如 如果正常的中断平均频率为每秒一到二次 强度测试设计为每秒10次中断 又如 某系统正常运行可支持10个终端并行工作 强度测试则检验15个终端并行工作的情况 系统测试 强度测试 62 测试环境测试环境包括硬件环境 服务器 客户端等 网络环境 通信协议 带宽等 测试程序 数据准备等 分析强度测试中易出现瓶颈处 从而有目的地调整测试环境或测试策略 使强度测试反映出软件的性能 压力稳定测试 在选定压力下 持续24小时以上进行稳定性测试 破坏性加压测试 不断加压 造成系统崩溃或让问题暴露 系统测试 强度测试 63 问题分析强度测试常采用黑盒测试方法 测试人员很难定位问题根源 所以适当的分析和详细记录十分重要 查看服务器上的进程及相应的日志文件可能立刻找到问题的关键 查看监视系统性能的日志文件 找出问题出现的关键时间 系统状态 检查测试运行参数 适当调整 重新测试 看问题能否再现 对问题进行分解 屏蔽某些因数或功能 试着重现问题 累积效应测试中最好不要重做系统 因为这会忽略累积效应 使一些缺陷无法被发现 系统测试 性能测试 64 性能测试性能测试是要检查系统是否满足在需求说明书中规定的性能 特别是对于实时系统或嵌入式系统 性能测试常常需要与强度测试结合起来进行 并常常要求同时进行硬件和软件检测 通常 对软件性能的检测表现在以下几个方面 响应时间 吞吐量 辅助存储区 例如缓冲区 工作区的大小等 处理精度 等等 为记录性能需要在系统中安装必要的量测仪表或是为度量性能而设置的软件 或程序段 系统测试 安全性测试 65 概述软件不安全性因素了解动机二种级别的安全性方法威胁模式分析攻击的几种方法几个安全性编程问题了解缓冲区溢出使用安全的字符串函数计算机取证 软件安全性测试 66 软件不安全性因素不安全的软件 是有着巨大缺陷的软件ISO8402 安全性是 使伤害或损害的风险限制在可接受的水平内 安全测试检查系统对不安全因素的防范能力 不安全的因素有 黑客 病毒 蠕虫 间谍软件 后门程序 木马 拒绝服务攻击等 驾驶攻击 随着在城域网中普及无线高保真 WiFi 网络 黑客们可驾驶车子 带着笔记本 在城市的街道上兜圈子 一旦搜索到未受保护的无线网络 即进行攻击 这种技术就是 驾驶攻击 软件安全性测试 67 了解动机了解动机能帮助软件测试员考虑到测试的软件中有哪些安全方面的漏洞 1 挑战 成名2 好奇3 使用 借用4 恶意破坏5 偷窃 软件安全性测试 68 二种级别的安全性应用程序级的安全性系统级别的安全性测试目标应用程序级的安全性 核实操作者只能访问其所属的用户类型已被授权访问的那些功能和数据 系统级别的安全性 核实只有具备权限的用户才能访问系统和应用程序 软件安全性测试 69 威胁模式分析 threatmodeling 威胁模式分析 来源于 WritingSecureCode MicrosoftPress 2003 secondedition 目的是由评审小组查找产品特性设置方面可能会引起安全漏洞的地方 根据这些信息 相应的小组可以选择对产品做修改 花更多的努力设计特定的功能 或者集中精力测试潜在的故障点 最终 使产品更加安全 威胁模型分析的步骤如下 软件安全性测试 70 威胁模式分析步骤1 构建威胁模型分析小组对于小组来说 重要的一点是了解他们的最初目标不是解决安全问题 而是确定安全问题 在后期可以隔离安全威胁 设计解决方案 2 确认价值考虑系统所有的东西对于一个入侵者来说价值有多大 3 创建一个体系结构总体图要确认计划用在软件中的以及如何实现互连的技术 创建一个体系结构图表示出主要的技术模块和它们之间如何通信 确认不同技术和其证明之间的信任边界 以及为了访问数据必须发生的授权 4 分解应用程序这是一个格式化的过程 用来确认数据所在位置以及如何通过系统 软件安全性测试 71 威胁模式分析步骤 续 5 确认威胁一旦完全理解了所有的部分 价值 体系结构 数据 威胁模型分析小组可以转向确认威胁 每一个部分都应该考虑成为威胁目标 并且应假设它们会受到攻击 6 记录威胁每个威胁都必须用文档记录 并且应进行跟踪以确保其被解决 文档是一种简单方式 用于描述威胁 目标 攻击可能采用的方式 系统用于防御攻击有哪些反制手段 7 威胁等级评定理解并非所有的威胁生来就平等 可用恐怖公式来确定每个威胁的等级 软件安全性测试 72 恐怖公式 DREADFormula 1 潜在的危害 如果被黑 损害多大 2 可反复性 被黑的几率 3 可利用性 黑的技术难度 4 受影响的用户 有多少 5 可发现性 黑客发现漏洞的可能性 在以上5个方面打分 1表示低 2表示中等 3表示高 然后加起来 获得5 15间的一个值 作为每个威胁的安全等级 软件安全性测试 73 软件安全是一项功能吗 软件漏洞是一个缺陷吗 软件安全可以简单地看做是软件产品或系统的另外一项功能 软件测试员不需要拿到一份清楚明白地定义软件安全性是如何实现的产品说明书 软件测试员也不能假设威胁模型分析是完全和准确的 注 测试安全缺陷是失效性测试行为 也常常覆盖产品中没有被完全理解和说明的部分 软件安全性测试 74 攻击的几种方法安全测试期间 测试人员假扮非法入侵者 采用各种办法试图突破防线 如 以系统输入为突破口 利用输入的容错性进行正面攻击 申请和占用过多的资源压垮系统 以破坏安全措施 从而进入系统 故意使系统出错 利用系统恢复的过程 窃取用户口令及其它有用的信息 通过浏览残留在计算机各种资源中的垃圾 无用信息 以获取如口令 安全码 译码关键字等信息 浏览全局数据 期望从中找到进入系统的关键字 浏览那些逻辑上不存在 但物理上还存在的各种记录和资料等 理论上 只要有足够的时间和资源 没有无法进入的系统 因此安全设计的准则是使非法入侵的代价超过被保护信息的价值 此时非法侵入者已无利可图 软件安全性测试 75 了解缓冲区溢出任何软件产品中都有一个安全问题 缓冲区溢出 如 数据引用错误 由于使用没有被正确申明和初始化的变量 常数 数组 字符串或记录引起的缺陷 缓冲区溢出就是这种缺陷 由于字符串的不正确处理引起的缓冲区溢出是常见的一种代码编写错误 其结果是导致安全漏洞 JPEG病毒就是利用了缓冲区溢出 软件安全性测试 76 使用安全的字符串函数传统的字符串函数功能齐全 但没有考虑安全性 为了让字符串处理变得安全 开发或改进了一组新的函数 叫安全字符串函数 SafeStringFunctions 在windowsXP的SP1以后版本 最新的windowsDDK和平台SDK中已经具有 常用的操作系统 编译器 处理器也具有其它很多实现了安全字符串的商用的或免费的库 使用新函数的好处1 每个函数接收目标缓冲的长度作为输入 这样函数就能确保在写入时不会超过缓冲区的长度 2 函数空字符中止所有的输出字符串 即空字符作为字符串的结束符 3 所有函数返回一个NTSTATUS值 该值只有一个可能成功的代码 调用函数能轻易地确定函数的执行是否成功 4 每个都提供版本 一个支持单字节的ASCII字符 另一个支持双字节的Unicode字符 软件安全性测试 77 计算机取证用户变更时未被删除的保留数据叫做潜在数据 潜在数据是潜在的安全漏洞 需要在小组采用的任何威胁模型分析中进行讨论 也许这些数据不会被看成是产品的问题 也许会被看成是一个大问题 潜在数据的更复杂的例子是由计算机安全专家用来发现可以用做犯罪调查的证据 可靠性测试 78 ISO9126 1991定义 软件的可靠性是指 在规定的一段时间和条件下 软件维持其性能水平的能力有关的一组属性 可用成熟性 容错性 易恢复性三个基本子特性来度量 可靠性测试是从验证的角度出发 检验系统的可靠性是否达到预期的目标 同时给出当前系统可能的可靠性增长情况 对可靠性性测试来说 最关键的测试数据包括失效间隔时间 失效修复时间 失效数量 失效级别等 根据获得的测试数据 应用可靠性模型 可以得到系统的失效率及可靠性增长趋势 可靠性指标有时很难测试 通常采用平均无故障时间或系统投入运行后出现的故障不能大于多少数量这些指标来对可靠性进行评估 系统测试 79 恢复测试是要证实在克服硬件故障 包括掉电 硬件或网络出错等 后 系统能否正常地继续进行工作 并不对系统造成任何损害 为此 可采用各种人工干预的手段 模拟硬件故障 故意造成软件出错 不能正常工作 进而检验系统的恢复能力 检查包括 错误探测功能 系统能否发现硬件失效与故障 能否切换或启动备用的硬件 在故障发生时能否保护正在运行的作业和系统状态 在系统恢复后能否从最后记录下来的无错误状态开始继续执行作业 等 掉电测试 软件系统在发生电源中断时能否保护当时的状态且不毁坏数据 然后在电源恢复时从保留的断点处重新进行操作 如果系统本身能够自动地进行恢复 则应检验 重新初始化 检验点设置机构 数据恢复以及重新启动是否正确 如果这一恢复需要人为干预 则应考虑平均修复时间是否在限定的范围以内 兼容性测试 80 兼容性测试软件兼容性测试是检测各软件之间能否正确地交互和共享信息 其目标是保证软件按照用户期望的方式进行交互 使用其它软件检查软件操作的过程 软件兼容的实例 从Web页面剪切文字 然后在文字处理程序中打开的文档中粘贴 从电子表格程序保存账目数据 然后在另一个完全不同的电子表格程序中读入这些数据 使图形处理软件在同一操作系统下的不同版本正常工作 使文字处理程序从联系人管理程序中读取姓名和地址 打印个性化的邀请函和信封 升级到新的数据库程序 读入现存所有数据库 并能够像老版本一样对其中的数据进行处理 兼容性测试 续 81 兼容性的测试通常需要解决以下问题 1 新开发的软件需要与哪种平台 操作系统 Web浏览器或操作环境 和应用软件保持兼容 如果要测的软件是一个平台 那么要求什么应用程序能在其上运行 2 应该遵守哪种定义软件之间交互的标准或者规范 3 软件使用何种数据与其它平台 与新的软件进行交互和共享信息 也就是说 兼容性通常有4种 向前兼容与向后兼容 不同版本间的兼容 标准和规范 数据共享兼容 兼容性测试 续 82 1 向前兼容和向后兼容向前兼容是指可以使用软件的未来版本 向后兼容是指可以使用软件的以前版本 并非所有的软件都要求向前兼容和向后兼容 这是软件设计者需要决定的产品特性 例 使用文本文件可以对向前兼容和向后兼容作一个简单的演示 在Windows98上用Notepad创建的文本文件 它可以向后兼容MS DOS1 0后的所有版本 它还可以向前兼容WindowsXP甚至以后的版本 兼容性测试 续 83 兼容性测试 续 84 2 不同版本间的兼容不同版本间的兼容是指多种平台和应用软件的多个版本之间是否能够正常工作 如 测试一个应用软件对于操作系统的兼容性 可能涉及 跨平台测试同OS的不同版本的兼容性测试OS不同语言版的兼容性测试不同厂家 相同类型的OS兼容性测试 兼容性测试 续 85 2 不同版本间的兼容 续 再如 若要测一个流行的操作系统的新版本 当前操作系统上可能有成千上万的程序 则新操作系统目标是与它们百分之百兼容 因为不可能在一个操作系统上测试所有的软件程序 因此需要决定哪些是最重要的 必须进行的 选择 重要 的程序原则是 流行程度 利用销售记录选择前100或1000个最流行的程序 年头 应该选择近3年内的程序和版本 类型 把软件分为画图 书写 财务 数据库 通信等类型 从每一种类型中选择测试软件 生产厂商 另一个原则是根据制作软件的公司来选择软件 85 兼容性测试 续 86 3 标准和规范适

温馨提示

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

评论

0/150

提交评论