所有文章均来自网络(除测试总结部分),如果涉及到版权问题请与我联系,我会及时删除~~~~

软件可靠性测试(转贴)

上一篇 / 下一篇  2007-02-01 10:18:59 / 个人分类:测试用例

航天工业总公司二院204所 周新蕾 缪峥红51Testing软件测试网$\+`Bu6Bv-Z6i
一、对软件可靠性测试的认识
a De }sqkd9_0
lg8Ub9x NWA01.有关术语
,q1c3e}!oA0(1)软件可靠性 在规定条件下,在规定时间内,软件不引起系统失效的概率。该概率是系51Testing软件测试网 ?G2L)Cdys,I
统输入和系统使用的函数,也是软件中存在故障的函数,系统输入将确定是否会遇到存在的故
pn2t q'w4}n0障。51Testing软件测试网9{n8n} \[6^2IT
(2)软件可靠性估计 应用统计技术处理在系统测试和运行期间采集、观察到的失效数据
fv;L`ub9]"W!W0,以评估该软件的可靠性。51Testing软件测试网#?eg^(`d[
(3)软件可靠性测试 在有使用代表性的环境中,为进行软件可靠性估计对该软件进行的
R9c;?6L/i!X5Q0功能测试
Pf"w5i.A&l7dT B8f0需要说明的是,"使用代表性"指的是在统计意义下该环境能反映出软件的使用环境特性
3j5I&gl+UDl?"W)P wh051Testing软件测试网+E!w:X2gS

