软件可靠性测试(转贴)
上一篇 / 下一篇 2007-02-01 10:18:59 / 个人分类:测试用例
航天工业总公司二院204所 周新蕾 缪峥红51Testing软件测试网9sT1z/S6X6j2P:b
一、对软件可靠性测试的认识51Testing软件测试网-rwDEafF
v,_8\3lLt%bF(o01.有关术语
Sc~$uKT0(1)软件可靠性 在规定条件下,在规定时间内,软件不引起系统失效的概率。该概率是系
Q f1@)e(PVc0统输入和系统使用的函数,也是软件中存在故障的函数,系统输入将确定是否会遇到存在的故51Testing软件测试网A-b.ZRBj
障。
9A/[Y(c r j8UK0(2)软件可靠性估计 应用统计技术处理在系统测试和运行期间采集、观察到的失效数据
6v?hG^ e_'k:B0,以评估该软件的可靠性。51Testing软件测试网F;YV1L vVkb%W
(3)软件可靠性测试 在有使用代表性的环境中,为进行软件可靠性估计对该软件进行的51Testing软件测试网.J-BX(c$H4UD Y
功能测试。51Testing软件测试网"cn,W9dAd*T
需要说明的是,"使用代表性"指的是在统计意义下该环境能反映出软件的使用环境特性51Testing软件测试网lp^,S0z
。51Testing软件测试网 CDvN7J!^1}Y%Es
$cHe'B._6Pq02.软件可靠性测试的目的
(f PBVj)P7X&i:O0软件可靠性测试的主要目的有:51Testing软件测试网3xEA e)D8}
(1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。
3aGznP-yVGTV0(2)为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数51Testing软件测试网*WvWM(at
据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性
WP:?w,h_'Q8Do0估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。
*Jq/Z4P:k*iLC0(3)通过软件可靠性测试找出所有对软件可靠性影响较大的错误。51Testing软件测试网]2q.fBD-u1q~
2W#Jhp \$]U03.软件可靠性测试的特点51Testing软件测试网9V-mNX8w8X
软件可靠性测试不同于硬件可靠性测试,这主要是因为二者失效的原因不同。硬件失效
Eq9sqM[i0一般是由于元器件的老化引起的,因此硬件可靠性测试强调随机选取多个相同的产品,统计它
SsDU3{ g0们的正常运行时间。正常运行的平均时间越长,则硬件就越可靠。软件失效是由设计缺陷造
%f{ Be,e.X0成的,软件的输入决定是否会遇到软件内部存在的故障。因此,使用同样一组输入反复测试软51Testing软件测试网,K4FJ.}+XMk9_S
件并记录其失效数据是没有意义的。在软件没有改动的情况下,这种数据只是首次记录的不51Testing软件测试网1A3HPCg!n#m*j
断重复,不能用来估计软件可靠性。软件可靠性测试强调按实际使用的概率分布随机选择输51Testing软件测试网/F m*y*h;P6d#C
入,并强调测试需求的覆盖面。
Jc9^6AMJW0软件可靠性测试也不同于一般的软件功能测试。相比之下,软件可靠性测试更强调测试
7czF4h,?I r5? ^0输入与典型使用环境输入统计特性的一致,强调对功能、输入、数据域及其相关概率的先期
#l-evJ`@3S0识别。测试实例的采样策略也不同,软件可靠性测试必须按照使用的概率分布随机地选择测51Testing软件测试网})DH(hvCH;iH
试实例,这样才能得到比较准确的可靠性估计,也有利于找出对软件可靠性影响较大的故障。
q"S}^xu!x p*x4Uj0此外,软件可靠性测试过程中还要求比较准确地记录软件的运行时间,它的输入覆盖一般也要51Testing软件测试网d"n*`THVvm
大于普通软件功能测试的要求。
O@HAU0对一些特殊的软件,如容错软件、实时嵌入式软件等,进行软件可靠性测试时需要有多种
ik"AC#wp1Yu0测试环境。这是因为在使用环境下常常很难在软件中植入错误,以进行针对性的测试。
w/[f$k"u'_0
MVP7xn4`%Q;?04.软件可靠性测试的效果
(e"QA$G#Z5]Ty5eS&{0软件可靠性测试是软件可靠性保证过程中非常关键的一步。经过软件可靠性测试的软件51Testing软件测试网!Lv-_3j!P7w%?/IPG i
并不能保证该软件中残存的错误数最小,但可以保证该软件的可靠性达到较高的要求。从工
g+Q jV:X&\Ut]f+v0程的角度来看,一个软件的可靠性高不仅意味着该软件的失效率低,而且意味着一旦该软件失51Testing软件测试网 kZI4H"lR `7V
效,由此所造成的危害也小。一个大型的工程软件没有错误是不可能的,至少理论上还不能证51Testing软件测试网f$P@/\6N8X.J!o9_9? d
明一个大型的工程软件能没有错误。因此,保证软件可靠性的关键不是确保软件没有错误,而
:k6t],J]wz~5I0是要确保软件的关键部分没有错误。更确切地说,是要确保软件中没有对可靠性影响较大的
0Y1C[EL"H.}lV{0错误。这正是软件可靠性测试的目的之一。
hh+q!ws0软件可靠性测试的侧重点不同于一般的软件功能测试,其测试实例设计的出发点是寻找
} b?;x(~`0对可靠性影响较大的故障。因此,要达到同样的可靠性要求,可靠性测试比一般的功能测试更51Testing软件测试网5XEd T:Y
有效,所花的时间也更少。
&Evf&@Nx~4}"e0另外,软件可靠性测试的环境是具有使用代表性的环境,这样,所获得的测试数据与软件
isQS i8B(Y^h0的实际运行数据比较接近,可用于软件可靠性估计。
/Q~+V,c+YG @uDU0总之,软件可靠性测试比一般的功能测试更加经济和有效,它可以代替一般的功能测试,51Testing软件测试网 v~G0y f?3B1c
而一般的软件功能测试却不能代替软件可靠性测试,而且一般功能测试所得到的测试数据也51Testing软件测试网V(ja|?"Z*}9sk7@g
不宜用于软件可靠性估计。51Testing软件测试网6u_Bw'~/Q{]
51Testing软件测试网PN-Cud ZW
二、软件可靠性测试中需注意的问题
6O#_-_4Sn*@?0软件可靠性测试一般可分为四个阶段:制定测试方案,制定测试计划,进行测试并记录测
]s1G2Lk$?']0试结果,编写测试报告。
c+u W0_`5kK ]0制定测试方案时需要特别注意被测功能的识别和失效等级的定义。制定测试计划时需设51Testing软件测试网|"G"V0I1_R
计测试实例,决定测试时要确定输入顺序,并确定程序输出的预期结果,这时也需注意测试覆51Testing软件测试网w'C7Z{V#Wm
盖问题。
X+~s-`)_ev:H;T(v3J051Testing软件测试网m4[+Q"XU r
1.功能识别
VS8P3l|4U(y0软件可靠性测试的第一步就是进行功能识别,确定使用剖面。功能识别的目标是:识别所51Testing软件测试网_%Ot;u`*n7f
有被测功能以及执行这些功能所需的相关输入,识别每一个使用需求及其相关输入的概率分51Testing软件测试网 OD#G0F{
布。51Testing软件测试网5\$QM?f+zV5U:~y f
为达到第一个目标,需要分析软件功能的所有集合,这些功能之间全部的约束条件,功能51Testing软件测试网Mo$x"EN2Av:`h C
之间的独立性、相互关系和相互影响,还需分析系统的不同运行模式、失效发生时系统重构
K}c{|2U0策略等对软件运行方式有较大影响的因素。
$Gv[B%|/]K%P0第一个目标也是一般软件功能测试需要达到的目标,但第二个目标则是软件可靠性测试51Testing软件测试网&v-}a{MO8o `!nN
特别强调的。为了得到能够反映软件使用的有代表性的概率分布,测试人员必须和系统工程
z`%B#|v;d}0师、系统运行分析员和顾客共同合作。需要指出的是,由于可靠性的要求,输入数据的概率分51Testing软件测试网6oZ:z6ng%t;cy
布应包括合法数据的概率分布和非法数据的概率分布两部分。有时为了更好地反映实际使用51Testing软件测试网 Tf"I.J'iu
状况,还需给出那些影响程序运行方式的条件,如硬件配置、负荷等的概率分布。
u#i$I&~;n }4v%IZ051Testing软件测试网.|LyS EZO.O.C2c
2.定义换效等级51Testing软件测试网;a]qI_FpG
定义失效等级主要是为了解决下面两个问题:51Testing软件测试网VKF-H"S'JW
·对发生概率小但失效后危害严重的功能需求的识别。
0U$g,LW%rF0·对可不查找失效原因、并不做统计的功能需求的识别。
UN$V*Fr@0在制定测试计划时,失效及其等级的定义应由测试人员、设计人员和用户共同商定,达成51Testing软件测试网 S n)cS5O qv
协议。一般的等级定义如表所示。51Testing软件测试网R%W"g,sB o
@@16115000.GIF;表1 失效等级定义@@
(E#D:w/| B(woa0如果存在1级和2级失效可能性,那么就应该进行故障树分析,标识出所有可能造成严重失
xo S3V@Gm1]!zW\:`0效的功能需求和其相关的输入域、外部条件和发生的可能性。51Testing软件测试网)r3O e5ws^F2k
对引起1级和2级失效的功能需求及其相关的输入域必须进行严格的强化测试。对引起3
B1fT}izy0级失效的功能可按其发生概率选择测试实例。第4级失效可不查找原因,可在以后的版本中处51Testing软件测试网(\*EaJ#^}$L
理。51Testing软件测试网z4kQH,ao6\.| J
$A!@&Ec/YW,mwZ03.可靠性测试覆盖51Testing软件测试网!N)@n&j2Pg(|,C
可靠性测试必须保证输入覆盖和环境覆盖,这是准确估计软件可靠性的基础。
^1Tc9zP~,e0输入覆盖包括下面几个内容:
6G,m3MhDlDL0·输入域覆盖,即所有被测输入值域的发生概率之和必须大于软件可靠度的要求。
(Fkkyy"G#hG3ur]7G0·重要输入变量值的覆盖。
Qw!|X*Q\:ip C0·相关输入变量可能组合的覆盖,以确保相关输入变量的相互影响不会导致软件失效。51Testing软件测试网`q5d1LT%h}
·设计输入空间与实际输入空间之间区域的覆盖,即不合法输入域的覆盖。
Dkg y0vLzA8I0·各种使用功能的覆盖。51Testing软件测试网KO G7GI
环境覆盖是指测试时必须覆盖所有可能影响程序运行方式的条件。
[cM vC D.]i0
%]0Jf&r;b0三、软件可靠性测试的步骤51Testing软件测试网%S nh ^(Uu
软件可靠性测试分为四个阶段:51Testing软件测试网^&s6Zq9FI(f
%Y1s'{8v'd&~ QL4U01.制订测试方案51Testing软件测试网3Rpm hrXa
本阶段的目标是识别软件功能需求,触发该功能的输入和对应的数据域,确定相关的概率
3^B+| _ao4gK/f0分布及需强化测试的功能。
&@a EsV jrC0以下是我们推荐的步骤。在一些特定的应用中,有的步骤并不是必须的。
!R-T(n1X7L!j:\!B0(1)分析功能需求 分析各种功能需求,识别触发该功能的输入及相关的数据域(包括合法51Testing软件测试网{*[fpO
与不合法的两部分)。分析时要注意下述问题:51Testing软件测试网? X!X8c(N:c'@,S1I&Z
·该软件是否存在不同的运行模式?如果存在,那么应列出所有的系统运行模式。
S4^X0g;p]^0·是否存在影响程序运行方式的外部条件?如果存在,那么有多少?它们的影响程度如何
3P R!t"e5l"J0·各种功能需求之间是相互独立的还是相关的?如果相关,是密切相关还是部分相关?如
,[:k6_4]J8n0果两种功能密切相关,那么可将两种功能合并为一种功能。如果功能之间为部分相关,则需列51Testing软件测试网~4lr7G:LMo
出相应输入变量的合法组合。51Testing软件测试网1E3iym o/B7g"Ie
(2)定义失效等级 判断是否存在出现危害度较大的1级和2级失效的可能性。如果这种可51Testing软件测试网;I e'E:Gf
能性存在,则应进行故障树分析,标识出所有可能造成严重失效的功能需求和其相关的输入域
#\ \iA,RT.|"x6d0。
@xzC3_-v/qb)Z0(3)确定概率分布51Testing软件测试网k m6v` p'qr!j8I
·确定各种不同运行方式的发生概率,判断是否需要对不同的运行方式进行分别测试。
A4su:N]Z0Aj.I"C1j0如果需要,则应给出各种运行方式下各数据域的概率分布;否则,给出各数据域的概率分布。
]!J&y0?fJl;e-{G`2Q!~0·判断是否需要强化测试某些功能。
/{}!z:|LZ k2Mo0(4)整理概率分布的信息 将这些信息编码送入数据库。
#B5\%M!cnn6f(j0
+gi u O!a{,UP02.制订测试计划51Testing软件测试网*u'W[!B-d9G
本阶段的目标是:51Testing软件测试网r X1A2l5W$x
(1)根据前一阶段整理的概率分布信息生成相对应的测试实例集,并计算出每一测试实例51Testing软件测试网"a8b4l%H;G$H
预期的软件输出结果。51Testing软件测试网GN$P3u:^QG"_
本阶段需要注意:在按概率分布随机选择生成测试实例的同时,要保证测试的覆盖面。
Kvd-Q@%xZwAO0(2)编写测试计划,确定测试顺序,分配测试资源。由于本阶段前一部分的工作需要考虑51Testing软件测试网(i)p*S X8m&^"x9rSg
大量的信息和数据,因此需要一个软件支持工具,建立数据库,并产生测试实例。另外,有时预
-f1eJ6_)Cop X0L0测软件输出结果也需要大量的计算,有些复杂的软件甚至要用到仿真器模拟输出结果。51Testing软件测试网9y qeSg7G6W^ [-bA
总之,具体实施与被测应用软件的实际功能类型有关。
dP4OuB)F0
E*PEr6R03.测试
;n&m+~h~0本阶段进行软件测试。需注意的是被测软件的测试环境(包括硬件配置和软件支撑环境51Testing软件测试网,c1V,`)u!X{
)应和预期的实际使用环境尽可能一致,对某些环境要求比较严格的软件(如嵌入式软件)则应51Testing软件测试网/vZr-D-h1FN'?
完全一致。51Testing软件测试网/rC/PX9r
测试时按测试计划和顺序对每一个测试实例进行测试,判断软件输出是否符合预期结果
VyA.^5]3e+m4YD0。测试时应记录测试结果、运行时间和判断结果。如果软件失效,那么还应记录失效现象和
n4W'V"[n%SV ~0时间,以备以后核对。
WK,h2\:j xS7_051Testing软件测试网Z4~B3G[ xDI
4.编写测试报告
9fJU/c7M!b p0按软件可靠性估计的要求整理测试记录,并将结果写成报告。51Testing软件测试网+ah Q-Df}*O0i$N
笔者认为,软件可靠性测试的关键在于:
一、对软件可靠性测试的认识51Testing软件测试网-rwDEafF
v,_8\3lLt%bF(o01.有关术语
Sc~$uKT0(1)软件可靠性 在规定条件下,在规定时间内,软件不引起系统失效的概率。该概率是系
Q f1@)e(PVc0统输入和系统使用的函数,也是软件中存在故障的函数,系统输入将确定是否会遇到存在的故51Testing软件测试网A-b.ZRBj
障。
9A/[Y(c r j8UK0(2)软件可靠性估计 应用统计技术处理在系统测试和运行期间采集、观察到的失效数据
6v?hG^ e_'k:B0,以评估该软件的可靠性。51Testing软件测试网F;YV1L vVkb%W
(3)软件可靠性测试 在有使用代表性的环境中,为进行软件可靠性估计对该软件进行的51Testing软件测试网.J-BX(c$H4UD Y
功能测试。51Testing软件测试网"cn,W9dAd*T
需要说明的是,"使用代表性"指的是在统计意义下该环境能反映出软件的使用环境特性51Testing软件测试网lp^,S0z
。51Testing软件测试网 CDvN7J!^1}Y%Es
$cHe'B._6Pq02.软件可靠性测试的目的
(f PBVj)P7X&i:O0软件可靠性测试的主要目的有:51Testing软件测试网3xEA e)D8}
(1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。
3aGznP-yVGTV0(2)为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数51Testing软件测试网*WvWM(at
据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性
WP:?w,h_'Q8Do0估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。
*Jq/Z4P:k*iLC0(3)通过软件可靠性测试找出所有对软件可靠性影响较大的错误。51Testing软件测试网]2q.fBD-u1q~
2W#Jhp \$]U03.软件可靠性测试的特点51Testing软件测试网9V-mNX8w8X
软件可靠性测试不同于硬件可靠性测试,这主要是因为二者失效的原因不同。硬件失效
Eq9sqM[i0一般是由于元器件的老化引起的,因此硬件可靠性测试强调随机选取多个相同的产品,统计它
SsDU3{ g0们的正常运行时间。正常运行的平均时间越长,则硬件就越可靠。软件失效是由设计缺陷造
%f{ Be,e.X0成的,软件的输入决定是否会遇到软件内部存在的故障。因此,使用同样一组输入反复测试软51Testing软件测试网,K4FJ.}+XMk9_S
件并记录其失效数据是没有意义的。在软件没有改动的情况下,这种数据只是首次记录的不51Testing软件测试网1A3HPCg!n#m*j
断重复,不能用来估计软件可靠性。软件可靠性测试强调按实际使用的概率分布随机选择输51Testing软件测试网/F m*y*h;P6d#C
入,并强调测试需求的覆盖面。
Jc9^6AMJW0软件可靠性测试也不同于一般的软件功能测试。相比之下,软件可靠性测试更强调测试
7czF4h,?I r5? ^0输入与典型使用环境输入统计特性的一致,强调对功能、输入、数据域及其相关概率的先期
#l-evJ`@3S0识别。测试实例的采样策略也不同,软件可靠性测试必须按照使用的概率分布随机地选择测51Testing软件测试网})DH(hvCH;iH
试实例,这样才能得到比较准确的可靠性估计,也有利于找出对软件可靠性影响较大的故障。
q"S}^xu!x p*x4Uj0此外,软件可靠性测试过程中还要求比较准确地记录软件的运行时间,它的输入覆盖一般也要51Testing软件测试网d"n*`THVvm
大于普通软件功能测试的要求。
O@HAU0对一些特殊的软件,如容错软件、实时嵌入式软件等,进行软件可靠性测试时需要有多种
ik"AC#wp1Yu0测试环境。这是因为在使用环境下常常很难在软件中植入错误,以进行针对性的测试。
w/[f$k"u'_0
MVP7xn4`%Q;?04.软件可靠性测试的效果
(e"QA$G#Z5]Ty5eS&{0软件可靠性测试是软件可靠性保证过程中非常关键的一步。经过软件可靠性测试的软件51Testing软件测试网!Lv-_3j!P7w%?/IPG i
并不能保证该软件中残存的错误数最小,但可以保证该软件的可靠性达到较高的要求。从工
g+Q jV:X&\Ut]f+v0程的角度来看,一个软件的可靠性高不仅意味着该软件的失效率低,而且意味着一旦该软件失51Testing软件测试网 kZI4H"lR `7V
效,由此所造成的危害也小。一个大型的工程软件没有错误是不可能的,至少理论上还不能证51Testing软件测试网f$P@/\6N8X.J!o9_9? d
明一个大型的工程软件能没有错误。因此,保证软件可靠性的关键不是确保软件没有错误,而
:k6t],J]wz~5I0是要确保软件的关键部分没有错误。更确切地说,是要确保软件中没有对可靠性影响较大的
0Y1C[EL"H.}lV{0错误。这正是软件可靠性测试的目的之一。
hh+q!ws0软件可靠性测试的侧重点不同于一般的软件功能测试,其测试实例设计的出发点是寻找
} b?;x(~`0对可靠性影响较大的故障。因此,要达到同样的可靠性要求,可靠性测试比一般的功能测试更51Testing软件测试网5XEd T:Y
有效,所花的时间也更少。
&Evf&@Nx~4}"e0另外,软件可靠性测试的环境是具有使用代表性的环境,这样,所获得的测试数据与软件
isQS i8B(Y^h0的实际运行数据比较接近,可用于软件可靠性估计。
/Q~+V,c+YG @uDU0总之,软件可靠性测试比一般的功能测试更加经济和有效,它可以代替一般的功能测试,51Testing软件测试网 v~G0y f?3B1c
而一般的软件功能测试却不能代替软件可靠性测试,而且一般功能测试所得到的测试数据也51Testing软件测试网V(ja|?"Z*}9sk7@g
不宜用于软件可靠性估计。51Testing软件测试网6u_Bw'~/Q{]
51Testing软件测试网PN-Cud ZW
二、软件可靠性测试中需注意的问题
6O#_-_4Sn*@?0软件可靠性测试一般可分为四个阶段:制定测试方案,制定测试计划,进行测试并记录测
]s1G2Lk$?']0试结果,编写测试报告。
c+u W0_`5kK ]0制定测试方案时需要特别注意被测功能的识别和失效等级的定义。制定测试计划时需设51Testing软件测试网|"G"V0I1_R
计测试实例,决定测试时要确定输入顺序,并确定程序输出的预期结果,这时也需注意测试覆51Testing软件测试网w'C7Z{V#Wm
盖问题。
X+~s-`)_ev:H;T(v3J051Testing软件测试网m4[+Q"XU r
1.功能识别
VS8P3l|4U(y0软件可靠性测试的第一步就是进行功能识别,确定使用剖面。功能识别的目标是:识别所51Testing软件测试网_%Ot;u`*n7f
有被测功能以及执行这些功能所需的相关输入,识别每一个使用需求及其相关输入的概率分51Testing软件测试网 OD#G0F{
布。51Testing软件测试网5\$QM?f+zV5U:~y f
为达到第一个目标,需要分析软件功能的所有集合,这些功能之间全部的约束条件,功能51Testing软件测试网Mo$x"EN2Av:`h C
之间的独立性、相互关系和相互影响,还需分析系统的不同运行模式、失效发生时系统重构
K}c{|2U0策略等对软件运行方式有较大影响的因素。
$Gv[B%|/]K%P0第一个目标也是一般软件功能测试需要达到的目标,但第二个目标则是软件可靠性测试51Testing软件测试网&v-}a{MO8o `!nN
特别强调的。为了得到能够反映软件使用的有代表性的概率分布,测试人员必须和系统工程
z`%B#|v;d}0师、系统运行分析员和顾客共同合作。需要指出的是,由于可靠性的要求,输入数据的概率分51Testing软件测试网6oZ:z6ng%t;cy
布应包括合法数据的概率分布和非法数据的概率分布两部分。有时为了更好地反映实际使用51Testing软件测试网 Tf"I.J'iu
状况,还需给出那些影响程序运行方式的条件,如硬件配置、负荷等的概率分布。
u#i$I&~;n }4v%IZ051Testing软件测试网.|LyS EZO.O.C2c
2.定义换效等级51Testing软件测试网;a]qI_FpG
定义失效等级主要是为了解决下面两个问题:51Testing软件测试网VKF-H"S'JW
·对发生概率小但失效后危害严重的功能需求的识别。
0U$g,LW%rF0·对可不查找失效原因、并不做统计的功能需求的识别。
UN$V*Fr@0在制定测试计划时,失效及其等级的定义应由测试人员、设计人员和用户共同商定,达成51Testing软件测试网 S n)cS5O qv
协议。一般的等级定义如表所示。51Testing软件测试网R%W"g,sB o
@@16115000.GIF;表1 失效等级定义@@
(E#D:w/| B(woa0如果存在1级和2级失效可能性,那么就应该进行故障树分析,标识出所有可能造成严重失
xo S3V@Gm1]!zW\:`0效的功能需求和其相关的输入域、外部条件和发生的可能性。51Testing软件测试网)r3O e5ws^F2k
对引起1级和2级失效的功能需求及其相关的输入域必须进行严格的强化测试。对引起3
B1fT}izy0级失效的功能可按其发生概率选择测试实例。第4级失效可不查找原因,可在以后的版本中处51Testing软件测试网(\*EaJ#^}$L
理。51Testing软件测试网z4kQH,ao6\.| J
$A!@&Ec/YW,mwZ03.可靠性测试覆盖51Testing软件测试网!N)@n&j2Pg(|,C
可靠性测试必须保证输入覆盖和环境覆盖,这是准确估计软件可靠性的基础。
^1Tc9zP~,e0输入覆盖包括下面几个内容:
6G,m3MhDlDL0·输入域覆盖,即所有被测输入值域的发生概率之和必须大于软件可靠度的要求。
(Fkkyy"G#hG3ur]7G0·重要输入变量值的覆盖。
Qw!|X*Q\:ip C0·相关输入变量可能组合的覆盖,以确保相关输入变量的相互影响不会导致软件失效。51Testing软件测试网`q5d1LT%h}
·设计输入空间与实际输入空间之间区域的覆盖,即不合法输入域的覆盖。
Dkg y0vLzA8I0·各种使用功能的覆盖。51Testing软件测试网KO G7GI
环境覆盖是指测试时必须覆盖所有可能影响程序运行方式的条件。
[cM vC D.]i0
%]0Jf&r;b0三、软件可靠性测试的步骤51Testing软件测试网%S nh ^(Uu
软件可靠性测试分为四个阶段:51Testing软件测试网^&s6Zq9FI(f
%Y1s'{8v'd&~ QL4U01.制订测试方案51Testing软件测试网3Rpm hrXa
本阶段的目标是识别软件功能需求,触发该功能的输入和对应的数据域,确定相关的概率
3^B+| _ao4gK/f0分布及需强化测试的功能。
&@a EsV jrC0以下是我们推荐的步骤。在一些特定的应用中,有的步骤并不是必须的。
!R-T(n1X7L!j:\!B0(1)分析功能需求 分析各种功能需求,识别触发该功能的输入及相关的数据域(包括合法51Testing软件测试网{*[fpO
与不合法的两部分)。分析时要注意下述问题:51Testing软件测试网? X!X8c(N:c'@,S1I&Z
·该软件是否存在不同的运行模式?如果存在,那么应列出所有的系统运行模式。
S4^X0g;p]^0·是否存在影响程序运行方式的外部条件?如果存在,那么有多少?它们的影响程度如何
3P R!t"e5l"J0·各种功能需求之间是相互独立的还是相关的?如果相关,是密切相关还是部分相关?如
,[:k6_4]J8n0果两种功能密切相关,那么可将两种功能合并为一种功能。如果功能之间为部分相关,则需列51Testing软件测试网~4lr7G:LMo
出相应输入变量的合法组合。51Testing软件测试网1E3iym o/B7g"Ie
(2)定义失效等级 判断是否存在出现危害度较大的1级和2级失效的可能性。如果这种可51Testing软件测试网;I e'E:Gf
能性存在,则应进行故障树分析,标识出所有可能造成严重失效的功能需求和其相关的输入域
#\ \iA,RT.|"x6d0。
@xzC3_-v/qb)Z0(3)确定概率分布51Testing软件测试网k m6v` p'qr!j8I
·确定各种不同运行方式的发生概率,判断是否需要对不同的运行方式进行分别测试。
A4su:N]Z0Aj.I"C1j0如果需要,则应给出各种运行方式下各数据域的概率分布;否则,给出各数据域的概率分布。
]!J&y0?fJl;e-{G`2Q!~0·判断是否需要强化测试某些功能。
/{}!z:|LZ k2Mo0(4)整理概率分布的信息 将这些信息编码送入数据库。
#B5\%M!cnn6f(j0
+gi u O!a{,UP02.制订测试计划51Testing软件测试网*u'W[!B-d9G
本阶段的目标是:51Testing软件测试网r X1A2l5W$x
(1)根据前一阶段整理的概率分布信息生成相对应的测试实例集,并计算出每一测试实例51Testing软件测试网"a8b4l%H;G$H
预期的软件输出结果。51Testing软件测试网GN$P3u:^QG"_
本阶段需要注意:在按概率分布随机选择生成测试实例的同时,要保证测试的覆盖面。
Kvd-Q@%xZwAO0(2)编写测试计划,确定测试顺序,分配测试资源。由于本阶段前一部分的工作需要考虑51Testing软件测试网(i)p*S X8m&^"x9rSg
大量的信息和数据,因此需要一个软件支持工具,建立数据库,并产生测试实例。另外,有时预
-f1eJ6_)Cop X0L0测软件输出结果也需要大量的计算,有些复杂的软件甚至要用到仿真器模拟输出结果。51Testing软件测试网9y qeSg7G6W^ [-bA
总之,具体实施与被测应用软件的实际功能类型有关。
dP4OuB)F0
E*PEr6R03.测试
;n&m+~h~0本阶段进行软件测试。需注意的是被测软件的测试环境(包括硬件配置和软件支撑环境51Testing软件测试网,c1V,`)u!X{
)应和预期的实际使用环境尽可能一致,对某些环境要求比较严格的软件(如嵌入式软件)则应51Testing软件测试网/vZr-D-h1FN'?
完全一致。51Testing软件测试网/rC/PX9r
测试时按测试计划和顺序对每一个测试实例进行测试,判断软件输出是否符合预期结果
VyA.^5]3e+m4YD0。测试时应记录测试结果、运行时间和判断结果。如果软件失效,那么还应记录失效现象和
n4W'V"[n%SV ~0时间,以备以后核对。
WK,h2\:j xS7_051Testing软件测试网Z4~B3G[ xDI
4.编写测试报告
9fJU/c7M!b p0按软件可靠性估计的要求整理测试记录,并将结果写成报告。51Testing软件测试网+ah Q-Df}*O0i$N
笔者认为,软件可靠性测试的关键在于: