![软件测试:实践者方法](https://wfqqreader-1252317822.image.myqcloud.com/cover/818/51893818/b_51893818.jpg)
2.4 软件可靠性
可靠性是重要的软件质量特性之一。IEEE将软件可靠性定义为:在规定的条件下和规定的时间内,软件不引起系统失效的能力。该能力的概率表示就是软件可靠度,即系统输入和使用的函数。系统输入以确定是否触发软件错误,软件可靠度是软件固有错误的函数。
规定的条件是指系统所处环境条件、负荷大小及运行方式。环境条件包括软件运行、储存等软硬件环境、数据环境及其输入分布。软件运行一次所需要的输入数据构成输入空间的一个元素,该元素是一个多维向量,全体输入向量集合构成软件的输入空间。输出数据构成一个输出向量,全部输出向量集合构成输出空间。在软件运行过程中,输入空间元素及每个元素被选用的概率构成运行剖面。软件可靠性与规定的时间密切相关,在不同时间内,系统将呈现出不同的可靠性。规定的功能是指软件具备的功能,即所能提供的服务。用表示规定的条件,t表示规定的时间,随机变量
表示软件从运行开始到失效所经历的时间。那么,软件可靠度为
![](https://epubservercos.yuewen.com/933236/30655029503101206/epubprivate/OEBPS/Images/txt002_22.jpg?sign=1739329253-JueSZl6abpl2jrxMp6WL1ChpHqPmjyjM-0-f9b242531ae36979835708eaaa1f9679)
(2-2)
软件是从输入空间到输出空间的映射,软件失效是由于未将某些输入映射到期望的输出所致,是逻辑错误、系统退化、外部环境、输入错误等因素或其组合诱发,并非像硬件那样因为老化、磨损、耗散等原因所致,机理复杂。软件可靠性的概率性质主要体现在输入选择上。假设输入空间上共有个输入,则可以引入一个执行变量Y(i) :
![](https://epubservercos.yuewen.com/933236/30655029503101206/epubprivate/OEBPS/Images/txt002_24.jpg?sign=1739329253-vJpY5deNo23XdyTmN3HTtuxJdvthOQPF-0-27d4c5b6a9b0b7c4e2e9021483c666f0)
对于特定的软件系统,是输入i时软件运行正确的概率。在这一特定应用中的一次输入导致软件运行正常的概率为
![](https://epubservercos.yuewen.com/933236/30655029503101206/epubprivate/OEBPS/Images/txt002_26.jpg?sign=1739329253-42eAu7OK3FJRqGbeKpSACBCdYPGtfuqa-0-06a446494252beddd165010434388a30)
(2-3)
因此有
![](https://epubservercos.yuewen.com/933236/30655029503101206/epubprivate/OEBPS/Images/txt002_27.jpg?sign=1739329253-nprXbKHk5DiCR5uAFqbuADOwv0aHcpQ6-0-dbe5d46477312ee581c9cb8de93bd927)
(2-4)
式中,n是时间区间内软件系统运行的总次数。
以上描述似乎从本质上反映了软件可靠性定义的概率性质。事实上,输入空间I的大小即使不是无穷大,也可能十分庞大,在某一特定应用中确定,可能非常困难。对于确定的软件系统,这种定义并无实际意义。一种有效的方法是将基于运行的软件可靠性定义描述为:假设在一特定应用中,软件系统实际运行次数为
,cn表示在这
次运行中正确运行的次数,则
表示一次运行正确的概率。于是有
![](https://epubservercos.yuewen.com/933236/30655029503101206/epubprivate/OEBPS/Images/txt002_33.jpg?sign=1739329253-2vDEeDcoFTP1abOqrYLcxauvlv8TdAVJ-0-fc8f1152c1311d064f20e94aa6b7b0a9)
(2-5)
导致软件失效的原因及机理非常复杂,至今还难以甚至无法事先判定软件的错误性质以及错误引入时间、错误引入部位,难以准确确定软件的运行状态和执行路径,且软件失效的外部表象具有明显的随机性。对于随机事件的变化规律,基于概率描述,是一种有效的方法,也是一种必然的选择。硬件系统尤其是电子装备系统,其可靠性分析评估技术已臻成熟,得以广泛应用。创立一套与系统可靠性相兼容的软件可靠性理论和方法,是软件可靠性分析的基础。上述定义恰到好处地反映了系统可靠性综合与分析的要求,这种引申和扩展是十分自然的。