范文一:一种多维度的软件系统可靠性测试方法研究
一种多维度的软件系统可靠性测试方法研究
一种多维度的软件系统可靠性测试方法研究
摘要:传统的软件可靠性测试更多偏重于软件的功能方面。针对于这个不足之处,提出了结合操作剖面和性能测试的一种相对完善、全面的软件可靠性测试方法。归纳总结软件内部可靠性设计、外部高可用技术以及容灾恢复规范等诸多影响软件系统可靠性的因素,设计可靠性操作剖面要全面考虑这些因素。此方法是对传统方法的有用补充。最后通过一个案例简要介绍了该方法。
关键词:可靠性测试;可靠性设计;高可用技术;容灾恢复;性能测试
0引言
对于软件可靠性不同的标准有着不同的定义,从国内标准和国外标准两个方面看:
IEEE 对软件可靠性做出了如下的定义[1]:
(1)规定的条件下,在规定的时间内,软件不引起系统失效的概率;(2)在规定的时间周期内,在所述条件下软件执行所要求功能的能力。
我国GB/T16260.1-2006《软件工程产品质量第1部分:质量模型》对可靠性的定义[2]:在指定的使用条件下,软件产品维持规定的性能级别的能力。该标准并解释软件不会损耗和老化。软件可靠性取决于软件产品的使用方式和所选择的程序选项,与时间无关,可靠性的定义已经被
扩展为“维持所规定的性能级别的能力”,而不是“完成所需功能”。
上述两种说法的侧重点略有不同,IEEE 强调的是概论和能力,偏重功能,而国标强调的是能力,偏向于性能。虽然侧重点不一样,但是可以看出计算机软件系统是指由系统软件、支撑软件、应用软件以及相关硬件组成的计算机软件系统。作为一个综合的整体系统,其可靠性依赖因素不仅仅是其软件本身,还涉及多方面的因素,包括人员、技术、管理等。可靠性的评价不局限于功能性,应该扩展到性能方面。
本文立足于分析影响软件系统特定使用环境下的可靠性的脆弱点,提出从软件本身和外部使用环境所涉及的高可用技术和管理制度等多方面设计软件可靠性测试操作剖面,并结合性能测试进行可靠性的验证测试。1软件可靠性测试操作用例设计的考虑因素
1.1软件内部可靠性影响因素
通常软件内部可靠性问题是软件本身所固有的,与外部因素无关,只与软件本身的使用选项有关。例如一个有溢出错误的软件,不论软件的备份机制如何完备,当溢出错误的输入满足时,软件输出必将溢出。在严格遵循软件工程原理的基础上,为了保证和提高软件的可靠性,通常在软件设计过程中采用避错设计、查错设计、改错设计和容错设计等软件可靠性设计方法,所以从内部可靠性影响因素来说,软件可靠性测试用例应考虑如下设计以提高有效性和正确性。
(1)避错设计
软件可靠性设计的首要方法体现在预防为主的思想。软件产品在设计过程中的避错设计目的是使软件不发生错误或少发生错误。原则是控制和
减少程序的复杂性。下列方法可以在避错程序设计中参考,如参数化、公共数据和变量、非授权存取限制、无意指令跳转处理、程序检测点设置、寻址模式选用、数据区隔离、安全关键信息要求、信息存储要求、算法选择要求。
下列的结构和技术容易引起系统的缺陷,设计测试用例时优先考虑如下操作和结构类型:浮点数、指针、动态内存分配、并行、递归、中断、继承、别名、默认输入的处理。
(2)查错设计
软件查错设计是通过赋予程序自校验功能,使程序在运行中能自动发现错误的设计方法。包含被动式错误检测和主动错误检测。前者即在程序的若干部位设置检测点,等待错误出现时触发告警;后者能自动对程序状态进行检查。
对于查错设计的验证,测试用例优先考虑如下操作进行设计:按照已知的数据极限值检查数据边界的输入输出;按照变量间恒定关系检验变量的输入和结果输出;检查所有多值数据的有效性;对冗余的输入数据进行一致性检验;循环等待次数控制。
(3)改错设计
改错设计通过赋予程序自我改正错误的能力,减少错误危害程度。故障隔离技术是改错设计的常用方法。改错设计的关键前提是准确地定位软件错误原因和错误的代码,减少软件错误造成的损害,将损害限制在可以接受的范围内。
对于改错设计的验证,可靠性测试用例可以参考如下方法:用户的应
用程序或数据访问受控,其他用户不能轻易修改;应用程序引用或修改操作系统的编码或操作系统内部的数据应受控;操作系统的错误不应引起应用程序和数据的变更;应用程序不能终止操作系统工作;应用程序不能触发操作系统修改其他程序或数据。
(4)容错设计
软件容错是程序在错误已被触发的情况下,系统仍然具有正常运行能力。常用的容错设计有时间冗余、结构冗余和信息冗余。
时间冗余是以消耗时间开销为代价获取软件系统高可靠性的一种手段,如指令重复执行和程序重复执行。对于重复执行不成功时,通常发出中断,转入错误处理程序,或对程序重复技术计算、重新组合系统、放弃程序处理。
结构冗余是针对软件系统不同版本的并行运行的冗余设计。对相同的初始条件、相同的输入操作,多版本结构的结果应一致,或者对不同的结果实行表决后决定是否继续执行(多数决定、一致决定)。
信息冗余是为检测或纠正信息在运算或传输中的错误外加的一部分信息。如奇偶校验码或者类似MD5的完整性校验来确保数据完整和正确;信息之间应保持足够的安全Hamming 距离;安全关键信息的决策判断不得依赖于全“1”或全“0”的输入。
1.2软件外部可靠性影响因素
计算机软件系统是指由操作系统软件、数据库软件、应用软件等基础支撑软件以及相关硬件组成的计算机软件系统。软件作为一个系统使用时,系统不仅仅是软件本身,还包含软件系统运行的外围载体,如操作系统、
网络、服务器等。作为一个综合的整体系统,其可靠性依赖因素不仅仅是其软件本身,还涉及多方面的因素,包括人员、技术、管理等。针对软件可靠性的外部影响因素,本文从两个方面进行阐述,一是高可用技术保障,一是软件系统管理制度保障。软件外部可靠性测试用例设计可以结合上述两方面的具体情况进行设计。
(1)高可用技术
常用高可用技术主要有如下几种分类,不同的高可用技术对系统可靠性的贡献是不一样的。
①高可用技术。高可用是系统高可靠的基础,主要有如下几种实现方式:冗余技术、集群技术、远程集群技术、多路技术和虚拟机技术。
②数据备份技术。数据备份是系统高可靠的必要条件。数据备份从策略上来说有3种:全备份、增量备份和差异备份。基本上都是基于如下技术实现:Host-Based 备份、LAN-Based 备份、LAN-Free 备份和Server-Less 备份。
数据复制技术是确保数据备份的前提。主要的备份技术有如下几种:基于复制软件复制、基于存储阵列复制、基于服务器复制、基于SAN 复制和Server-Less 备份。
持续数据保护技术通过捕获或跟踪数据的变化,并将变化异地存储在生产数据之外,保证数据可以恢复到任意时间点。主要有如下几种类型:基于应用的持续数据保护、基于文件的持续数据保护和基于数据块的持续数据保护。
(2)系统服务保证类因素
对于应用级的保护,为保护系统连续正常的运行,避免系统受到未授权的修改、破坏而导致系统不可用,参考国标GB/T22239-2008中的相关部分内容, 可靠性测试中系统服务保证类的测试用例可以参考表1所列几个方面。
(3)系统灾难恢复管理体系
对于更高一级的系统级保护,可以参考GB/T20988—2007《信息安全技术信息系统灾难恢复规范》。做为系统级的可靠性保证,容灾系统的建设必不可少。对于不同的容灾级别要求,该规范作出了明确的指导。而评估一个容灾系统的建设通常可以从表2所示7个方面进行评价。可靠性测试用例设计可以借鉴参考表2。
2传统软件可靠性测试方法
软件可靠性测试方法主要有两种:基于运行剖面的可靠性测试和基于使用模型的统计测试。前者是AT&T贝尔实验室的Musa J D 在1993年提出的[3],后者是由Mills H D[4]和whittaker J A[5]提出。这两种方法构造的测试模型从不同的角度来模拟软件真实的运行环境。
这两种方法所用的术语虽有微小的差别,但它们的基本思想都是基于统计学的基本原理,即根据软件实际使用情况的统计规律的描述对软件进行随机测试。统计测试进行的前提条件就是生成如实反映系统使用情况的使用模型。以往使用模型的建立主要是通过预测和估计得出,不能如实地反映系统的真实情况。
传统的软件可靠性测试方法借鉴了硬件的可靠性测试方法,更多是偏重功能实现的角度去测试。而软件不同于硬件,软件的可靠性测试除了依赖上述传统的可靠性测试方法外,应该结合软件的性能测试进行可靠性测试,这样的可靠性测试结果更为全面,更具参考性。
3结合性能测试验证软件可靠性
本文提出了一种可靠性的测试建议作为传统可靠性测试的补充,即建议在系统性能负载较重的情况下结合传统的可靠性测试方法进行可靠性测试。
3.1测试方法介绍
同样以传统的基于操作剖面可靠性测试为例介绍测试方法:
(1)构造测试操作剖面。操作剖面的构造要素来自于第1节本文作者从软件内部和软件外部两个方面总结的可靠性影响因素。综合上述的梳理分析,计算机软件系统作为一个整体,其可靠性测试剖面应参考内部和外部两方面的影响因素,涉及到技术、人员和管理多个方面。
(2)模拟软件系统真实使用场景下的性能负载,此性能负载作为执行操作剖面的背景数据。
(3)执行测试剖面操作,结合性能测试评价软件系统的可靠性。
3.2案例介绍
,在本案例中依次对软件系统执行了包括“数据RAC 故障”、“接入进程失效”、“路由进程失效”、“接入节点失效”、“路由节点故障”、“交易
服务器故障”、“额度服务器故障”和“主限号服务器故障”8个可靠性测试操作剖面。结合性能测试的10000用户在线测试,可以清晰看出相关测试剖面对软件可靠性的影响大小。
4结论
本文从软件的内部可靠性设计,结合软件系统外围运行载体的高可用技术和容灾恢复管理要素多方面,从技术、人员和管理方面提出可靠性测试用例的考虑因素。分析了传统软件可靠性测试方法来源硬件可靠性测试模式的局限性。结合实际情况,对传统测试方法进行补充建议,提出了结合性能测试和多维度测试剖面进行可靠性测试,并举例简要阐述了方法和优点。
范文二:灰盒测试方法在软件可靠性测试中的应用
() 文章编号 :100026893 20020520455204
灰盒测试方法在软件可靠性测试中的应用
李秋英 , 刘 斌 , 阮 镰 () 北京航空航天大学 011 教研室 , 北京 100083
APPL ICATIO N OF GREY2BO X TESTING M ETHOD IN SOFTWA RE REL IABIL ITY TESTING
L I Qiu2ying , L IU Bin , RUAN Lian
( )Facult y 011 , Beijing U niversit y of Aero nautics and Ast ro nautics , Beijing 100083 , China
摘 要 : 阐述了软件可靠性测试的概念和灰盒测试方法在软件可靠性测试中生成测试数据方面的应用 ,给出
了方法用于可靠性测试中的工作流程 ,分析了其与传统的可靠性测试方法相比的优越性以及尚未解决的局
限性 ,展望了未来的研究方向 。
关键词 : 软件 ;可靠性 ;运行 ;软件可靠性测试 ;灰盒测试 ;运行剖面
中图分类号 : TP311153 ; V21517 文献标识码 :A
Abstract : The co ncep t of sof t ware reliability testing and t he applicatio n of t he grey2bo x testing met hod in generating
sof t ware reliability test data are p resented. A met hod of how it is used in p ractice is given. The advantage superior
to t he t raditio nal sof t ware reliability testing met hod and limitatio n are also discussed. The research directio n in t he
f ut ure is p roposed.
Key words : sof t ware ; reliability ; operatio n ; sof t ware reliability testing ; grey2bo x testing ; operatio nal p rofile
软件可靠性测试技术作为提高软件质量和软 ,然后是较低发生概率 一般是高发生概率的缺陷
的缺陷 。 件可靠性的重要手段 ,正成为国内外软件可靠性
工程的主要研究方向 。如何通过软件可靠性测 2 灰盒测试方法的重要性 试 ,及早暴露出实际使用过程中高发生概率的软
件缺陷 ,是亟待突破的技术难关 。 灰盒测试方法是指结合白盒测试和黑盒测试
传统的软件可靠性测试方法耗费的时间长 ,的测试方法 。
测试代价高 ,同时 ,饱和效应和不精确的运行剖面 白盒测试 ,又称结构测试 ,在测试过程中测试 等因素也严重影响了对软件可靠性的估计 。针对 者可以看到被测的源程序 ,通过分析程序的内部
1 上述问题 ,本文提出了一种灵活的“灰盒测试”方 结构 ,根据其内部结构设计测试用例。 法 ,既能加速软件可靠性测试的进程 ,提高发现错 黑盒测试 ,又称功能测试 ,在测试过程中被测 误的可能性 ,又能保证生成的测试满足可靠性测 程序被视为黑盒 ,测试者在完全不考虑程序内部
试数据的统计特征 ,得到更为理想的可靠性估计 。() 结构和内部特征 或对于上述信息无从获知的情
况下 ,根据需求规格说明书设计测试用例和推断 1 软件可靠性测试的概念 1 测试结果的正确性。
软件测试是为了发现软件中存在的缺陷并予 ,这两类测试方法是从完全不同的角度 显然
以排除 ,确保软件功能满足用户需求而进行的一 出发对软件进行测试 。实践证明 ,两类方法各有 系列活动 。 侧重 ,在测试的实践中都是有效和实用的 ,不能指
软件可靠性测试是为了达到或验证用户对软 望一类方法能够完全代替另一类方法 。但显然二 件的可靠性要求而对软件进行的测试 ; 通过测试 者又各具缺点 ,这些缺点不是通过在各自的测试 发现并纠正软件中的缺陷 ,提高其可靠性水平 ,并 方法内部进行完善就能够解决的 。只有通过将二 验证其是否达到了用户的可靠性要求 。 者有效地结合 ,即进行所谓的“灰盒测试”,才能弥
软件可靠性测试能够有效地暴露在实际使用补任何一种方法的不足 ,使测试方法的机理更完
过程中影响可靠性要求的软件缺陷 ,最先暴露的善 。 传统意义上的软件可靠性测试的实践方法是 收稿日期 :2002201217 ; 修订日期 :2002206226 根据用户实际使用软件的方式 ,即运行剖面生成 文章网址 : ht tp :/ www . hkxb. net . cn/ hkxb/ 2002/ 05/ 0455/ 测试数据 ,利用测试数据驱动软件运行 ,获得失效
数据 ,利用现有的软件可靠性模型进行评估 ,直到 律 ,它与运行剖面描述的概率分布应该是一致的 。
不妨设运行剖面具有如下形式 :{ O P| O P= 可靠性估计以某种形式收敛 。软件可靠性测试从 i i
< o="" ,="" p=""> , i = 1 , 2 ,, m } ,其中 m 为软件运行 概念上讲采用的是黑盒测试方法 ,因为它是面向 i i
剖面中的运行总数 ; O 为第 i 个运行 , P为第 i 需求 、面向使用的测试 ,它不需要了解程序的结构 i i
m 以及如何实现等问题 ,测试数据的生成和可靠性 个运 行 发 生 的 概 率 , 6 P= 1 , 这 里 运 行 相 互 独 i i = 1 估计与测试中软件如何运行没有任何明确的关 立 。 系 。这种明确关系的缺乏 ,是我们反对用单纯的 由数理统计的知识我们知道软件可靠性测试 “黑盒测试”方法估计软件可靠性的出发点 。 数据集是依据上面的总体分布进行抽样而产生的
一组样本的观察值 ,因此满足下面的统计特性 。 而且 ,这种传统作法生成的测试数据中 ,很多
假设测试数据集是依据上面的分布 ,进行 N 是对程序结构的重复执行 ,使得某些结构测试的
密度高 ,某些结构测试的密度低 ,带来了许多无用 次抽样而产生的一组样本观察值 ,在 O P , O P , 1 2 的测试代价 。大量的测试数据需要花费大量的人 , O P中 的 抽 样 个 数 分 别 为 : n, n, , n 。 m m 1 2 力 、物力和财力 ,在交货期限紧张的情况下 ,往往 其中 :不能满足 ,导致获得的可靠性估计值是不可信的 。 m m
P= 1 n = N , i 因此 ,需要结合“白盒测试”的信息 ,作为衡量测试 i 6 6 i = 1 i = 1 质量和控制测试进程的手段 。那么结合哪些信息 由统计理论可知 ,有统计量
m 2以及如何有效地结合呢 ? ( ) n - N p i i T = 6 N p ii = 1 3 灰盒测试方法 N 足够大时 ,统计量 T 的 皮尔逊证明了当
2 3 () 1理论基础 人们在长期的测试实践中 ,认 m - 1 的 χ分布。因 渐近分布满足自由度为
识到 :在对程序进行的可靠性估计 、程序结构以及 此可以通过检验该统计量的分布判断测试数据集 测试量之间存在着一种重要的联系 。在这种思想 是否满足了可靠性测试数据的统计特性 。这是现 的指导下 , 人们设计了各种方法来表示测试量 。 有的软件可靠性测试方法中常常被忽视的内容 。
() 3覆盖信息的利用和存在的问题 引入文 基于代码覆盖的度量是一种公认的简单可行的方
献 4 中定义的“有用测试量”的概念 。所谓的“有 法 。一些软件可靠性方面的理论家提出 : 在可靠 用测试量”是指当且仅当扩大了某种覆盖的测试 2 性分析中必须密切注意软件结构。 软件可靠量 。例 如 , k 个 测 试 数 据 达 到 了 10 % 的 语 句 覆
性测试是按照用户实际使用软件的 盖 ,若 k + 1 个测试数据使覆盖达到 15 % ,则说第
( 方式 来 测 试 软 件 , 软 件 的 运 行 剖 面 Operatio nal k + 1 个测试数据是有用的 。忽略掉无用而费力
) Profile是定量描述用户实际使用软件方式的有
力工具 ,也是软件可靠性测试最主要的特征 。 的测试量 ,将过滤后的数据用于可靠性估计模型 。
本文提出的“灰盒测试”方法将已有的时域方 如果用 R?和 ?R 分别表示原始和过滤后的数据 0 r
法和测试中获得的覆盖信息相结合 ,利用软件可 从 Musa 模型中得到的可靠性估计 , 那么分析可 靠性测试最主要的特征 ,结合结构覆盖信息作为 知 R?> R? , 因此用过滤后的数据可以得到更为 0 r
的统计特性 ,即高发生概率的运行抽样点多 ,低发
生概率的运行抽样点少 ;按什么样的顺序 ,体现的
是可靠性测试数据在时间上出现的先后次序 。
文献 4 中提出的方法没有解决上述两个问 题 。过滤后的数据滤掉了不增加覆盖的数据 ,往
往滤掉了运行剖面中高发生概率的执行相同程序
结构的输入 ,会导致过滤后的数据的分布特征不
符合运行剖面所代表总体的分布特征 。顺序上的
不满足是显而易见的 ,这种提高覆盖的抽取方式
使得运行剖面中后发生可能的输入提前发生的可
能性大大提高了 。上述不足使得该方法得到的可
靠性测试数据可能不能代表实际的可靠性测试数
据 ,得到的可靠性估计值与实际值的偏差可否忽
略是一个不确定的问题 。
() 4灰盒测试方法在软件可靠性测试中的应
用 文章提出的基于“灰盒测试”的软件可靠性测
试方法 ,试图解决上述第一个问题 。首先通过运
图 1 灰盒测试方法的工作流程图 行剖面生成一定数量的测试数据 ,由统计理论可 Fig. 1 Wo r k flowchart of grey2bo x testing met ho d 知 ,这些测试数据与母体具有相同的分布 。用这 试数据使得实际使用中后发生的输入提前发生的 些测试数据驱动软件运行 ,获得失效数据后 ,利用 可能性大大提高了 。这是该方法需要改进之处 。 可靠性模型估计可靠度 。如果可靠度的估计值大 在后续的研究工作中 ,将通过引入“压缩比因 于用户提出的可靠度指标 ,则可以停止测试 。否 子”的方法 ,将引入覆盖信息的测试数据“恢复”到 则通过有针对性地为提高覆盖率而生成测试数 未引入覆盖信息时的测试数据 ,解决输入顺序的 据 ,当此时的测试数据集合的分布与母体具有相 问题 。具体关于定义“压缩比因子”的方法和“恢 同的分布时 ,重复上述测试 、估计 、比较的过程直 复”测试数据的方法 ,都是需要研究解决的问题 。 至可靠度的估计值达到可靠度指标 。否则 ,给测
试数据集合一个增量 ,该增量按照运行剖面进行 4 结 论 抽取 ,再重复上述步骤 ,直至可靠度的估计值达到 () 1本文提出的灰盒测试方法 ,能够将白盒 可靠度指标 。工作流程图详见图 1 所示 。 测试和黑盒测试方法有效地结合起来 ,不仅保证 该方法的优越性 : ?当运行剖面准确时 ,该方测试数据满足运行剖面的统计特征 ,而且保证测 法生成的测试数据既满足可靠性测试数据的总体 试数据的覆盖率尽可能高 。 分布特征 ,又具有较高的覆盖率 ,具有发现更多的 () 2本文提出的方法尚存在不足 ,不能保证 缺陷的可能性 。 ?当运行剖面不够准确时 ,该方 测试数据的时序特征 ,这将在后续的研究工作中 法通过较高的覆盖率也能够保障高发生概率的错 加以改进 。 误被发现的可能性大 。 ?克服由于饱和效应带来
的对可靠性估计过高的问题 。参 考 文 献
综上所述 ,该方法能够保证在同样的基础上 , 郑人杰. 计算机软件测试技术 M . 北京 : 清华大学出版 1 所需的测试数据的数量尽可能小 ,并且满足运行 社 ,1992 , 44 - 45 . 剖面的统计特征 ,保证覆盖率尽可能高 。 ( Zheng R J . Co mp uter sof t ware testing technique M . Bei
)jing : Tsinghua U niversit y Press , 1992 . 44 - 45 . () 5方法的局限性 文章提出的方法解决了
Michael R. L yu 主编. 软件可靠性工程手册M . 刘喜成译. 2 文献 4 中提出的方法未能解决的问题 ,通过总体 北京 :电子工业出版社 ,1997 . 356 - 375 . 分布类型的假设检验保证了测试数据满足运行剖 (Michael R. L yu Ed. , Handboo k of sof t ware reliabilit y en 面的统计特征 。 gneering M . Liu X C Tr . Bei jing : Publishing Ho use of Elec
需要指出的是 ,该方法同样未能解决上述分 )t ro nics Indust ry , 1997 . 356 - 375 .
贺国芳. 可靠性数据处理与寿命评估M . 北京 : 北京航空 3 析中的第二个问题 。利用覆盖信息辅助得到的测
( ) 航天大学出版社 ,1991 , 122 - 123 . 刘斌 1968 - ,男 ,山西太原人 ,北京航空航天大学博士后 ,主要
研究方向为软件可靠性工程 、软件可靠性测试及软件可靠性仿真 ( He G F. Reliabilit y data p rocessing and life2span assessment 测试 ,联系电话 :82316440 ,通信地址 : 北京航空航天大学 011 教 M . Bei jing : Beijing U niversit y of Aero nautics and Ast ro nau2 研室 ,100083 。 )tics Press , 1991 , 122 - 123 . ( ) 阮镰 1938 - ,男 ,上海人 , 北京航空航天大学工程系统工程系 Chen M , Ho rgan J R , Mat hur A P , et al . A time/ st ruct ure 4 教授 、博士生导师 , 主要从事软件可靠性工程方面的研究 , 现为 based mo del fo r estimating sof t ware reliabilit y R . Technical I EEE member 。联系电话 :82316570 ,通信地址 : 北京航空航天大 Repo rt SERC2TR21172P , W L afayet te Ind : Purdue U niversi2 学 011 教研室 ,100083 。 t y , 1992 . (责任编辑 :李铁柏) 作者简介 :
( ) 李秋英 1973 - , 女 , 黑 龙 江 省 大 庆 人 , 北 京航空航天大学工程系统工程系在读博士 研究生 ,主要研究方向为软件可靠性工程 、 软件可靠性测试及软件可靠性测试充分性 理 论 , Email : li- qiuying @ so hu. co m , 联 系 电 话 :82316442 ,通信地址 :北京航空航天大学 2 - 71 信箱 ,100083 。
范文三:软件可靠性测试方法新探
46582009,30(20)计算机工程与设计ComputerEngineeringandDesign
软件与算法
0引言
软件在计算机发展的不同阶段有不同的认识。计算机发展的初期,硬件在计算机应用中起决定作用,而软件,即程序,甚至是机器指令程序或汇编程序,是处于从属地位的。软件开发是以个体手工的方式进行,设计是人的智力行为,软件质量完全取决于个人的智力和编程技巧。随着计算机的发展,人们认识到软件使得计算机的计算能力大大提高,应用能力大大增强。于是在开发计算机应用系统时,硬件和软件同时考虑,而且开始编制应用支撑程序,如操作系统、数据库等。这时的生产方式是以小作坊的形式进行。到了后来,社会的各种应用需要对计算机提出了更高和更特别的要求,很多大型软件系统开发的工作量高达数千人年,指令数百万条或更多,如美国宇航飞船的软件系统有4000万条语句。而今,计算机的应用面越来越广,应用规模越来越大,应用过程越来越复杂,软件在计算机系统中的比重越来越大,软件成本在总成本中的比重正在逐年上升,而且这种趋势还在增加。这时人们感到传统的软件生产方式已不适应计算机发展的需要,需
收稿日期:2008-10-10;修订日期:2009-03-24。
要把工程学的基本原理和方法引入到软件开发过程中,即软件工程思想。
事实上,无论计算机技术如何发展,计算机中的软件是人通过智力劳动产生的,其软件产品是人的思维结果,是一个逻辑部件,而不是一个物理部件。软件开发水平很大程度上取决于软件人员的教育、训练和经验的积累。由此软件具有与硬件或传统工业产品不同的特点:(1)软件是一种逻辑实体,具有抽象性,人们必须通过观察、分析、思考、判断,才能了解它的功能、性能等特性;(2)软件没有明显的制造过程,一旦研制开发成功,就可以大量拷贝同一内容的副本。所以对软件的质量控制,必须在软件开发方面下工夫;
(3)软件在使用过程中,没有磨损、老化的问题,但为了适应硬件、环境以及需求的变化而进行修改,这些修改常常会引入错误,导致软件失效率升高,软件质量降低。如果修改成本太高,质量风险太大,软件就会被抛弃;
(4)软件对硬件和环境有着不同程度的依赖性,由此带来了软件移植的问题;
蔡建平:软件可靠性测试方法新探
(5)软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低。这对复杂软件,特别是今后会更加复杂的软件带来了是否能够控制其复杂性和时效性的问题;
(6)软件开发需要投入大量、高强度的脑力劳动,成本非常高,风险也大。现在软件的开销已大大超过了硬件的开销;
(7)许多软件的开发和运行涉及机构、体制和管理方式等问题,还会涉及到人们的观念和心理。这些人的因素,常常成为软件开发的困难所在,直接影响到项目的成败。
基于上述软件的特性,美国国防部中大量的软件系统其可靠性得不到保证,几乎没有不存在错误的软件系统。尽管人们在软件开发过程中采用各种软件工程方法,应用各种软件测试技术,但他们只能尽量发现错误、减少错误,却不可能彻底消除错误,无法实现真正意义上的无错软件,百分之百的可靠。
现今计算机硬件技术的发展,使得在计算机系统中的硬件可靠性越来越高,而软件可靠性的问题变得日益突出。在一些关键的应用领域,如航空、航天等,对软件可靠性的要求尤为重要。如在银行等服务性行业,其软件系统的可靠性也直接关系到自身的声誉和生存发展竞争能力。由于软件中存在缺陷、错误和故障使软件失效很有可能造成巨大的损失或惨重的灾难。研究结果表明:由于软件开发出现问题引起的系统失效与由于硬件设计或使用引起的失效之比是10:1。由此可见,软件在计算机系统中占有绝对重要的地位。于是,人们借鉴硬件可靠性理论,提出了“软件可靠性”概念,不再追求软件无错,而以统计的观点去判断软件满足用户使用要求的程度。
1软件可靠性
软件可靠性借鉴了硬件可靠性的概念,即软件按规定的
条件,在规定的时间内运行而不发生故障的能力。软件可靠性与硬件可靠性不同的是:软件可靠性不但与软件中存在的缺陷有关,而且与系统输入和系统使用有关。
从定义上看,评价或测试一个软件的可靠性,最主要的是要确定系统怎样输入、如何使用一整套的方法和策略。另一方面,软件可靠性是软件质量特性中重要的固有特性和关键因素,软件可靠性反映了用户的质量观点。而软件的故障是由于软件的质量存在问题——即它固有的缺陷导致错误,进而使系统的输出不满足预定的要求,造成系统的故障。所谓按规定的条件主要是指软件的运行(使用)环境,它涉及软件运行所需要的一切支持系统及有关的因素。如支持硬件、网络、操作系统及其它支持软件、输入数据、操作规程等。
尽管当前的软件可靠性定义借用了硬件可靠性的定义,但事实上软件可靠性因软件的特性它与硬件可靠性相比较是有很大的差别的,如:
(1)硬件有老化损耗现象,硬件失效是物理故障,是器件物理变化的必然结果。软件不发生变化,没有磨损现象,但软件由于长期使用软件性能下降,甚至完全失效的故障也是有的。例如,无休止的线程、无释放的文件锁闭、数据污染、存储空间的彻底分裂与积聚差错等;
(2)硬件可靠性的决定因素是时间,受设计、生产、运用
2009,30(20)4659
的所有过程影响,软件可靠性的决定因素是与输入数据有关的软件差错,是输入数据和程序内部状态的函数,更多地决定于人;
(3)硬件的纠错维护可通过修复或更换失效的系统重新恢复功能,软件只有通过重设计或排除错误;
(4)对硬件可采用预防性维护技术预防故障,采用断开失效部件的办法诊断故障,而软件则不能采用这些技术;
(5)可靠性预测和可靠性增长等技术对软件和硬件有不同的意义;
(6)为提高硬件可靠性可采用冗余技术,而同一软件的冗余不能提高可靠性;
(7)硬件可靠性检验方法已建立,并已标准化且有一整套完整的理论,而软件可靠性验证方法仍未建立,更没有完整的理论体系;
(8)硬件可靠性已有成熟的产品市场,而软件产品市场还很新;
(9)软件错误是永恒的,可重现的,而一些瞬间的硬件错误可能会被误认为是软件错误。
从上我们看到,由于软件固有的特性,软件可靠性很难以硬件可靠性的概念为基础,来进行度量和评估,即硬件的可靠性计算方法和相关模型难以用于软件可靠性的估算中。这也正是软件可靠性评估与验证没有很好的方法、模型和技术,人们无法事先预测软件可靠性,无法确定软件可靠性是否增长的根本原因。
2软件可靠性测试
从软件可靠性的定义上看,评价或测试一个软件的可靠
性,最主要的是要确定系统怎样输入、如何使用一整套的方法和策略。即软件可靠性测试是指为了达到或验证用户对软件的可靠性要求而对软件进行的测试,属于软件测试或软件可靠性评价的范畴。尽管软件可靠性测试也不能保证软件中残存的错误数达到最少,但经过软件可靠性测试可以保证软件的可靠性达到较高的要求。
软件可靠性测试是在软件的预期使用环境中,为了最终评价软件系统的可靠性而运用建模、统计、试验、分析、评价等一系列手段对软件系统实施的一种测试。它应该是面向故障的测试,以用户将要使用的方式来进行的,每一次测试代表用户将要完成的一组操作,使测试成为最终产品使用的预演。如:我们可以通过给系统加载一定的业务压力(例如资源在
70%~90%的使用率)的情况下,让应用持续运行一段时间,测试系统在这种条件下是否能够稳定运行。这里的可靠性测试仅仅是让软件在大压力环境下运行较长的时间,来估算系统是否能在平均压力下持续正常工作。
软件可靠性测试是获取软件可靠性估算数据的重要手段,它通过发现软件系统可靠性缺陷,为软件的使用和维护提供数据,确认软件是否达到可靠性的定量要求。目前软件可靠性测试用得最多的方法是类似于硬件操作剖面上的统计测试方法,即基于被测软件操作剖面的统计测试方法。这是最为传统、经典的软件可靠性测试方法。通过这种方法,能够实现软件可靠性的定量评估,从而有效地保障和提高软件的质量。
46602009,30(20)计算机工程与设计ComputerEngineeringandDesign
软件可靠性测试与传统意义上的软件测试不同,软件可靠性测试是统计测试思想在软件可靠性度量上的应用,要求测试按照软件的操作剖面进行,测试结果使用软件可靠性模型进行评价,其中操作剖面的构造是进行软件可靠性测试的基础。
操作剖面的英文是OperationalProfile,也称为软件的使用模型,是指系统测试数据输入域以及各种输入数据的组合使用概率。它刻画了在预期环境中软件各种预期操作的统计分布,用来描述软件的实际使用情况的。在基于软件操作剖面的统计测试中,能够保证在测试过程中较早地发现那些在软件操作使用中最经常发生的失效。
操作剖面反映了软件规格说明定义的预期使用情况。因此在建立操作剖面之前,首先必须对规格说明进行评审和澄清,保证规格说明提供了完整的功能规格说明,描述了软件在预定环境中的预期使用情况;然后,根据用户使用这些系统模式、功能、任务的概率对软件的系统模式、功能、任务需求及相应的输入激励的分析来构造操作剖面。操作剖面构造的质量决定着其测试或分析结果是否可信的程度。
统计测试的英文是statisticaltesting;是通过使用对输入统计分布进行分析来构造测试用例的一种测试设计方法。
统计测试标识出频繁执行的部分,并相应地调整测试策略,针对这些频繁执行的部分进行详尽的测试。通过提高关键模块的安全性和可靠性,来提高整个系统的安全性和可靠性,以提高测试的性价比。统计测试进行的前提条件就是生成如实反映系统使用情况的使用模型。以往使用模型的建立主要是通过预测和估计得出的,不能如实地反映系统的真实情况。
通过软件可靠性测试可以有效地发现程序中影响软件可靠性的缺陷,从而实现可靠性增长。由于软件可靠性很大程度上依赖条件的变化,特别是软件操作剖面的输入分布。因此,我们首先需要建立描述软件操作情况的操作剖面,然后在软件的操作剖面基础上按照概率统计方法设计输入的分布,最后利用操作剖面从所有软件操作中获得统计上正确的采样并对软件进行可靠性测试。这种测试方法也是惟一能直接对软件操作可靠性进行估算的统计方法。通过操作建模可以改进规格说明,得到规格说明的分析性描述,量化测试代价,通过统计测试为软件可靠性推断提供依据。
事实上,软件可靠性测试方法就是一种黑盒测试方法,它面向需求、面向使用开展测试,不用了解程序的结构、程序的实现等问题。软件可靠性测试最好由独立的第三方测试机构来承担,主要是在系统测试、验收、交付阶段进行。
总之,基于被测软件操作剖面的统计测试方法是在对软件的实际使用情况进行统计的基础上建立软件的操作剖面,并采用统计测试的方法进行测试。用这种方法所获得的测试数据与软件的实际运行数据比较接近,可直接用于软件可靠性估算。
3基于操作剖面的软件可靠性压力测试
前述的软件可靠性测试是基于被测软件操作剖面的统计
测试方法,这种方法在操作剖面确定后如何针对由于长期使
用软件性能下降,甚至完全失效这种严重影响软件可靠性的问题上有一定的不足。例如,无休止的线程、无释放的文件锁闭、数据污染、存储空间的彻底分裂与积聚差错等。而这些问题的产生还是软件设计和逻辑实现带来的问题。如果这些问题解决了,就不会出现由于长期使用使软件性能下降的问题。而解决这一问题的有效方法就是基于操作剖面的压力测试或疲劳测试,即在一段时间内(经验上一般是连续72小时)保持操作剖面上的某些点进行某些操作频繁使用,检查系统是否发生功能或者性能上的问题。
通常现代大型软件的操作剖面很复杂,覆盖整个操作剖面进行压力测试是不现实的。如何在被测软件的操作剖面上确定压力测试的范围或测试点以及压力测试的类型是软件可靠性压力测试的重要研究内容。因此,在传统的操作剖面上结合软件可靠性统计测试方法,针对软件有别于硬件的自身特性,以及软件由于长期使用使软件性能下降,甚至完全失效这种严重影响软件可靠性的问题,采用操作剖面压力测试的方法,确定重要的压力测试点,并在这些压力测试点上分别进行相应类型的压力测试,以保证软件经过长时间运行后,性能不会下降,失效不会产生,来达到提高软件可靠性的目的。这种面点结合、互相补充的测试思想丰富了软件可靠性测试内容,解决了软件可靠性测试不仅要考虑操作剖面的功能统计测试问题,还要考虑操作剖面上的压力测试问题,并使操作剖面和操作剖面上的压力测试点成为相辅相成的软件可靠性测试方案。
从以上方案可以看到,准确地寻找操作剖面上的各个压力测试点,有效地确定压力测试类型,设计相应的压力测试用例,并将这些测试用例纳入到被测软件的操作剖面的统计测试用例中是软件可靠性压力测试的关键,也是现代软件可靠性测试的关键。这需要在操作剖面的基础上对被测软件进行静态分析和动态测试,查找可能严重影响软件可靠性的因素,如:内存泄露、数据污染、线程死锁、文件冲突等,并将这些作为压力测试点的压力测试内容,确定相应的压力测试类型。
由于软件自身的特点,软件可靠性与硬件可靠性相比内涵发生了根本的变化,软件可靠性估算必须以软件可靠性分析及软件可靠性测试等结果或缺陷数据为重要依据,软件可靠性估算模型及模型输入参数与软件可靠性测试结果紧密相连。为此,我们一定要抓住软件的特性,强调软件可靠性测试对于软件可靠性估算的重要支撑作用,研究软件可靠性测试方法和技术,特别是研究基于被测软件操作剖面的压力测试技术和基于软件可靠性分析和测试结果的软件可靠性估算模型是一个有理论价值和变革意义、并存在很大的难度且面临极大挑战的研究课题,这也是本文抛砖引玉要达到的目的。
4结束语
本文对软件的自身特性、软件可靠性及软件可靠性测试
等概念进行了阐述,并在此基础上根据笔者工作实践对软件可靠性测试方法进行了探讨,提出了用操作剖面上的压力测试概念来弥补传统的操作剖面上的功能统计测试的不足,强调软件可靠性测试对于软件可靠性估算的重要支撑作用。软件可靠性研究的理论和方法多种多样但无法实施和运用的关
蔡建平:软件可靠性测试方法新探
键问题是没有很好地分析和研究软件的自身特性和软件出错的自身规律,照搬照套硬件可靠性的概念和估算方法与估算模型,从而使软件可靠性估算及评测走向死胡洞。对软件可靠性估算及评测起决定支撑作用的软件可靠性测试应该是当前乃至今后的一个重要研究领域或课题。计算机系统或软件系统的整个可靠性应该分别计算硬件可靠性和软件可靠性,然后进行结果的科学整合,而这也是国内外研究的空白,因此需要有更多的人力和物力投入到这方面的研究之中。
参考文献:
[1]陆民燕,陈雪松.软件可靠性测试及其实践[J].测控技术,2000,19(5):48-50.
[2]景涛等.软件关联缺陷的一种检测方法[J].软件学报,2005,16(1):17-28.
[3]
闵应骅.前进中的可信计算软件可靠性是个大问题[J].中国传媒科技,2005(12):31-34.
(5)建成的防汛抗旱平台应有数据的备份与装载功能。本系统页面展现部分开发环境为MicroSoftWindowsXP操作系统、Intel酷睿双核2.4G处理器、2G内存的个人计算机,以Oracle数据库作为数据支撑平台,以Net-Beans6.0结合其它工具开发完成页面展现,以ArcIMS9.2为GIS地图服务。
已完成的相关页面如图6和图7所示。
4结束语
在各领域系统中应用WebGis、SOA、JSF、EJB、主动服务等
技术的研究方兴未艾。可以展望,未来这些技术不仅仅是在
2009,30(20)4661
[4]
梁胜杰,张志华.操作剖面对软件可靠性评估可信度的影响研究[J].计算机工程与应用,2006,42(14):102-104.
[5]尚艳玲.软件可靠性测试方法研究[J].现代计算机(专业版),2007(6):126-127.
[6]朱嫄.基于组件的软件可靠性计算方法[J].计算机工程与设计,2004,25(5):673-675.
[7]陈晓芳.几种常见软件可靠性测试方法综述及应用对比[J].科技信息(学术版),2007(17):6-7.
[8]何云.软件测试与可靠性评估方法研究[EB/OL].http://arch.pconline.com.cn/pcjob/ittest/empolder/10308/209165.html,2003-8-21.
[9]刘杰.软件可靠性评测及其应用探讨[EB/OL].http://www.ceprei.com.cn/news_system/News_View.asp?NewsID=6,2006-09-20.
[10]张振华.试论软件的可靠性及其保证[EB/OL].http://pm.csai.cn/
quality/NO262.htm,2004-10-20.
水利、交通等行业中应用,其它各行各业,各大领域都可能得到广泛的使用。同时惊喜地发现,SOA增强了面向对象的范畴,WebGis挑战了传统的C/S结构下的GIS,JSF改变了传统的Web开发模式,Comet也可能变得跟AJAX一样普及。所有这些技术应用到中国水利行业信息化建设,无疑可以提供巨大的推动力。
当然,从数据采集汇集,到通信网络,再到信息的展示,还有很多需要研究和开发的地方。在水利行业中,信息技术的革新没有终点。无论是海量水利数据高性能计算,数字地图生成,水利数据挖掘,还是通用数据查询中间件都有待于进一步的研究,这也是以后工作的目标。
参考文献:
[1]刘福泉.基于SOA的客户关系管理系统设计[J].科技情报开发与经济,2008,20:141-142.
[2]周贵华.面向服务(SOA)数字化校园的初探[J].科技信息,2008,21:83-84.
[3]钟广锐.基于AJAX的WebGIS客户端解决方案研究[J].测绘科学,2007(9):178-179.
[4]周婷.Comet:基于HTTP长连接的“服务器推”技术[Z].IBM中国软件开发技术实验室,2007:1-5.
[5]胡楠.基于JSF技术的Web应用研究[J].软件设计开发,2008(6):1073-1076.
[6]李刚.基于J2EE的AJAX宝典[M].北京:电子工业出版社,2007:9-50.
[7]蒋泰,邓一星.基于MapGIS-IMS的WebGIS应用研究[J].计算机应用研究,2004,21(12):196-197.
[8]
潘春华,李贵龙.WebGIS解决方案与开发方法[J].计算机工程与设计,2002,23(10):58-61.
范文四:软件可靠性与测试方法探析
龙源期刊网 http://www.qikan.com.cn
软件可靠性与测试方法探析
作者:戴艳芳
来源:《软件导刊》2012年第11期
摘 要:介绍了软件可靠性的概念,从分析影响软件可靠性的因素开始,提出了提高软件可靠性的方法,进而引出了软件可靠性测试的定义以及进行软件可靠性测试的目的,阐述了进行软件可靠性测试的方法。
关键词:可靠性;软件可靠性;软件测试;可靠性测试
中图分类号:TP302 文献标识码:A 文章编号:16727800(2012)011003002
作者简介:戴艳芳(1982-),女,中国空空导弹研究院工程师,研究方向为软件测试、软件工程。
1 软件可靠性工程概述
随着计算机技术的飞速发展,软件的规模越来越大,复杂性越来越高,软件可靠性的有效控制变得越来越复杂,研究和分析软件可靠性要求的特点,建立和完善软件可靠性设计技术和测试技术成为提高软件产品质量非常迫切而重要的课题。
1.1 可靠性的定义
长期以来,学术界对软件可靠性的确切含义一直存在争议。争论的焦点主要集中在硬件可靠性的定义是否能够直接引申到软件领域,软件的正确性是否能等同于可靠性。经过长期的争论和研究,1983年美国IEEE 计算机学会对“软件可靠性”做出了如下两点定义:
(1)在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的错误的函数;系统输入将确定是否遇到已存在的错误。
(2)在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。
1.2 影响软件可靠性的因素
软件可靠性表明了一个软件按照客户的需求和设计的目标,执行其功能的正确程度。这要求一个可靠的软件应该具有正确性、健壮性、完备性以及一致性的特点。正是因为软件中的缺陷引起了软件故障,使软件不能满足需求。软件缺陷的形成如表1所示。
范文五:软件可靠性与测试方法探析
摘 要:介绍了软件可靠性的概念,从分析影响软件可靠性的因素开始,提出了提高软件可靠性的方法,进而引出了软件可靠性测试的定义以及进行软件可靠性测试的目的,阐述了进行软件可靠性测试的方法。
关键词:可靠性;软件可靠性;软件测试;可靠性测试
中图分类号:TP302 文献标识码:A 文章编号:16727800(2012)011003002
作者简介:戴艳芳(1982-),女,中国空空导弹研究院工程师,研究方向为软件测试、软件工程。
1 软件可靠性工程概述
随着计算机技术的飞速发展,软件的规模越来越大,复杂性越来越高,软件可靠性的有效控制变得越来越复杂,研究和分析软件可靠性要求的特点,建立和完善软件可靠性设计技术和测试技术成为提高软件产品质量非常迫切而重要的课题。
1.1 可靠性的定义
长期以来,学术界对软件可靠性的确切含义一直存在争议。争论的焦点主要集中在硬件可靠性的定义是否能够直接引申到软件领域,软件的正确性是否能等同于可靠性。经过长期的争论和研究,1983年美国IEEE计算机学会对“软件可靠性”做出了如下两点定义:
(1)在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的错误的函数;系统输入将确定是否遇到已存在的错误。
(2)在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。
1.2 影响软件可靠性的因素
软件可靠性表明了一个软件按照客户的需求和设计的目标,执行其功能的正确程度。这要求一个可靠的软件应该具有正确性、健壮性、完备性以及一致性的特点。正是因为软件中的缺陷引起了软件故障,使软件不能满足需求。软件缺陷的形成如表1所示。
通过对这些软件缺陷形成原因的分析可以看出,为了保证软件的可靠性,必须对软件开发过程采取措施,消除各阶段活动中各有关因素存在的问题(即要实施软件工程化)才能使软件可靠性得到提高。
1.3 提高软件可靠性的方法
在软件结构的可靠性设计中,软件可靠性的基础是软
件工程化技术,它提出了一些软件开发的基本原则和要求。软件设计采用自顶而下和模块化设计的方法,建立一套结构良好的程序系统,将软件设计成由相对独立、功能单一的模块组成的系统,使软件的耦合度最弱、内聚度最高且能使软件便于测试与维护。软件规模与复杂度是影响软件可靠性的一个主要因素。把一个大的系统划分成相对独立的模块,降低了系统实现难度,从而降低了软件在实现过程中出错的可能性,有利于提高软件可靠性。
上述方法都是在软件的设计阶段,为了进一步提高可靠性,必须进行有针对性的软件测试,即软件可靠性测试。
2 软件可靠性测试
2.1 软件可靠性测试的定义
测试是指为了发现软件中的错误而采用人工或自动的手段来运行某个程序的过程。但是在不同的开发阶段、对于不同的人员,测试的任务是不同的。软件可靠性测试是指为了保证和验证软件的可靠性要求而对软件进行的测试。其采用的是按照软件运行剖面对软件进行随机测试的测试方法。
2.2 软件可靠性测试目的
软件可靠性测试是指为了保证和验证软件的可靠性要求而对软件进行的测试。其采用的是按照软件运行剖面(对软件实际使用情况的统计规律的描述)对软件进行随机测试的测试方法。通过软件可靠性测试可以达到以下目的:
(1)有效地发现程序中影响软件可靠性的缺陷,从而实现可靠性增长:软件可靠性是指“在规定的时间内,规定的条件下,软件不引起系统失效的能力,其概率度量称为软件可靠度。”软件的“规定的条件”主要包括相对不变的条件和相对变化的条件,相对不变的条件如计算机及其操作系统;相对变化的条件是指输入的分布,用软件的运行剖面来描述。按照软件的运行剖面对软件进行测试一般先暴露在使用中发生概率高的缺陷,然后是发生概率低的缺陷。而高发生概率的缺陷是影响产品可靠性的主要缺陷,通过排除这些缺陷可以有效地实现软件可靠性的增长。
(2)验证软件可靠性满足一定的要求:通过对软件可靠性测试中观测到的失效情况进行分析,可以验证软件可靠性的定量要求是否得到满足。
(3)估计、预计软件可靠性水平:通过对软件可靠性测试中观测到的失效数据进行分析,可以评估当前软件可靠性的水平,预测未来可能达到的水平,从而为开发管理提供决策依据。软件可靠性测试中暴露的缺陷既可以是影响功能需求的缺陷也可以是影响性能需求的缺陷。
2.3 软件可靠性测试方法
2.3.1 可靠性测试策略选择
从测试的策略来讲,可靠性测试的方法可分为两种:白盒测试和黑盒测试。
白盒测试是一种按照程序内部的逻辑结构和编码结构设计并执行测试用例的测试方法,又称为基于代码的测试,采用这种测试方法,测试人员必须看到被测的源程序,分析程序的内部结构,从检查程序的逻辑着手设计测试用例。一般来说,白盒测试根据覆盖要求设计测试用例,设计的测试用例要完成语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖,并达到一定的覆盖比例要求。白盒测试需要将被测程序在测试环境下运行,并能在运行过程中跟踪程序的执行路径。
黑盒测试又称功能测试。在进行黑盒测试时,将软件看作一个黑盒,不考虑程序的内部结构,只需知道软件的输入、输出对应关系或者软件的功能,因此,黑盒测试是从客户角度出发的测试。它根据开发方提供的软件需求规格说明书来设计测试用例,按照测试用例的要求运行被测程序。黑盒测试着重于验证软件功能和性能的正确性,常见的测试项目包括功能测试、性能测试、边界测试、余量测试以及强度测试等。显然,如果软件的外部特性本身存在问题,仅仅通过黑盒测试是无法发现的。
软件可靠性测试从理论上讲是一种黑盒测试,因为它不需要了解程序的内部结构以及如何实现等问题,它是面向需求、面向使用的测试,但从验证编码的正确性方面来讲,白盒测试又是可靠性测试中不可或缺的一部分,因此,要提高软件可靠性,最好采用以黑盒测试为主,结合白盒测试的方法进行互补测试。
2.3.2 基于功能剖面的可靠性测试方法
软件的可靠性是视使用者如何对软件进行操作而定的,同一个软件,使用者的操作方式不同,软件的可靠性也会随之产生变化。因此,用户使用软件的方式对于软件可靠性测试十分重要。而用户使用软件的方式就是所谓的软件功能剖面。任何一个软件系统在使用过程中,各个软件功能剖面的使用概率是不同的,因此,在进行可靠性测试时,首先要确定软件的功能剖面,由软件功能剖面来指导可靠性测试工作。
测试方案的确定首先需要确定软件的功能剖面。通过对使用者使用软件的实际情况以及使用者给出的经验数据进行分析,随后确定每条功能路径在系统中的使用概率,并以此为依据随机选取一定数量的测试用例,最终确定测试方案。
使用基于功能剖面的方法选取测试用例,依据不同功能路径的使用频率来进行测试工作分配,可使测试工作量分配的更为均匀。在软件可靠性测试中,均匀的测试工作量能够更真实地反映软件系统在实际使用中的情况,使软件中的每个功能都能得到充分的测试。
3 结语
软件可靠性对现代高可靠性软件产品的设计和生产有着巨大的影响,尽管目前软件可靠性设计和测试的方法存在着一定的不足和缺陷,但是随着软件可靠性相关技术的进一步发展,提高软件可靠性这一重要课题必将取得更大的突破。
参考文献:
[1]黄锡滋.软件可靠性、安全性及质量保证[M].北京:电子工业出版社,2002.
[2]龚庆祥.型号可靠性工程手册[M].北京:国防工业出版社,2007.
[3]孙志安.软件可靠性工程[M].北京:北京航空航天大学出版社,2009.
(责任编辑:杜能钢)
转载请注明出处范文大全网 » 一种多维度的软件系统可靠性测