系统性谈谈软件可靠性——第4讲:软件可靠性测试

目录

一、软件可靠性的概念

二、软件可靠性测试过程

三、软件可靠性增长实验

四、软件可靠性验证实验

五、软件可靠性验证测试方案


一、软件可靠性的概念

软件可靠性测试,是指为了满足用户对软件的可靠性要求,基于用户使用模型对软件进行测试,发现并纠正软件中的缺陷提高软件的可靠性水平,并验证软件能否达到用户可靠性要求的软件测试方法。

首要目标是寻找频繁的、关键的失效,是面向失效的测试方法。

软件可靠性测试目的:

◆验证软件可靠性满足给定的要求

◆评估软件可靠性水平

◆预计软件可靠性水平

◆实现软件可靠性增长

需要注意的是,软件测试和软件可靠性测试不同,在第5讲会讲软件测试。

这里简单提一下软件可靠性测试与其它测试类型(比如白盒、黑盒,灰盒测试等)的关系:

1.其它测试类型关注与其相关联的缺陷类型,发现和消除这些缺陷,对改进软件可靠性有帮助。

2.每一种测试类型都有其针对性,各尽其责,相互补充,改进测试的充分性。

二、软件可靠性测试过程

我们以一张图来看软件可靠性的测试过程:
 

系统性谈谈软件可靠性——第4讲:软件可靠性测试_第1张图片

这里不好理解的可能是操作剖面,怎么理解呢?我们可以理解为:操作及其发生概率组成的集合。用它来定量的描述软件的实际使用情况。

系统性谈谈软件可靠性——第4讲:软件可靠性测试_第2张图片

剖面有很多种,如客户剖面,用户剖面,功能剖面等等。同一个软件因为用户不同,存在多个操作剖面。

系统性谈谈软件可靠性——第4讲:软件可靠性测试_第3张图片

在第2讲时,我们给过这个例子,这里再次重复下,以实际案例讲解剖面的构建。

虚拟维修训练系统可实现在虚拟环境下对装备进行维修和拆卸的功能。是一款集训练、学习、自测于一身的学习训练系系统,对受训人员的维修保障能力有极大的帮助,其构成如下。

系统性谈谈软件可靠性——第4讲:软件可靠性测试_第4张图片

a) 客户剖面可以表示为:

客户剖面= {P (院校),P(军工厂),P(基地)};

本例中,一组模拟数据为:院校有5所,军工厂10个,基地15个,则概率计算如下:

P (院校) =5/ (5+10+15) = 5/30

P (军工厂) =10/ (5+10+15) = 10 / 30

P (基地) =15/ (5+10+15) = 15/30

b) 用户剖面可以表示为:

用户剖面= {P (管理员), P (受训者) };

这里模拟一组用户数据如下:

院校一共500人使用此软件,其中10人为管理员,490人为受训者;军工厂一共50人使用此软件,管理员5人,受训者45人;基地一共100人使用此软件,管理员5人,受训者95人。

根据这些数据可计算用户剖面概率:

P (管理员) = (5/30) ∗ (10/500) + (10/30) ∗ (5/ 50) + (15/30) ∗ (5/100) =37/600

P (受 训 者) = (5/30) ∗ (490/500) + (10/30) ∗ (45/50) + (15/30) ∗ (95/100) =563/600

c) 功能剖面可以表示为:

功能剖面= {P (登录), P (实施) , P (查询) };

不同系统使用人员 (管理员和受训者) 使用系统不同功能的情况如下所示:

系统性谈谈软件可靠性——第4讲:软件可靠性测试_第5张图片

P (登录) =0∙7∗P (管理员) +0∙2∗P (受训者) =0.7*37/600+0.2*563/600 = 0.2308

P (实施) =0∙2∗P (管理员) +0∙6∗P (受训者) =0.2*37/600+0.6*563/600 = 0.5753

P (查询) =0∙1∗P (管理员) +0∙2∗P (受训者) = 0.1*37/600+0.2*563/600 = 0.1938

根据实际的使用情况对功能剖面中实施部分进行分解实施包括提示和训练两大功能,其概率分配比例为0.2,0.8。则:

P (提示) =0∙2∗P (实施)=0.11506

P (训练) =0∙8∗P (实施)=0.46024

这样我们就计算出了登录、实施、查询这三个功能的使用概率。按照同样的道理,可以去计算再下层的功能剖面,如实施下面的调练,以及再往下的操作剖面:讲解演示、引导训练、自主训练、自测。

构建完剖面后,接下来是准备测试用例。软件可靠性测试所用的测试用例是根据操作剖面随机选取的。整个过程可以用下面这个流程表示,可以根据特殊情况进行适当调整:系统性谈谈软件可靠性——第4讲:软件可靠性测试_第6张图片

 

比如上面这个例子中的“讲解演示”测试用例:

系统性谈谈软件可靠性——第4讲:软件可靠性测试_第7张图片

测试用例可以用一些方法来帮助设计,我们在第5讲介绍测试用例的设计。

接下来是准备测试环境,为了得到尽可能真实的结果,可靠性测试应该尽量在真实的环境下进行。这里就引申出考虑软件工作载荷的可靠性综合试验剖面设计。

例如一个飞机的例子:

系统性谈谈软件可靠性——第4讲:软件可靠性测试_第8张图片

系统性谈谈软件可靠性——第4讲:软件可靠性测试_第9张图片

 系统性谈谈软件可靠性——第4讲:软件可靠性测试_第10张图片

 然后是测试运行,收集可靠性数据,进行数据分析等等。这些内容比较常规,不在此细讲。

三、软件可靠性增长实验

软件可靠性增长实验的定义:

在软件交付前进行,通过可靠性测试暴露软件缺陷,采取有效措施排除失效率较大的缺陷,以提高交付软件的可靠性。

软件可靠性增长实验的特点:

测试人员:通常由软件研制方而非使用方进行;

测试阶段:通常在软件测试阶段;

测试场所:一般在实验室内进行;

测试对象:软件产品研制的中后期,验证测试之前;

测试方法:基于操作剖面的随机测试方法;

测试特征:出现失效后即修改软件,并验证修正的正确性。

四、软件可靠性验证实验

软件可靠性验证实验的定义:

验证在给定置信水平下,软件的可靠性水平是否达到规定的可靠性指标的要求,验证结果是软件定型的依据。相当于硬件可靠性鉴定试验,两者都是统计实验。

软件可靠性验证实验的特点:

测试人员:通常由使用方参加测试;

测试阶段:软件确认(定型或验收)阶段;

测试对象:软件产品的最终版本;

测试方法:基于软件操作剖面的随机测试方法;

测试特征:不进行软件缺陷的剔除。

五、软件可靠性验证测试方案

工程实践表明,软件的失效分布一般也可以认为是指数分布,因此,软件可靠性验证测试方案也按GJB 899A-2009《可靠性鉴定和验收实验》分为定时截尾统计试验方案、定数截尾统计试验方案和序贯截尾统计试验方案。

考虑到有的软件可靠性要求很高,还有无失效考核测试方案。

书上给了个例题:

某控制系统的软件的可靠性指标为MTBF=1000h,若生产方和使用方商定的风险α=β=20%,鉴定比d=3,问怎样进行该软件的可靠性验证方案?

定时截尾,根据α=β=20% ,d=3 查GJB 899A-2009的试验方案(课本178页表4-9),采用方案17,即总测试时长T=4.3 θ1,

接收/拒收失效数≤2。即软件应运行4.3 θ1即4300h,若期间发生的失效数≤2,则认为该软件的MTBF= 1000h达到了。否则认为指标没有达到。

本文为《软件可靠性简介》培训课程中摘录的公开内容,关注微信公众号“永恒之地”,后台回复“软件可靠性”,下载培训课件。

 

你可能感兴趣的:(软件可靠性,软件工程,经验分享,职场和发展)