目录

一、软件可靠性的概念

二、软件可靠性测试过程

三、软件可靠性增长实验

四、软件可靠性验证实验

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


一、软件可靠性的概念

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

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

软件可靠性测试目的:

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

◆评估软件可靠性水平

◆预计软件可靠性水平

◆实现软件可靠性增长

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

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

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

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

二、软件可靠性测试过程

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

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

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

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

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

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 (查询) };

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

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

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

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

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

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

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

例如一个飞机的例子:

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

三、软件可靠性增长实验

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

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

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

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

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

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

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

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

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

四、软件可靠性验证实验

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

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

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

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

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

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

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

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

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

工程实践表明,软件的失效分布一般也可以认为是指数分布,因此,软件可靠性验证测试方案也按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达到了。否则认为指标没有达到。

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

系统性谈谈软件可靠性——第4讲:软件可靠性测试相关推荐

  1. 软件可靠性指标mtbf测试评估,软件可靠性评估.pdf

    软件可靠性评估 软件可靠性工程基础 --软件可靠性评估 北京航空航天大学可靠性与系统工程学院 目的  理解什么是软件可靠性评估,基本原理  掌握和应用典型的软件可靠性模型  了解比较软件可靠性模 ...

  2. 系统性谈谈软件可靠性——第7讲:家电软件出问题的一些思考

    我们做家电产品,相对来说,软件其实并不太难,但也会出一些错误. 但软件错误往往修正起来比较快,也不会花很多钱,所以软件问题并没有被很重视. 今天谈谈我的一些思考,属个人观点,不一定对. 一.需求评审的 ...

  3. 【谈谈疫情+金三银四下测试面试的行情】一个月内连续面试40+位候选人。

    前文 本人从事软件测试5年多了,大学时期从大二开始开始自学软件测试,当然那时候也开了相关课程,无论上什么都带着一本软件测试联系题册,直到做烂一本又一本.当时铁了心以软件工程班级第一的开发水平选择做软件 ...

  4. 谈谈8583报文的使用及测试

    ISO8583报文在金融行业可谓是声名显赫,8583报文是一个国际标准的包格式,其重要性阿堂就不用多说了,网上有很多的介绍,不过对于一个从未接触过8383报文的新手来说,还是很有难度的.它主要是用来解 ...

  5. 直击面试现场:谈谈我面试十家公司测试岗的特别经历

    前言: 最近前前后后面试了6天,一共10家公司,技术过了6家,拿到了其中3家公司的offer,最终决定来到某个二线互联网公司工作.以下面试企业为了保密我不说实际名称. 第一家公司:简称A 由于刚刚开始 ...

  6. 【软件质量与软件测试 软件可靠性度量和测试】

    文章目录 第四章 软件可靠性度量和测试 4.1 软件可靠性 4.1.1 软件可靠性发展史 4.1.2 软件可靠性的定义 4.1.3 软件可靠性的基本数学关系 4.1.4 软件可靠性与硬件可靠性的区别 ...

  7. 【软件质量】软件可靠性

    文章目录 可靠性 软件可靠性和硬件可靠性 软件可靠性 可靠性 可靠性被定义为计算机系统的可信度,因此可以合理地依赖它提供的服务.系统提供的服务是其用户可感知的行为:用户是与前者交互的另一个系统(人的或 ...

  8. 谈谈机器学习AI模型测试与评估方法分析

    随着数字化转型与人工智能发展,AI应用软件层出不穷,人们虽然理解人工智能趋势,但是,企业往往很难接受这样AI应用软件,其中质疑点主要有: 预测或识别的准确性 模型相关性 鲁棒性 安全性 数据隐私 性能 ...

  9. 软件测试52讲 - 笔记(一)- 测试基础知识

    测试基础知识 01 | 你真的懂测试吗?从"用户登录"测试谈起 总结 案例 功能 测试用例 基础功能用例(基于等价类和边界值设计) 可添加功能用例(经验型) 安全性用例 性能用例 ...

  10. 高效的敏捷测试第四课 测试的团队协作

    第08讲:借助 Tet Owner 角色,完成团队转型? 三年前的一天,我碰到了一个之前在思科的老同事,问了下他现在软件开发采用的是什么模式? 他回答:"已全面实施敏捷开发模式了,有些团队都 ...

最新文章

  1. android 视频的缩略图 缓存机制和 异步加载缩略图
  2. 电子商务java b2b b2c o2o平台
  3. 计算机应用基础专业自我鉴定范文毕业生,中专生计算机专业自我鉴定(7页)-原创力文档...
  4. 通达oa oracle数据库,通达OA 2016系统连接ORACLE 11g数据库(图文)
  5. wxWidgets:wxRichMessageDialog类用法
  6. 请MM吃饭之工厂模式实现
  7. 超干货!当初我要是这么学习操作系统就好了(附带思维导图)
  8. java对象类型有哪些_Java中常用的对象数据类型有哪些?它们分别又占多少个字节呢?...
  9. php爬取flash的交互数据库,基于PHP的Flash与MySQL数据库通讯的实现
  10. 10 使用ViewPager实现导航
  11. Shell 教程 - 菜鸟教程
  12. 数据分析各省高考难度,河南两广山西 最难
  13. GeForce Experience界面重叠解决办法
  14. mediawiki mysql配置_安装MediaWiki
  15. 计算机专业助我成长作文600,挫折助我成长作文(精选6篇)
  16. 星浩资本-以流程为中心
  17. 初学unity(简单的视觉欺骗)
  18. 外包公司究竟有没有前途?讲讲我在外包公司的真实经历
  19. 屏幕不光只看尺寸 各材质屏幕实战解析
  20. 神级程序员都在用什么工具?【建议收藏】

热门文章

  1. Total Commander的SFTP插件安装
  2. Github下载速度慢 提升github下载速度最新解决方案 跟龟速说拜拜(持续更新 保证方案可行 建议收藏)
  3. PostgreSQL 逻辑复制插件 UDR,可以愉快的玩类似MySQL的binlog复制了。
  4. EsgynDB 使用JDBC UDR访问远程Trafodion的几个问题小结
  5. 网站攻击怎么来的,如何攻击?
  6. [UE4]材质中的UV理解(UV是什么)
  7. c语言中char的赋值
  8. CE实现植物大战僵尸后台运行
  9. stata陈强:计量经济学及stata应用_陈强 第四章 一元线性回归
  10. 基于神经网络的毕设题目_《基于神经网络的图像识别方法研究》毕业设计方案.pdf...