软件可靠性测试(转贴)
上一篇 / 下一篇 2007-02-01 10:18:59 / 个人分类:测试用例
航天工业总公司二院204所 周新蕾 缪峥红51Testing软件测试网\ Yy
v`b$s*eo&T
一、对软件可靠性测试的认识
t(M BM-x8N7BC0
#_e%i.G,?cvH01.有关术语
1^K}!c4Eg@0(1)软件可靠性 在规定条件下,在规定时间内,软件不引起系统失效的概率。该概率是系51Testing软件测试网y3uld,r#{rt,o
统输入和系统使用的函数,也是软件中存在故障的函数,系统输入将确定是否会遇到存在的故51Testing软件测试网 Ior'sm;P"H!t
障。51Testing软件测试网:I~o^a:C
(2)软件可靠性估计 应用统计技术处理在系统测试和运行期间采集、观察到的失效数据
}"[)j/Y/xvb0,以评估该软件的可靠性。
5v3P asA8f!Tn \b.\0(3)软件可靠性测试 在有使用代表性的环境中,为进行软件可靠性估计对该软件进行的51Testing软件测试网2i[H%T*hv|q
功能测试。51Testing软件测试网w+m4}Hu*p6q
需要说明的是,"使用代表性"指的是在统计意义下该环境能反映出软件的使用环境特性51Testing软件测试网v}X1xX6G/Ld4e dz
。51Testing软件测试网Xc2W^!J?
51Testing软件测试网7]O#QJQ-eA__n
2.软件可靠性测试的目的
R"~5rS @*HZ nW i-L0软件可靠性测试的主要目的有:51Testing软件测试网+f!Xv2Pc*w$Q1n$}`
(1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。
eTH5Fd/A9w0(2)为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数
a%mU+||0据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性51Testing软件测试网P5o%n\H[_ gz
估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。51Testing软件测试网(x9D7ac)`&PG!qs
(3)通过软件可靠性测试找出所有对软件可靠性影响较大的错误。51Testing软件测试网.V4s9aP1Ji2y[.q
51Testing软件测试网cU uqu
3.软件可靠性测试的特点
|pO&fBz'k0软件可靠性测试不同于硬件可靠性测试,这主要是因为二者失效的原因不同。硬件失效51Testing软件测试网 K4OI1j:q
一般是由于元器件的老化引起的,因此硬件可靠性测试强调随机选取多个相同的产品,统计它
8o1beer5R4Z%\0们的正常运行时间。正常运行的平均时间越长,则硬件就越可靠。软件失效是由设计缺陷造51Testing软件测试网|;o t2\z
成的,软件的输入决定是否会遇到软件内部存在的故障。因此,使用同样一组输入反复测试软51Testing软件测试网~;z0W,X+f(dW)O9L
件并记录其失效数据是没有意义的。在软件没有改动的情况下,这种数据只是首次记录的不51Testing软件测试网$Zey5c9}? MG6R4l
断重复,不能用来估计软件可靠性。软件可靠性测试强调按实际使用的概率分布随机选择输51Testing软件测试网!K1n$CuScc1e0VlJ
入,并强调测试需求的覆盖面。51Testing软件测试网b+}/X&VAr'G e
软件可靠性测试也不同于一般的软件功能测试。相比之下,软件可靠性测试更强调测试
0zW \a-XO+W0输入与典型使用环境输入统计特性的一致,强调对功能、输入、数据域及其相关概率的先期51Testing软件测试网)q"Q(B Vd
识别。测试实例的采样策略也不同,软件可靠性测试必须按照使用的概率分布随机地选择测51Testing软件测试网xy%zp+y5m*[
试实例,这样才能得到比较准确的可靠性估计,也有利于找出对软件可靠性影响较大的故障。51Testing软件测试网VGg@R
此外,软件可靠性测试过程中还要求比较准确地记录软件的运行时间,它的输入覆盖一般也要51Testing软件测试网e#B?]u"B+v
大于普通软件功能测试的要求。51Testing软件测试网/zrS8TE(SIw
对一些特殊的软件,如容错软件、实时嵌入式软件等,进行软件可靠性测试时需要有多种
1V6HO1U?\QA auu)O0测试环境。这是因为在使用环境下常常很难在软件中植入错误,以进行针对性的测试。51Testing软件测试网7Xk [r3M)^
8sYQ zEt04.软件可靠性测试的效果
Q~"~GX0软件可靠性测试是软件可靠性保证过程中非常关键的一步。经过软件可靠性测试的软件51Testing软件测试网%Hi!S']A
并不能保证该软件中残存的错误数最小,但可以保证该软件的可靠性达到较高的要求。从工51Testing软件测试网"i0e8N8h{HQ sz
程的角度来看,一个软件的可靠性高不仅意味着该软件的失效率低,而且意味着一旦该软件失
V'p1z4WS9LM0效,由此所造成的危害也小。一个大型的工程软件没有错误是不可能的,至少理论上还不能证51Testing软件测试网 |8wB]%u\i9R
明一个大型的工程软件能没有错误。因此,保证软件可靠性的关键不是确保软件没有错误,而51Testing软件测试网 }2CQB\
是要确保软件的关键部分没有错误。更确切地说,是要确保软件中没有对可靠性影响较大的51Testing软件测试网&Q4lJ%oB
错误。这正是软件可靠性测试的目的之一。
nRT-X1R$^0软件可靠性测试的侧重点不同于一般的软件功能测试,其测试实例设计的出发点是寻找
5A4P;TbY5PrM`V0对可靠性影响较大的故障。因此,要达到同样的可靠性要求,可靠性测试比一般的功能测试更51Testing软件测试网xb+}%z Qw7w!Dd
有效,所花的时间也更少。
YVzvuL3]0另外,软件可靠性测试的环境是具有使用代表性的环境,这样,所获得的测试数据与软件
!S$UhiIl0的实际运行数据比较接近,可用于软件可靠性估计。51Testing软件测试网&T]:V\:OT:] j
总之,软件可靠性测试比一般的功能测试更加经济和有效,它可以代替一般的功能测试,
J+kJ5F;Z+vLBI0而一般的软件功能测试却不能代替软件可靠性测试,而且一般功能测试所得到的测试数据也51Testing软件测试网u(Z$^+^g@
不宜用于软件可靠性估计。51Testing软件测试网vd2udE.d
51Testing软件测试网#Zy"y%TH+Oj} d
二、软件可靠性测试中需注意的问题51Testing软件测试网z2H(O8X3Z} PEy"]*M
软件可靠性测试一般可分为四个阶段:制定测试方案,制定测试计划,进行测试并记录测51Testing软件测试网"J0u7x#`J2q L:th
试结果,编写测试报告。
,N3_7u9D/H|m$@0制定测试方案时需要特别注意被测功能的识别和失效等级的定义。制定测试计划时需设51Testing软件测试网)JKt+EV2B Q
计测试实例,决定测试时要确定输入顺序,并确定程序输出的预期结果,这时也需注意测试覆51Testing软件测试网.c#o&q4w.T
盖问题。
M#vcX8g051Testing软件测试网@%VT&o.s9AP4Wp
1.功能识别51Testing软件测试网/{+l5ft1g
软件可靠性测试的第一步就是进行功能识别,确定使用剖面。功能识别的目标是:识别所
YqF,p/bJ(|'r.{(Y0有被测功能以及执行这些功能所需的相关输入,识别每一个使用需求及其相关输入的概率分51Testing软件测试网'dG EN8?
布。51Testing软件测试网1MG*CBJ IQV,e
为达到第一个目标,需要分析软件功能的所有集合,这些功能之间全部的约束条件,功能51Testing软件测试网%Z9@-{{"XG6wi
之间的独立性、相互关系和相互影响,还需分析系统的不同运行模式、失效发生时系统重构51Testing软件测试网,]mzMK0e4tJOL
策略等对软件运行方式有较大影响的因素。51Testing软件测试网(O;j3u0YRl(GB
第一个目标也是一般软件功能测试需要达到的目标,但第二个目标则是软件可靠性测试
(Jy6S}4O;eCtF0特别强调的。为了得到能够反映软件使用的有代表性的概率分布,测试人员必须和系统工程
+|8QJ8N5b0师、系统运行分析员和顾客共同合作。需要指出的是,由于可靠性的要求,输入数据的概率分51Testing软件测试网j'enp~2L
布应包括合法数据的概率分布和非法数据的概率分布两部分。有时为了更好地反映实际使用
fQBQL;r8\0状况,还需给出那些影响程序运行方式的条件,如硬件配置、负荷等的概率分布。
o Yi1m[;H2^051Testing软件测试网T5[?IcP8g6n$I
2.定义换效等级
kKqz5u|a0定义失效等级主要是为了解决下面两个问题:
Q Z){/Z?GNI0·对发生概率小但失效后危害严重的功能需求的识别。
:q;KF"a*h]0·对可不查找失效原因、并不做统计的功能需求的识别。51Testing软件测试网-e%C&?fPV8m\
在制定测试计划时,失效及其等级的定义应由测试人员、设计人员和用户共同商定,达成51Testing软件测试网^9{J G0n'cy
协议。一般的等级定义如表所示。51Testing软件测试网}}#Z H CQ;V,dT
@@16115000.GIF;表1 失效等级定义@@
一、对软件可靠性测试的认识
t(M BM-x8N7BC0
#_e%i.G,?cvH01.有关术语
1^K}!c4Eg@0(1)软件可靠性 在规定条件下,在规定时间内,软件不引起系统失效的概率。该概率是系51Testing软件测试网y3uld,r#{rt,o
统输入和系统使用的函数,也是软件中存在故障的函数,系统输入将确定是否会遇到存在的故51Testing软件测试网 Ior'sm;P"H!t
障。51Testing软件测试网:I~o^a:C
(2)软件可靠性估计 应用统计技术处理在系统测试和运行期间采集、观察到的失效数据
}"[)j/Y/xvb0,以评估该软件的可靠性。
5v3P asA8f!Tn \b.\0(3)软件可靠性测试 在有使用代表性的环境中,为进行软件可靠性估计对该软件进行的51Testing软件测试网2i[H%T*hv|q
功能测试。51Testing软件测试网w+m4}Hu*p6q
需要说明的是,"使用代表性"指的是在统计意义下该环境能反映出软件的使用环境特性51Testing软件测试网v}X1xX6G/Ld4e dz
。51Testing软件测试网Xc2W^!J?
51Testing软件测试网7]O#QJQ-eA__n
2.软件可靠性测试的目的
R"~5rS @*HZ nW i-L0软件可靠性测试的主要目的有:51Testing软件测试网+f!Xv2Pc*w$Q1n$}`
(1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。
eTH5Fd/A9w0(2)为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数
a%mU+||0据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性51Testing软件测试网P5o%n\H[_ gz
估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。51Testing软件测试网(x9D7ac)`&PG!qs
(3)通过软件可靠性测试找出所有对软件可靠性影响较大的错误。51Testing软件测试网.V4s9aP1Ji2y[.q
51Testing软件测试网cU uqu
3.软件可靠性测试的特点
|pO&fBz'k0软件可靠性测试不同于硬件可靠性测试,这主要是因为二者失效的原因不同。硬件失效51Testing软件测试网 K4OI1j:q
一般是由于元器件的老化引起的,因此硬件可靠性测试强调随机选取多个相同的产品,统计它
8o1beer5R4Z%\0们的正常运行时间。正常运行的平均时间越长,则硬件就越可靠。软件失效是由设计缺陷造51Testing软件测试网|;o t2\z
成的,软件的输入决定是否会遇到软件内部存在的故障。因此,使用同样一组输入反复测试软51Testing软件测试网~;z0W,X+f(dW)O9L
件并记录其失效数据是没有意义的。在软件没有改动的情况下,这种数据只是首次记录的不51Testing软件测试网$Zey5c9}? MG6R4l
断重复,不能用来估计软件可靠性。软件可靠性测试强调按实际使用的概率分布随机选择输51Testing软件测试网!K1n$CuScc1e0VlJ
入,并强调测试需求的覆盖面。51Testing软件测试网b+}/X&VAr'G e
软件可靠性测试也不同于一般的软件功能测试。相比之下,软件可靠性测试更强调测试
0zW \a-XO+W0输入与典型使用环境输入统计特性的一致,强调对功能、输入、数据域及其相关概率的先期51Testing软件测试网)q"Q(B Vd
识别。测试实例的采样策略也不同,软件可靠性测试必须按照使用的概率分布随机地选择测51Testing软件测试网xy%zp+y5m*[
试实例,这样才能得到比较准确的可靠性估计,也有利于找出对软件可靠性影响较大的故障。51Testing软件测试网VGg@R
此外,软件可靠性测试过程中还要求比较准确地记录软件的运行时间,它的输入覆盖一般也要51Testing软件测试网e#B?]u"B+v
大于普通软件功能测试的要求。51Testing软件测试网/zrS8TE(SIw
对一些特殊的软件,如容错软件、实时嵌入式软件等,进行软件可靠性测试时需要有多种
1V6HO1U?\QA auu)O0测试环境。这是因为在使用环境下常常很难在软件中植入错误,以进行针对性的测试。51Testing软件测试网7Xk [r3M)^
8sYQ zEt04.软件可靠性测试的效果
Q~"~GX0软件可靠性测试是软件可靠性保证过程中非常关键的一步。经过软件可靠性测试的软件51Testing软件测试网%Hi!S']A
并不能保证该软件中残存的错误数最小,但可以保证该软件的可靠性达到较高的要求。从工51Testing软件测试网"i0e8N8h{HQ sz
程的角度来看,一个软件的可靠性高不仅意味着该软件的失效率低,而且意味着一旦该软件失
V'p1z4WS9LM0效,由此所造成的危害也小。一个大型的工程软件没有错误是不可能的,至少理论上还不能证51Testing软件测试网 |8wB]%u\i9R
明一个大型的工程软件能没有错误。因此,保证软件可靠性的关键不是确保软件没有错误,而51Testing软件测试网 }2CQB\
是要确保软件的关键部分没有错误。更确切地说,是要确保软件中没有对可靠性影响较大的51Testing软件测试网&Q4lJ%oB
错误。这正是软件可靠性测试的目的之一。
nRT-X1R$^0软件可靠性测试的侧重点不同于一般的软件功能测试,其测试实例设计的出发点是寻找
5A4P;TbY5PrM`V0对可靠性影响较大的故障。因此,要达到同样的可靠性要求,可靠性测试比一般的功能测试更51Testing软件测试网xb+}%z Qw7w!Dd
有效,所花的时间也更少。
YVzvuL3]0另外,软件可靠性测试的环境是具有使用代表性的环境,这样,所获得的测试数据与软件
!S$UhiIl0的实际运行数据比较接近,可用于软件可靠性估计。51Testing软件测试网&T]:V\:OT:] j
总之,软件可靠性测试比一般的功能测试更加经济和有效,它可以代替一般的功能测试,
J+kJ5F;Z+vLBI0而一般的软件功能测试却不能代替软件可靠性测试,而且一般功能测试所得到的测试数据也51Testing软件测试网u(Z$^+^g@
不宜用于软件可靠性估计。51Testing软件测试网vd2udE.d
51Testing软件测试网#Zy"y%TH+Oj} d
二、软件可靠性测试中需注意的问题51Testing软件测试网z2H(O8X3Z} PEy"]*M
软件可靠性测试一般可分为四个阶段:制定测试方案,制定测试计划,进行测试并记录测51Testing软件测试网"J0u7x#`J2q L:th
试结果,编写测试报告。
,N3_7u9D/H|m$@0制定测试方案时需要特别注意被测功能的识别和失效等级的定义。制定测试计划时需设51Testing软件测试网)JKt+EV2B Q
计测试实例,决定测试时要确定输入顺序,并确定程序输出的预期结果,这时也需注意测试覆51Testing软件测试网.c#o&q4w.T
盖问题。
M#vcX8g051Testing软件测试网@%VT&o.s9AP4Wp
1.功能识别51Testing软件测试网/{+l5ft1g
软件可靠性测试的第一步就是进行功能识别,确定使用剖面。功能识别的目标是:识别所
YqF,p/bJ(|'r.{(Y0有被测功能以及执行这些功能所需的相关输入,识别每一个使用需求及其相关输入的概率分51Testing软件测试网'dG EN8?
布。51Testing软件测试网1MG*CBJ IQV,e
为达到第一个目标,需要分析软件功能的所有集合,这些功能之间全部的约束条件,功能51Testing软件测试网%Z9@-{{"XG6wi
之间的独立性、相互关系和相互影响,还需分析系统的不同运行模式、失效发生时系统重构51Testing软件测试网,]mzMK0e4tJOL
策略等对软件运行方式有较大影响的因素。51Testing软件测试网(O;j3u0YRl(GB
第一个目标也是一般软件功能测试需要达到的目标,但第二个目标则是软件可靠性测试
(Jy6S}4O;eCtF0特别强调的。为了得到能够反映软件使用的有代表性的概率分布,测试人员必须和系统工程
+|8QJ8N5b0师、系统运行分析员和顾客共同合作。需要指出的是,由于可靠性的要求,输入数据的概率分51Testing软件测试网j'enp~2L
布应包括合法数据的概率分布和非法数据的概率分布两部分。有时为了更好地反映实际使用
fQBQL;r8\0状况,还需给出那些影响程序运行方式的条件,如硬件配置、负荷等的概率分布。
o Yi1m[;H2^051Testing软件测试网T5[?IcP8g6n$I
2.定义换效等级
kKqz5u|a0定义失效等级主要是为了解决下面两个问题:
Q Z){/Z?GNI0·对发生概率小但失效后危害严重的功能需求的识别。
:q;KF"a*h]0·对可不查找失效原因、并不做统计的功能需求的识别。51Testing软件测试网-e%C&?fPV8m\
在制定测试计划时,失效及其等级的定义应由测试人员、设计人员和用户共同商定,达成51Testing软件测试网^9{J G0n'cy
协议。一般的等级定义如表所示。51Testing软件测试网}}#Z H CQ;V,dT
@@16115000.GIF;表1 失效等级定义@@