几种常见软件可靠性测试方法综述及应用对比
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语言的代码覆盖率工具; (3) 测试人员要具备阅读代码的能力, 其对开发语言的熟悉
程度和程序设计经验多少决定了采用灰盒测试能够取得多大的 好处, 所以配置这方面的测试人员或进行必要的培训是必要的。
三、白盒、黑盒、灰盒测试方法的优缺点比较
测试方法 优点
缺点
白盒 测试
1、迫使测试人员去仔细思考软件的实现 2、可以检测代码中的每条分支和路径 3、揭示隐藏在代码中的错误 4、对代码的测试比较彻底 5、最优化
1、昂贵 2、无法检测代码中遗漏的路径和数据敏 感性错误
3、不验证规格的正确性
1、结果取决于测试例的设计, 测试例的设
计部分来势来源于经验, OU SPG 的东西
很值得借鉴
2、没有状态转换的概念, 目前一些成功的
1、基本上不用人管着, 如果程序停止运行 例子基本上都是针对 PDU 来做的, 还做
黑盒 了一般就是被测试程序crash 了
科技信息
博士·专家论坛
动测试) 是把测试对象看作一个黑盒子。利用黑盒测试法进行动 态测试时, 需要测试软件产品的功能, 不需测试软件产品的内部 结构和处理过程。
采用黑盒技术设计测试用例的方法有: 等价类划分、边界值 分析、错误推测、因果图和综合策略。
黑盒测试的目的是发现以下类型的错误: (1) 功能错误或遗漏; (2) 界面错误; (3) 数据结构或外部数据库访问错误; (4) 性能错误; (5) 初始化和终止错误。 黑盒测试的实施步骤: (1) 测试计划, 根据用户需求报告中关于功能要求和性能指 标的规格说明书, 定义相应的测试需求报告, 即制订黑盒测试的 最高标准, 以后所有的测试工作都将围绕着测试需求来进行, 符 合测试需求的应用程序即是合格的, 反之即是不合格的; 同时, 还要适当选择测试内容, 合理安排测试人员、测试时间及测试资 源等。 (2) 测试设计, 将测试计划阶段制订的测试需求分解、细化 为若干个可执行的测试过程, 并为每个测试过程选择适当的测 试用例 (测试用例选择的好坏将直接影响到测试结果的有效 性)。 (3) 测试开发, 建立可重复使用的自动测试过程。 (4) 测试执行, 执行测试开发阶段建立的自动测试过程, 并 对所发现的缺陷进行跟踪管理。测试执行一般由单元测试、组合 测试、集成测试、系统联调及回归测试等步骤组成, 测试人员应 本着科学负责的态度, 一步一个脚印地进行测试。 (5) 测试评估, 结合量化的测试覆盖域及缺陷跟踪报告, 对 于应用软件的质量和开发团队的工作进度及工作效率进行综合 评价。 小结: 黑盒测试注重于测试软件的功能性需求, 也即黑盒测 试使软件工程师派生出执行程序所有功能需求的输入条件。 黑 盒测试并不是白盒测试的替代品, 而是用于辅助白盒测试发现 其他类型的错误。 3、灰盒测试 灰盒测试是基于程序运行时刻的外部表现同时又结合程序 内部逻辑结构来设计用例, 执行程序并采集程序路径执行信息 和外部用户接口结果的测试技术。 灰盒测试法的目的是验证软件满足外部指标要求以及软件 的所有通道都进行了检验。 通过该程序的所有路径都进行了检 验和验证后, 就得到了全面的验证。 完成功能和结构验证后, 就 可随机地一次变化一行来验证软件测试用例在软件遇到违背原 先验证的不利变化时软件的可靠性。 灰盒测试需要的条件: (1) 需要在测试中, 除了部署产品之外, 还有就是程序源代 码, 不管外部是多少漂亮界面或易用的功能, 最终都是由源代码 来实现的。所以在部署时, 要安装源代码。从源代码编译生成的 目录中运行软件。 (2) 需要代码覆盖率工具的配置; 部署可以针对本软件开发
参考文献 [ 1 ]马瑞芳, 王会燃.《计算机软件测试方法的研究》. 小型微 型计算机系统, 2003 年 12 月期 [ 2 ]徐明, 杨文.《软件测试与软件可靠性的研究》. 中国科技 信息, 2006 年第 11 期 [ 3 ]陆民燕, 陈雪松.《软件可靠性测试及其实践》. 测控技 术, 2000 年 19 卷第 5 期
引言 软件可靠性工程是指为了满足软件的可靠性要求而进行的
一系列设计、分析、测试等工作。 其中确定软件可靠性要求是软 件可靠性工程中要解决的首要问题, 软件可靠性测试是在软件 生存周期的系统测试阶段提高软件可靠性水平的有效途径。 各 种测试方法、测试技术都能发现导致软件失效的软件中残存的 缺陷, 排除这些缺陷后, 一般来讲一定会实现软件可靠性的增 长, 但是排除这些缺陷对可靠性的提高的作用却是不一样的。其 中, 软件可靠性测试能最有效地发现对可靠性影响大的缺陷, 因 此可以有效地提高软件的可靠性水平。
—7—
题。 这些在堆的问题中表现的更为突出
1、能够进行基于需求的覆盖测试和基于
程序路径覆盖的测试
2、测试结果可以对应到程序内部路径, 便
灰盒 测试
于bug 的定位、分析和解决
1、投入的时间比黑盒测试大概多 20-
3、能够保证设计的黑盒测试用例的完整 40% 的时间
性, 防止遗漏软件的一些不常用的功能或 2、对测试人员的技术要求更高
软件可靠性测试也是评估软件可靠性水平, 验证软件产品 是否达到软件可靠性要求的重要且有效的途径。
一、软件可靠性测试概念 “测试”一般是指“为了发现程序中的错误而执行程序的过 程”。 但是在不同的开发阶段、对于不同的人员, 测试的意义、目 的及其采用的方法是有差别的。在软件开发的测试阶段, 测试的 主要目的是开发人员通过运行程序来发现程序中存在的缺陷、 错误。 而在产品交付、验收阶段, 测试主要用来验证软件产品是 否达到用户的要求。 或者说, 对于开发人员, 测试是发现缺陷的 一种途径、手段, 而对于用户, 测试则是验收产品的一种手段。 二、软件测试方法 软件测试方法有以下几个主要概念: 白盒测试、黑盒测试、 灰盒测试。 白盒测试 (W h ite- box testing 或 g la ss- box testing) 是通 过程序的源代码进行测试而不使用用户界面。 这种类型的测试 需要从代码句法发现内部代码在算法, 溢出, 路径, 条件等等中 的缺点或者错误, 进而加以修正。 黑盒测试 (B lack- box testing) 是通过使用整个软件或某种 软件功能来严格地测试, 而并没有通过检查程序的源代码或者 很清楚地了解该软件或某种软件功能的源代码程序具体是怎样 设计的。 测试人员通过输入他们的数据然后看输出的结果从而 了解软件怎样工作。 通常测试人员在进行测试时不仅使用肯定 出正确结果的输入数据, 而且还会使用有挑战性的输入数据以 及可能结果会出错的输入数据以便了解软件怎样处理各种类型 的数据。 灰盒测试 (G ray- box testing) 就像黑盒测试一样是通过用 户界面测试, 但是测试人员已经有所了解该软件或某种软件功 能的源代码程序具体是怎样设计的, 甚至于还读过部分源代码, 因此测试人员可以有的放矢地进行某种确定的条件或功能的测 试。这样做的意义在于: 如果你知道产品内部的设计和透过用户 界面对产品有深入了解, 你就能够更有效和深入地从用户界面 来测试它的各项性能。 1、白盒测试
科技信息
博士·专家论坛
几种常见软件可靠性测试方法综述及应用对比
上海交通大学 陈晓芳
[ 摘 要 ]软件可靠性测试是软件可靠性工程的一项重要工作内容, 是满足软件可靠性要求、评价Hale Waihona Puke Baidu件可靠性水平及验 证软件产品是否达到可靠性要求的重要途径。本文探讨、研究了软件可靠性测试的基本概念, 分析、对比了几种软件可 靠性测试主要方法的优缺点。 [ 关键词 ]软件可靠性 软件可靠性测试 软件测试方法
不到针对被测试程序的状态转换来做
测试 2、设计完测试例之后, 下来的工作就是爽 3、就没有状态概念的测试来说, 寻找和确
了, 当然更苦闷的是确定crash 原因 定 造成程序 crash 的测试例是个麻烦事
情, 必须把周围可能的测试例单独确认一
遍。而就有状态的测试来说, 就更麻烦了,
尤其不是一个单独的 test case 造成的问
功能组合
4、能够需求或设计不详细或不完整对测
试造成的影响
四、总结 软件可靠性是软件质量评估的最重要指标之一, 本文阐述
了软件可靠性测试的基本概念和主要方法, 重点对常用方法的 优缺点进行了比较; 其实软件可靠性测试方法不下有 20 种之 多, 要根据不同的环境、软件类型选择不同的测试方法, 才能确 保软件的可靠。
—6—
白盒测试又称结构测试, 透明盒测试、逻辑驱动测试或基于 代码的测试。白盒测试是一种测试用例设计方法, 盒子指的是被 测试的软件, 白盒指的是盒子是可视的, 你清楚盒子内部的东西 以及里面是如何运作的。
白盒的测试用例需要做到: (1) 保证一个模块中的所有独立路径至少被使用一次; (2) 对所有逻辑值均需测试 true 和 false; (3) 在上下边界及可操作范围内运行所有循环; (4) 检查内部数据结构以确保其有效性。 白盒测试的目的: 通过检查软件内部的逻辑结构, 对软件中 的逻辑路径进行覆盖测试; 在程序不同地方设立检查点, 检查程 序的状态, 以确定实际运行状态与预期状态是否一致。 白盒测试的特点: 依据软件设计说明书进行测试、对程序内 部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑 路径进行覆盖测试。 白盒测试的实施步骤: (1) 测试计划阶段: 根据需求说明书, 制定测试进度。 (2) 测试设计阶段: 依据程序设计说明书, 按照一定规范化 的方法进行软件结构划分和设计测试用例。 (3) 测试执行阶段: 输入测试用例, 得到测试结果。 (4) 测试总结阶段: 对比测试的结果和代码的预期结果, 分 析错误原因, 找到并解决错误。 白盒测试的方法: 总体上分为静态方法和动态方法两大类。 静态分析是一种不通过执行程序而进行测试的技术。 静态分析 的关键功能是检查软件的表示和描述是否一致, 没有冲突或者 没有歧义。 动态分析的主要特点是当软件系统在模拟的或真实 的环境中执行之前、之中和之后, 对软件系统行为的分析。 动态 分析包含了程序在受控的环境下使用特定的期望结果进行正式 的运行。它显示了一个系统在检查状态下是正确还是不正确。在 动态分析技术中, 最重要的技术是路径和分支测试。 小结: 白盒测试是一种被广泛使用的逻辑测试方法, 是由程 序内部逻辑驱动的一种单元测试方法。 只有对程序内部十分了 解才能进行适度有效的白盒测试。 但是贯穿在程序内部的逻辑 存在着不确定性和无穷性, 尤其对于大规模复杂软件。因此我们 不能穷举所有的逻辑路径, 即使穷举也未必会带来好运 (穷举不 能查出程序逻辑规则错误, 不能查出数据相关错误, 不能查出程 序遗漏的路径)。要正确使用白盒测试, 就要先从代码分析入手, 根据不同的代码逻辑规则、语句执行情况, 选用适合的覆盖方 法。任何一个高效的测试用例, 都是针对具体测试场景的。逻辑 测试不是片面的测试正确的结果或是测试错误的结果, 而是尽 可能全面地覆盖每一个逻辑路径。 2、黑盒测试 黑盒测试 (B lack - box T esting, 又称为功能测试或数据驱