:KZ$c.I,XM.| W02.软件可靠性测试的目的
"J"k%kp R0软件可靠性测试的主要目的有:51Testing软件测试网T;x'TRi5GB
(1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。
#NCH }w/H*G0(2)为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数
u^K []1qk0据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性51Testing软件测试网/N3Cl7KY{
估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。51Testing软件测试网1q Q]d*o*T
(3)通过软件可靠性测试找出所有对软件可靠性影响较大的错误。51Testing软件测试网 C/}(q[5?w?r Q-R6U
51Testing软件测试网%[q^4ca
3.软件可靠性测试的特点
9KAK A;T T#{ u0软件可靠性测试不同于硬件可靠性测试,这主要是因为二者失效的原因不同。硬件失效51Testing软件测试网,n:f#ML]7^DG
一般是由于元器件的老化引起的,因此硬件可靠性测试强调随机选取多个相同的产品,统计它51Testing软件测试网6^^)T1P:Vh8t
们的正常运行时间。正常运行的平均时间越长,则硬件就越可靠。软件失效是由设计缺陷造
C zy|'rhw+M0成的,软件的输入决定是否会遇到软件内部存在的故障。因此,使用同样一组输入反复测试软
E-a$Z|$W*y0件并记录其失效数据是没有意义的。在软件没有改动的情况下,这种数据只是首次记录的不
}K!L.FAk0断重复,不能用来估计软件可靠性。软件可靠性测试强调按实际使用的概率分布随机选择输
*ce$z.R%j'v0入,并强调测试需求的覆盖面。51Testing软件测试网.\+~5yD$B ~!mt2ek
软件可靠性测试也不同于一般的软件功能测试。相比之下,软件可靠性测试更强调测试51Testing软件测试网d0|gf(Z |`R7w
输入与典型使用环境输入统计特性的一致,强调对功能、输入、数据域及其相关概率的先期51Testing软件测试网U2M`3@LGD{
识别。测试实例的采样策略也不同,软件可靠性测试必须按照使用的概率分布随机地选择测51Testing软件测试网UH*O5w J L8t
试实例,这样才能得到比较准确的可靠性估计,也有利于找出对软件可靠性影响较大的故障。51Testing软件测试网a0v)My!a-U{/IW0?+W
此外,软件可靠性测试过程中还要求比较准确地记录软件的运行时间,它的输入覆盖一般也要51Testing软件测试网 PW8H:} s;C+N
大于普通软件功能测试的要求。51Testing软件测试网Hg+g ILLy6fn/Q-Y1u
对一些特殊的软件,如容错软件、实时嵌入式软件等,进行软件可靠性测试时需要有多种51Testing软件测试网5P`mC5E ?$Bgx
测试环境。这是因为在使用环境下常常很难在软件中植入错误,以进行针对性的测试。
}bA9F8[i%G0
{ g8O}"d?`%?04.软件可靠性测试的效果51Testing软件测试网 B&wx2Dc6]j;x(~ K
软件可靠性测试是软件可靠性保证过程中非常关键的一步。经过软件可靠性测试的软件
lQsMq9B0并不能保证该软件中残存的错误数最小,但可以保证该软件的可靠性达到较高的要求。从工
X l&ww"wq ^&q$t0程的角度来看,一个软件的可靠性高不仅意味着该软件的失效率低,而且意味着一旦该软件失
(|6h\B-Bo0J,y0效,由此所造成的危害也小。一个大型的工程软件没有错误是不可能的,至少理论上还不能证51Testing软件测试网DJ(X1X`*o.gBS5IF
明一个大型的工程软件能没有错误。因此,保证软件可靠性的关键不是确保软件没有错误,而
~G6v!O lN}0是要确保软件的关键部分没有错误。更确切地说,是要确保软件中没有对可靠性影响较大的51Testing软件测试网3E@)ex\B5K#Q'H%rF
错误。这正是软件可靠性测试的目的之一。
e*?DW6O0Ai%L0软件可靠性测试的侧重点不同于一般的软件功能测试,其测试实例设计的出发点是寻找51Testing软件测试网j'h`%`5Y,f
对可靠性影响较大的故障。因此,要达到同样的可靠性要求,可靠性测试比一般的功能测试更
{xsQ}v2t4K0有效,所花的时间也更少。51Testing软件测试网e]~p p&rGZj
另外,软件可靠性测试的环境是具有使用代表性的环境,这样,所获得的测试数据与软件
WR-H!y0H P_-R0的实际运行数据比较接近,可用于软件可靠性估计。
0f JM N0J*g*\c`0总之,软件可靠性测试比一般的功能测试更加经济和有效,它可以代替一般的功能测试,51Testing软件测试网R5`Xn [
而一般的软件功能测试却不能代替软件可靠性测试,而且一般功能测试所得到的测试数据也
e"Iq q W{0不宜用于软件可靠性估计。
-v7@k,o K051Testing软件测试网6kmtG9S9_ T)]s
二、软件可靠性测试中需注意的问题
#dV'`NA4l0软件可靠性测试一般可分为四个阶段:制定测试方案,制定测试计划,进行测试并记录测51Testing软件测试网 SDC O/s
试结果,编写测试报告。
R'B$Au7o%|%W;o[a`Eq!W0制定测试方案时需要特别注意被测功能的识别和失效等级的定义。制定测试计划时需设51Testing软件测试网4F?cb'Cxn|\
计测试实例,决定测试时要确定输入顺序,并确定程序输出的预期结果,这时也需注意测试覆51Testing软件测试网k ?n,m a
盖问题。51Testing软件测试网|~f-X-s8Y2M&s `IVR
51Testing软件测试网 D/L5?,jpM6PSL
1.功能识别51Testing软件测试网*X(|JsPBO
软件可靠性测试的第一步就是进行功能识别,确定使用剖面。功能识别的目标是:识别所
i2xhV6H0有被测功能以及执行这些功能所需的相关输入,识别每一个使用需求及其相关输入的概率分51Testing软件测试网nU3Q u*S/D
布。
CC9p*y5cnOL0为达到第一个目标,需要分析软件功能的所有集合,这些功能之间全部的约束条件,功能
M]UgyF,pC&E?9|0之间的独立性、相互关系和相互影响,还需分析系统的不同运行模式、失效发生时系统重构51Testing软件测试网.K\"CJ0t_3MH P,O
策略等对软件运行方式有较大影响的因素。51Testing软件测试网k'J n'r!B&dK
第一个目标也是一般软件功能测试需要达到的目标,但第二个目标则是软件可靠性测试51Testing软件测试网U6LjDd/SQ0?2t
特别强调的。为了得到能够反映软件使用的有代表性的概率分布,测试人员必须和系统工程
lO3S0J'e,d%G*M+\0师、系统运行分析员和顾客共同合作。需要指出的是,由于可靠性的要求,输入数据的概率分51Testing软件测试网.Um!s/^q Dn
布应包括合法数据的概率分布和非法数据的概率分布两部分。有时为了更好地反映实际使用51Testing软件测试网[5{M2[*o
状况,还需给出那些影响程序运行方式的条件,如硬件配置、负荷等的概率分布。
)e/BGsH Sr6r^051Testing软件测试网 ]~b?b
2.定义换效等级51Testing软件测试网1Hc]+GX1b#I
定义失效等级主要是为了解决下面两个问题:51Testing软件测试网|){B']/OIi%I u|
·对发生概率小但失效后危害严重的功能需求的识别。
] T!{X ~n0·对可不查找失效原因、并不做统计的功能需求的识别。
]e+y;V \M.E;x'j%wO0在制定测试计划时,失效及其等级的定义应由测试人员、设计人员和用户共同商定,达成51Testing软件测试网,H0A{iq%cvm
协议。一般的等级定义如表所示。51Testing软件测试网B)rA{w^@$j/|E
@@16115000.GIF;表1 失效等级定义@@
+M:[R!Q)x,e A"uX}0如果存在1级和2级失效可能性,那么就应该进行故障树分析,标识出所有可能造成严重失51Testing软件测试网A6m:tNHt[(M;Y
效的功能需求和其相关的输入域、外部条件和发生的可能性。51Testing软件测试网:T K+t6j Dm B}X
对引起1级和2级失效的功能需求及其相关的输入域必须进行严格的强化测试。对引起351Testing软件测试网B w]J6r^`
级失效的功能可按其发生概率选择测试实例。第4级失效可不查找原因,可在以后的版本中处51Testing软件测试网#[ p`f1Knt m4k
理。
:_ \&_+D][&Ma0
1r:Y0x0G/W(a)S03.可靠性测试覆盖
z(i|x@4C;Pea0可靠性测试必须保证输入覆盖和环境覆盖,这是准确估计软件可靠性的基础。51Testing软件测试网H6L%`[N+VW
输入覆盖包括下面几个内容:
?w(T$qB k4{6Zx%nZY0·输入域覆盖,即所有被测输入值域的发生概率之和必须大于软件可靠度的要求。
` eH$R V~{0·重要输入变量值的覆盖。
dM g? ax/[0·相关输入变量可能组合的覆盖,以确保相关输入变量的相互影响不会导致软件失效。51Testing软件测试网!em H5^!B1\_-k
·设计输入空间与实际输入空间之间区域的覆盖,即不合法输入域的覆盖。51Testing软件测试网"Lh/S3FG#M/?
·各种使用功能的覆盖。51Testing软件测试网!LN(om g
环境覆盖是指测试时必须覆盖所有可能影响程序运行方式的条件。
c{;wm6bM']051Testing软件测试网 k:eAR"]0cAy
三、软件可靠性测试的步骤
x}{ \$h0软件可靠性测试分为四个阶段:51Testing软件测试网fvm,gzd)Qw

Sfnh1ts01.制订测试方案
pA*?K*P1wYoW(b1j:Qv0本阶段的目标是识别软件功能需求,触发该功能的输入和对应的数据域,确定相关的概率
$h:h.c0r_&pABW0分布及需强化测试的功能。51Testing软件测试网+~Vt&s+j
以下是我们推荐的步骤。在一些特定的应用中,有的步骤并不是必须的。
/m(g BTE0(1)分析功能需求 分析各种功能需求,识别触发该功能的输入及相关的数据域(包括合法
1J uX/~ KEd0与不合法的两部分)。分析时要注意下述问题:51Testing软件测试网 s]'L&R v%V/x
·该软件是否存在不同的运行模式?如果存在,那么应列出所有的系统运行模式。51Testing软件测试网 ?x5kK j,f
·是否存在影响程序运行方式的外部条件?如果存在,那么有多少?它们的影响程度如何51Testing软件测试网%qOZP#y6h
·各种功能需求之间是相互独立的还是相关的?如果相关,是密切相关还是部分相关?如51Testing软件测试网n `%w)vvu.aGB LS
果两种功能密切相关,那么可将两种功能合并为一种功能。如果功能之间为部分相关,则需列
o+{i"G~0出相应输入变量的合法组合。
:R)y!D(T\)@0(2)定义失效等级 判断是否存在出现危害度较大的1级和2级失效的可能性。如果这种可
F.yc,KW g/Y/F0G6x0能性存在,则应进行故障树分析,标识出所有可能造成严重失效的功能需求和其相关的输入域51Testing软件测试网p8k+CC9}] {
51Testing软件测试网fr.o,yj?&v.t|
(3)确定概率分布51Testing软件测试网*Y2p(YSc&q ]N
·确定各种不同运行方式的发生概率,判断是否需要对不同的运行方式进行分别测试。
^E)a:GQ/Jf7Q G9d0如果需要,则应给出各种运行方式下各数据域的概率分布;否则,给出各数据域的概率分布。51Testing软件测试网za;} |$f8AK
·判断是否需要强化测试某些功能。51Testing软件测试网#Rt1J9iq
(4)整理概率分布的信息 将这些信息编码送入数据库
$z%R!r_[j051Testing软件测试网 a KS$p${O NU
2.制订测试计划
Ip$]Wi"cxkz0本阶段的目标是:51Testing软件测试网 ^[n'b1`N1}?0BW
(1)根据前一阶段整理的概率分布信息生成相对应的测试实例集,并计算出每一测试实例51Testing软件测试网&[ oyW.@_&Vi
预期的软件输出结果。
Y*| `2@xW8D0本阶段需要注意:在按概率分布随机选择生成测试实例的同时,要保证测试的覆盖面。
1@ ODp]8`'g X]^0(2)编写测试计划,确定测试顺序,分配测试资源。由于本阶段前一部分的工作需要考虑51Testing软件测试网:m H5B]Zq!C*]|
大量的信息和数据,因此需要一个软件支持工具,建立数据库,并产生测试实例。另外,有时预
"k| ?~:H m0测软件输出结果也需要大量的计算,有些复杂的软件甚至要用到仿真器模拟输出结果。51Testing软件测试网1^b-B4|4Y'TJS
总之,具体实施与被测应用软件的实际功能类型有关。51Testing软件测试网b~2|V p2g-B
51Testing软件测试网6@$x(`/K6mae RA
3.测试51Testing软件测试网]0hB6K/v.jq0V
本阶段进行软件测试。需注意的是被测软件的测试环境(包括硬件配置和软件支撑环境
.G E"|"C o C0)应和预期的实际使用环境尽可能一致,对某些环境要求比较严格的软件(如嵌入式软件)则应51Testing软件测试网 V8JA0VZF }4Sb
完全一致。
w xp*}x vyF0测试时按测试计划和顺序对每一个测试实例进行测试,判断软件输出是否符合预期结果51Testing软件测试网kHyf!axN u ]"U1Y
。测试时应记录测试结果、运行时间和判断结果。如果软件失效,那么还应记录失效现象和
/N*\i]+X0时间,以备以后核对。
k(fz"KW7b0
Zl&i?o'R b04.编写测试报告51Testing软件测试网C-Jp l@} v m,_ x-]
按软件可靠性估计的要求整理测试记录,并将结果写成报告。
t5@ B_~&ryG:v}0笔者认为,软件可靠性测试的关键在于:
2q8usq?0·对需求、输入、数据域的识别及相关概率分布的确定。51Testing软件测试网He:PBJqy
·按照概率分布随机生成测试实例,并确定测试顺序。
*@x6it h/Y0据国外有关文献报导,这种测试方法已成功应用于大量应用软件的可靠性测试,包括一些51Testing软件测试网3zhb:M8H9Gpp h
商用软件和航空、航天电子设备中嵌入式软件的测试,其效果很好。因此,我们有必要投入一51Testing软件测试网 JXv\f
定的人力、物力,针对我们的实际需要,有目的地对各类应用软件进行软件可靠性测试,从实
M~v)?3J g,m:S l"Fm0践中逐步积累经验。同时需要软件开发方和使用方共同合作,进行软件可靠性测试方法的研
.o0n}{K#uf'Sa0究和有关支持工具的开发,促进我国软件可靠性水平的提高。
&O5s6n~F6w"u051Testing软件测试网tF m \PmxR O

计算机世界报 1997年 第16期)51Testing软件测试网%JN!H~_S l;u(g

51Testing软件测试网b o tUDE~}/M

 51Testing软件测试网ZZWf&R0mmY a


TAG: 测试用例

测试生涯 引用 删除 tiantian010   /   2008-11-12 12:54:06
路过,但没有错过,吸收了
测试----测量?尝试? 引用 删除 yexu   /   2007-02-01 10:27:38
感觉文章有些偏向嵌入式开发的方向,是不是可靠性测试本身就是从嵌入式软件测试发展过来的~~~
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2020-10-01  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 29086
  • 日志数: 61
  • 建立时间: 2007-01-15
  • 更新时间: 2007-07-23

RSS订阅

Open Toolbar