软件可靠性测试与评估实验指导书

时间:2024.3.10

软件可靠性测试与评估

实验指导书

北航可靠性与系统工程学院


目 录

1       绪论... 1

1.1        软件可靠性测试与评估概论... 1

1.2        软件可靠性测试分类... 3

2       实验设置的背景、意义和内容安排... 4

2.1        实验设置的背景、意义... 4

2.2        本实验的内容安排... 5

2.3        实验课要求... 5

2.4        实验报告要求... 6

2.5        实验软件简介... 6

2.5.1         软件可靠性测试数据生成工具TCS. 6

2.5.2         软件可靠性评估工具SRET. 6

2.5.3         ATM机软件... 6

3       软件可靠性测试剖面构造实验部分... 7

3.1        概述及实验相关介绍... 7

3.1.1         Musa操作剖面... 7

3.1.2         Musa操作剖面的构造方法... 8

3.2        实验软件... 13

3.2.1         TCS. 13

3.2.2         ATM机软件... 14

3.3        实验内容... 14

4       软件可靠性验证测试实验部分... 15

4.1        概述及实验相关介绍... 15

4.1.1         软件可靠性验证测试流程... 15

4.1.2         软件可靠性验证统计测试方案... 17

4.1.3         软件可靠性验证测试的注意事项... 22

4.2        实验软件... 23

4.3        实验内容... 23

5       软件可靠性增长测试实验部分(选做) 23

5.1        概述及实验相关介绍... 23

5.1.1         软件可靠性增长测试流程... 23

5.1.2         软件可靠性增长测试的注意事项... 26

5.2        实验软件... 26

5.3        实验内容... 27

6       软件可靠性评估实验... 27

6.1        概述及实验相关介绍... 27

6.1.1         软件可靠性评估流程... 27

6.1.2         软件可靠性评估注意事项... 28

6.2        实验软件... 28

6.3        实验内容... 28


1         绪论

1.1               软件可靠性测试与评估概论

软件可靠性测试是指为了保证和验证软件的可靠性而对软件进行的测试。它是随机测试的一种,其主要特征是按照用户实际使用软件的方式来测试软件。软件可靠性测试是评估软件可靠性水平及验证软件产品是否达到可靠性要求的一种有效途径。与其它类型的软件测试相比,软件可靠性测试可以使用与其它测试方法相同的测试环境和测试结果分析方法,但是必须使用专有的软件测试数据生成方法和软件可靠性评估技术,在测试数据中体现出软件需求以及用户对软件的使用情况,在评估中体现出软件可靠性测试中的定量化评估度量。

通过软件可靠性测试可以达到以下目的:

a) 实现软件可靠性的有效增长:通过软件可靠性测试暴露出软件中隐藏的缺陷,并进行排错和纠正后,软件可靠性会得到增长。软件可靠性测试暴露出来的缺陷是那些软件中发生概率高的缺陷,而且是对软件可靠性影响最大的缺陷,这些缺陷得到纠正后,软件可靠性在软件可靠性测试的早期就会得到较大的增长。

b) 用于验证软件可靠性是否满足一定的要求:可以根据用户的可靠性要求确定可靠性验证方案,进行可靠性验证测试,从而验证软件可靠性的定量要求是否得到满足。

c) 用于预计软件的可靠性:通过对软件可靠性增长测试中观测到的失效数据进行分析,可以评估当前软件可靠性的水平,预测未来可能达到的水平,从而为软件开发管理提供决策依据。

软件可靠性测试与一般软件测试在测试目的、测试效率、测试数据生成方法、测试数据收集、测试数据分析以及测试停止准则上都存在差异,软件可靠性测试与一般软件测试的比较如表1所示。

表1软件可靠性增长测试与一般测试比较

软件可靠性测试的特点如图1所示。

图 1软件可靠性测试的特点

国家标准GB11457中,软件可靠性评估(software reliability assessment)或软件可靠性评价(software reliability evaluation)是指“确定现有系统或系统部件可靠性所达到的水平的过程”。国际标准IEEE Std.1633中,软件可靠性评估(software reliability evaluation)被定义为“统计学技术在系统测试和运行期间收集的可观测失效数据上的应用,用于评价软件的可靠性”。

软件的失效数据可以在下述两种情况下获得,一是在测试阶段后期,通过软件可靠性测试(即按照软件的实际使用方式测试软件的一种方法),收集测试过程中的失效数据,对软件的可靠性水平进行估计,并能够对未来可能达到的可靠性水平进行预计;二是在软件投入使用后,通过收集实际使用过程中软件的失效数据,对软件可靠性进行评估,并对未来软件可能达到的可靠性水平进行预计。此时的软件可靠性评估结果被认为是真正意义上“软件完成规定功能的能力”(即软件可靠性的定义)的反映,即:此时的可靠性评估结果,不仅可以给出实际的可靠性水平,也可以为下一代软件或同类型软件的可靠性定量要求的确定提供参考。

软件可靠性评估是软件可靠性工程中的重要活动内容之一,可用于定量地评价软件工程技术,能够给出“软件究竟有多可靠”的定量结果。

1.2               软件可靠性测试分类

软件可靠性测试分为软件可靠性增长测试、软件可靠性验证测试,如果在没有可靠性指标要求而需要评估当前的可靠性水平,还有软件可靠性摸底测试。

l  软件可靠性增长测试

软件可靠性增长测试一般在软件系统测试阶段的末期进行。通常在完成编码、单元测试、集成测试以及常规系统测试后,如果还有可靠性要求,再进行软件可靠性增长测试。软件可靠性增长测试是一项费时、费力的工作,一般仅适用于有可靠性定量要求、且可能会影响系统安全和任务完成的关键软件。通常采取的是测试-可靠性分析-修改-再测试-再分析-再修改的循环过程。

软件可靠性增长测试具有以下特点,如表2所示

表 2软件可靠性增长测试的特点

l  软件可靠性验证测试

软件可靠性验证测试是为了验证在给定的置信度下,软件当前的可靠性水平是否满足用户的要求而进行的测试。即用户在接收软件时,确定它是否满足软件研制任务书中规定的可靠性指标要求。软件可靠性验证测试具有如表3所示的特点。

表 3软件可靠性验证测试的特点

2         实验设置的背景、意义和内容安排

2.1               实验设置的背景、意义

在高新技术武器装备中,计算机软件在装备研制中的地位日趋重要。以美国歼击机上的航空电子系统为例,美国的歼击机每更新一代,其由软件实现的功能翻一番。然而,软件发展至今不过短短几十年的时间,无论从开发过程还是质量控制,与硬件相比都显得较为薄弱。对软件,人们通常关心两个方面:一个是软件的功能性能需求,我们需要功能强大、性能优越的软件在生产、生活中扮演更加重要的角色;另一个是对软件质量的需求,需要高可靠性的软件在生产、生活中持续的发挥作用。对于第一个需求,不断涌现的编程工具和语言,能够使编程人员开发出功能和规模非常强大的软件。对于第二个需求,定量化的可靠性管理将是一个重要手段,如在美国的第五代战机研制中已经明确的提出了软件可靠性指标,并进行定量化的验证。常规的软件测试(如单元测试、集成测试、系统测试等)旨在发现软件缺陷,却不能进行软件可靠性的定量评估。因为软件可靠性与软件的使用情况密切相关,在测试中需要体现出用户对软件的使用情况,成为了软件可靠性测试中一个非常重要的环节。软件可靠性测试有效地发现程序中影响软件可靠性的缺陷,从而实现可靠性增长;通过对软件可靠性测试中观测到的失效情况进行分析,可以验证软件可靠性的定量要求是否得到满足;通过对软件可靠性测试中观测到的失效数据进行分析,可以评估当前软件可靠性的水平,预测未来可能达到的水平,从而为软件的开发管理提供决策依据。

软件可靠性测试与评估是软件可靠性工程的核心内容,是软件可靠性工程技术区别与其它软件工程技术的特色所在。通过软件可靠性测试与评估实验教学,能够使学生建立定量的软件可靠性实验技术的概念,掌握软件可靠性工程中最具代表性的软件可靠性测试剖面技术,按照严格的软件可靠性增长测试和验证测试的要求,实现完整的测试评估实验过程,以软件可靠性测试计划、测试说明、测试报告的方式完成实验报告。本实验采用的软件可靠性测试试验系统,软件可靠性测试数据自动生成工具,软件可靠性评估工具为北航所独有。本实验的开设,对国内高校研究生软件可靠性实验来说具有开创性。不仅可以掌握软件可靠性测试与评估的基本原理,而且通过实验使学生从软件被测对象分析、软件可靠性测试剖面构造、软件可靠性测试执行、软件可靠性测试评估等环节加深对软件可靠性测试及评估理论知识的理解,并熟悉相关软件的使用,对于他们将来走上工作岗位无论是理论研究还是工程实践都具有重要意义。

2.2               本实验的内容安排

本实验包括四部分内容:

1)软件可靠性测试剖面构造实验

2)软件可靠性评估实验

3)软件可靠性验证测试实验

4)软件可靠性增长测试实验(选做)

其中软件可靠性评估实验会贯穿在验证测试实验和增长测试实验之中进行。

2.3               实验课要求

1)        以两人为小组完成实验内容,每组使用一台固定的实验用计算机,以小组成绩作为学生个人成绩。

2)        每个小组需要在实验用计算机的D盘,以两人的姓名命名一个文件夹,并把实验中产生的数据、文件、文档存放在该文件夹中。

3)        实验用计算机禁止插拔自带U盘,非教师允许,不得向实验计算机拷入和拷出文件。

4)        各小组可以在实验过程中自带笔记本电脑编写测试文档,测试文档可以在实验室之外完成。

5)        实验中使用的《软件可靠性测试剖面报告》、《软件可靠性验证测试计划》、《软件可靠性验证测试说明》、《软件可靠性验证测试报告》、《软件可靠性增长测试计划》、《软件可靠性增长测试说明》、《软件可靠性增长测试报告》及测试记录表格模版可以在实验课公共邮箱中下载:experiment2014@sina.com,密码为shiyan2014。实验报告需要在实验结束后的2周内提交。

6)        实验前请认真预习实验指导书,每次到实验室需要签到。

7)        实验出勤情况、软件可靠性测试剖面的完成质量、软件可靠性测试数据的收集质量、测试文档质量将作为成绩评价的主要标准。

2.4               实验报告要求

本实验按照软件可靠性测试过程开展。实验报告为可靠性测试的阶段性文档,包括测试计划、测试说明、测试报告、测试记录等。实验报告以电子文档的方式编写和提交,严禁抄袭。如果发现雷同的实验报告,将取消实验课成绩。

2.5     实验软件简介

2.5.1              软件可靠性测试数据生成工具TCS

软件可靠性测试数据生成工具TCS是集软件可靠性测试剖面建模与测试用例生成为一体的软件工具,支持使用Musa的建模。关于TCS的说明详见TCS用户手册。

2.5.2              软件可靠性评估工具SRET

SRET支持基于软件可靠性失效数据分析可靠性趋势,分析软件可靠性模型的质量,并进行可靠性评估。关于SRET的详细说明详见SRET用户手册。

2.5.3              ATM机软件

ATM机软件主要用于用户进行取款,存款,转账,查询余额,退卡等操作。客户通过插入银行卡,输入正确的密码,便可根据显示器页面上的提示进行以上操作。操作界面如图2。关于ATM机软件的详细说明详见ATM机的软件需求规格说明。

图 2 ATM软件界面

3         软件可靠性测试剖面构造实验部分

3.1               概述及实验相关介绍

软件可靠性测试的主要思想就是按照用户对软件实际使用的统计规律进行随机测试,目前通常采用操作剖面的形式对软件的使用情况进行建模,然后在建模的基础上生成测试数据进行测试。常见的操作剖面通常有Musa的操作剖面、Markov、使用剖面等方法。本实验将采用Musa操作剖面构造方法进行剖面构造。

3.1.1              Musa操作剖面

对于软件可靠性测试而言,其基本思路都是按照用户的实际使用软件的方式来进行测试,操作剖面是目前常用的一种对用户实际使用软件情况进行建模的工具。其主要目的之一就是生成软件可靠性测试数据,用于支持测试的执行。

对于操作剖面,Musa的定义是指操作的集合及其发生概率。该定义中,操作剖面不严格强调输入之间的相互约束和时序关系,重点关心操作的分布。这种定义的特点是简单易行,由于相对忽略了输入之间的约束和时序,在工程中较容易推行。

在Musa的操作剖面中,操作是一个主要的系统逻辑任务,持续时间短,结束时将控制权交还给系统,并且它的处理与其它操作显著不同。按照Musa的定义,操作应该是一个逻辑概念,它与软件的功能需求和特征相关。根据Musa的操作剖面,对操作可以做如下的解释:

“持续时间短”是指在通常负载条件下每个小时可以有多个操作发生;

“将控制权交还给系统”说明当一个操作完成后,系统应该结束对该操作的处理,进而转入等待下一个操作,或者立即执行下一个操作;

“处理与其它操作显著不同”是从系统执行操作的角度来说的,不同的操作,系统应该有着显著不同的处理方式。

剖面是一组独立的元素及其发生概率。例如,如果某一时刻操作A的发生概率是60%,B的发生概率是30%,C发生的概率是10%,则此时的剖面可以表示为[A,0.6;B,0.3;C,0.1]。

3.1.2  Musa操作剖面的构造方法

构造操作剖面的主要目的是定量刻画用户对软件的使用情况,即用户使用软件的统计规律。通常操作剖面可以采用两种不同的构造方法。

1) Musa操作剖面构造方法1

Musa第一种构造操作剖面方法(简称Musa-1)的流程通常包括以下5个步骤,见图3,其中(1)~(4)步为中间步骤剖面,是为准确得到操作剖面而逐步细化的过程。

图3 Musa-1流程

(1) 确定客户剖面

软件的客户是购买并使用软件系统的个人、团体或者机构。客户剖面包括一组独立的客户类型。客户类型是客户群体中以相近的方式使用系统的一个或多个客户,这些客户在使用软件的方式上与其它客户存在显著的区别。通过市场调查的方式可以收集软件的客户信息,对它们进行归纳整理就能得到不同的客户类型。客户剖面中需要为每一种客户类型确定发生概率。概率信息可以从以往类似的软件系统的客户类型中进行收集,并根据新系统的使用要求进行修正,也可以通过收集的客户数量,将组成某一客户类型的客户数量比上所有客户的总数得到。

(2) 定义用户剖面

用户是使用系统的人、组织、机构或其它系统,而用户组是以同一种方法使用软件的用户的集合。用户剖面是用户组及其发生概率的集合,通常在客户剖面的基础上建立用户剖面。可以通过市场或用户调查的方式收集软件的用户信息,然后根据使用软件方式的不同将用户划分为不同的用户组;用户组的发生概率可以通过组成用户组的用户数量比上同一客户类型中所有用户数量的方式得到。如果在不同的客户类型中出现了相同的用户组,则需要把它们进行合并:假设用户组U在某一客户类型Ci下的概率为P(Ci,U),Ci的发生概率为P(Ci),则合并后的用户组发生概率:

                    (1)

其中n为包含用户组U的客户类型总数。

(3) 定义系统模式剖面

系统模式是为了便于分析执行行为,分组而成的一个功能或操作集合。系统模式剖面是系统模式及其发生概率的集合。通常情况下,系统模式种类越多,专门化信息的价值越高,操作也越便利,但是与之而来的是确定和测试其相关操作剖面的费用也增多了。系统模式可以来源于软件的需求或使用情况分析。系统模式的发生概率可以使用各种模式发生频率占所有模式发生频率的比例确定,获得系统模式发生频率的最佳途径是统计软件在客户现场的使用情况;对于新软件或新的应用领域,由于软件还未发布,此时就需要统计类似软件或应用于其它领域的软件早期版本的使用情况,然后根据新软件或新领域的实际情况进行调整;也可以邀请部分客户对新软件进行试用,统计试用情况;在没有统计数据的情况下可以通过调查目标客户、询问专家意见等方式进行估计。定义系统模式可以参考以下因素:

a) 重要的环境条件:如过载与正常的通讯量、初始化与连续操作、系统场所、时间等;

b) 操作的构造性结构:如联机模式和单机模式;

c) 紧迫性:如某种紧急情况下的应急处理模式;

d) 客户或用户:如要求特殊功能的用户组,飞行员模式和地勤人员维护模式;

e) 用户经验程度:如初学者、普通用户或专家模式。

(4) 确定功能剖面

功能剖面是在系统模式下分解系统所需的功能,并确定每个功能的发生概率。功能剖面不需要考虑系统的体系结构或设计因素,通常在需求阶段建立,并且与需求密切相关。构造过程中可以先从软件的研制任务书或软件的需求文档中获得初始的软件功能列表,再结合运行环境的各种情况得到最终的功能列表,最后为每个最终功能分配发生概率。发生概率可以通过功能使用频率占同一系统模式下所有功能使用频率的比例确定,功能的使用频率同样可以通过统计现场使用信息、参考类似软件或早期版本、邀请客户试用、调查目标客户及询问专家意见等方式确定。

(5) 确定操作剖面

操作剖面是操作及其发生概率的集合,确定操作剖面的主要步骤是列出操作并确定每个操作的发生概率。功能与操作之间存在一定的联系,一个功能可以映射成一个或多个操作,一组功能也可以重新合并成一组不同的操作,因此能够根据功能剖面获取操作列表。由于功能之间的差异主要体现在完全不同的任务实现上,而操作之间的差异主要体现在完全不同的处理过程上,因此需要根据系统任务将功能映射为操作。操作发生概率的确定方式与功能发生概率的确定方式类似,通过操作发生频率占所有操作发生频率的比例得到,操作的发生频率也是通过统计现场信息、参考类似软件或早期版本、统计客户使用信息、调查目标客户及询问专家意见等方式收集。

根据软件的具体特点,可以对上述步骤进行裁减:

a) 在软件的客户比较单一的情况下,不需要建立客户剖面;

b) 在软件的用户比较单一的情况下,不需要建立用户剖面;

c) 在软件的系统模式比较单一的情况下,可以省去系统模式剖面的构造;

d) 在软件的操作比较明显的情况下,可以省去功能剖面的构造。

2) Musa操作剖面构造方法2

Musa另一种构造操作剖面(简称Musa-2)的方法流程通常包括以下6个步骤,见图4。

图 4  Musa-2流程

(1) 确定操作模式

操作模式的概念与Musa第一种方法中的系统模式概念相同,是系统使用的独特模式,是需要单独测试的环境条件的集合。

(2) 确定操作的发起者

操作的发起者包括系统的用户、外界系统和系统自身的控制程序。为了确定操作的发起者,首先应该基于系统相关的商业用例和系统使用信息来确定系统的用户类型,用户类型是倾向于以同样的方式使用系统的用户的集合。这里的用户指的是任何能够发起操作的人、系统或组织。

(3) 选择操作剖面表示法

操作剖面可以用表格表示法或图形表示法进行表示。表格表示法的示例见表3,图形表示法的示例见图5。如果大部分操作可以用很少的属性表示,就使用表格表示法,表格表示法中通常以其功能组合来命名操作;如果大部分操作由许多属性来描述,逐一地考虑属性会比较容易,此时就应该选择图形表示法。图形表示法将每个操作表示为图中的一条路径,图5中的节点表示操作的属性,分支表示不同的属性值。

表 3表格法表示的操作剖面

图 5图形法表示的操作剖面

(4) 为每个操作发起者创建操作列表

基于操作的发起人,能够较为方便地创建操作列表。创建操作列表时,应该将每个显著不同的处理都定义为不同的操作,除非它有着非常低的发生概率或执行非常不重要的功能。除了主要参考系统的需求以外,还可以参考事件流图、用户手册、协议和以前的系统版本等信息。

(5) 确定单个操作或属性值的出现率

出现率是操作或属性值在单位时间内的发生次数,最好使用实际的数据来决定出现率。这种对使用的度量常常可以从系统的日志中获得,通常情况下,这些数据已经存在于相同或相类似的系统中。如果在没有这些直接的日志的情况下,可以通过更多的调研工作来收集信息,使用相关的一些数据来对出现率进行评估。

确定操作或属性值的发生概率。操作或属性值的发生概率通过出现率计算得来,可以采用操作/属性值的发生次数除以所有操作/属性值发生的总数获得。

3.2     实验软件

3.2.1  TCS

TCS软件是面向实时嵌入式软件可靠性测试数据生成的应用软件,能够支持对实时嵌入式软件的图形化测试输入建模以及输入元素的信息描述,辅助测试人员对测试环境、软件的使用情况、软件输入情况进行分析。在测试建模的基础上,本软件能够自动生成软件可靠性测试数据,并实现对测试数据的管理。

TCS具备以下的基本功能特性:

1)        支持测试分析、测试建模和测试数据自动生成的全过程。

2)        提供系统图的建模机制,能够以图形化描述的方式辅助用户进行被测系统交联环境的构建和系统分析。

3)        为用户提供输入变量和使用类的提取以及图形建模的机制,使用户能够以图形绘制的方式构建使用类图。

4)        为用户提供使用剖面的建模机制,能够以图形化视图的方式实现多个使用子剖面图,并建立起使用剖面中各个元素的使用关系。

5)        为使用剖面中的每个操作构建操作描述图,支持步骤图和连续图描述。

6)        支持图形化建模过程中的图形元素的拖放、删除、修改、重命名等操作,并能够保持建模中关系的一致性。

7)        能够为图形建模提供检查机制,实现建模过程中错误的发现和定位,并给出准确的错误提示。

8)        能够根据用户的描述建模信息,自动按照测试数据取值规则生成XML形式的测试数据。

9)        能够以测试报表的形式给出整个测试输入建模过程中用户描述信息的报表。

10)    能够提供信息检索服务,用于查找建模中的元素,并提供定位功能。

11)    通过提供测试输入建模信息导入导出功能,从而实现多人开发对同一个被测对象进行描述。

3.2.2   ATM机软件

在本部分实验中,学生需要熟悉ATM机软件的使用,并对其进行剖面建模。ATM机软件的主要功能如图6所示。

图 6 ATM功能结构图

1)        登录模块

登录模块提供了插卡和输入密码两个功能。用户只有在插入磁卡,并正确输入密码后,才能进行后续的事务操作。

2)        事务模块

事务模块提供了取款,存款,转账,查询余额,修改密码五项功能。各项功能的详细说明可见ATM机软件需求说明书。

3)        退出模块

用户可选择退卡功能选项,退出账户。再次登录需要重新输入密码,执行登录操作。

3.3     实验内容

1)        教师演示

教师将对ATM机软件和TCS软件的使用进行演示,以帮助学生熟悉这两项软件的使用。

2)        学生熟悉软件

学生分组之后,以两人为一组熟悉ATM机软件和TCS软件的使用。

3)        ATM机软件剖面构造

(1)   学生以小组为单位对ATM机软件进行分析,并使用TCS构造剖面。

(2)   编写剖面报告,编写的剖面报告将作为该部分的成绩参考。

4)        软件可靠性测试剖面讨论(视情)

在剖面构造完成并提交之后,随机抽取小组讲解构造的剖面,并集体进行完善,挑选出最佳的剖面建模,作为后续实验的标准剖面。

4         软件可靠性验证测试实验部分

4.1     概述及实验相关介绍

4.1.1  软件可靠性验证测试流程

软件可靠性验证测试过程分为4个阶段:测试策划阶段、测试设计与实现阶段、测试执行阶段和测试总结阶段。主要流程见图7。

图 7软件可靠性验证测试的主要流程

1        测试策划阶段

在该阶段主要进行的工作为确定软件失效的定义和等级、编制验证统计测试方案;主要输出为《软件可靠性验证测试计划》。其中最为重要的工作为编制验证统计测试方案。软件可靠性验证测试中通常选用的统计方案有:定时截尾方案、序贯方案和无失效运行方案。表4简述了各统计方案的特点与确定程序。

表 4统计测试方案特点及确定程序

2    测试设计与实现阶段

在该阶段主要进行的工作为构造操作剖面并生成测试用例、建立并校核测试环境。该阶段工作的输出为《软件可靠性验证测试说明》及其附件《软件可靠性测试用例集》。该阶段的主要工作与增长测试类似。

3    测试执行阶段

在该阶段主要进行的工作为执行测试用例,记录、分析测试结果并收集失效数据,按照统计方案要求进行接受/拒收判断。主要的输出为《软件可靠性验证测试记录》、《软件可靠性验证测试问题报告》和《软件可靠性验证测试失效数据记录和分析》。这三份文档作为最终的《软件可靠性验证测试报告》的附件。

4    测试总结阶段

在该阶段主要进行的工作为对软件可靠性验证测试过程和结果进行总结,对软件可靠性参数进行估计,给出软件可靠性验证测试结论。该阶段的主要输出为《软件可靠性验证测试报告》。

4.1.2  软件可靠性验证统计测试方案

软件可靠性验证统计测试方案对于软件可靠性验证测试非常重要,是验证测试时间、资源、接收/拒收条件的重要支持。不同的可靠性验证指标,对统计方案有着不同的要求。

选择统计测试方案时应考虑验证指标的类型、测试环境的预期寿命、该类型软件的质量要求、对软件的实际质量的估计、可承受的最大测试时间、可承受的最大失效数、测试经费、费用-时间的权衡、是否有先验信息等诸多因素。

1    方案类别的选择

(1) 验证指标为MTBF/失效率的软件

a) 若合同中要求进行软件可靠性验证测试,提供MTBF的验证值,并且有固定的测试截止时间时,应选用软件可靠性(MTBF)定时测试方案;

b) 对于质量很高或很低的软件,可选择软件可靠性(MTBF)序贯测试方案,以尽早对软件作出接收或拒收判决;

c) 对可靠性要求(MTBF)较高的软件可选用基于MTBF的无失效考核测试方案;

d) 对于做过软件可靠性增长测试,有先验失效信息的软件,可选择贝叶斯测试方案以减少测试时间。

(2) 验证指标为成功率/失效概率的软件

a) 对于人力和测试时间受限的情况宜采用定数测试方案以提前确定测试工作量;

b) 对于质量很高或很低的软件,可选择软件可靠性(成功率)序贯测试方案,以尽早对软件作出接收或拒收判决;

c) 对可靠性要求(成功率)较高的软件可选用基于成功率的无失效考核测试方案;

d) 对于验证指标为可接收的失效概率和使用方风险/置信度的单边指标,对测试中允许的最大失效数有限制时可选择TRW法;

e) 对于验证指标为可接收的失效概率和使用方风险/置信度的单边指标时,对测试的最长时间有限制时,可选用单风险序贯测试方案;

f) 对于验证指标为可接收的失效概率和使用方风险/置信度的单边指标时,若做过软件可靠性增长测试,有先验失效信息时,可选择贝叶斯测试方案以减少测试时间。

2    统计方案参数的选取原则

(1) 测试时间

a) 验证指标为MTBF的统计测试方案

对于序贯测试方案,应按方案中可能的最长测试时间来设计,以保证时间控制在计划之内。测试应进行到总测试时间或失效数达到测试方案可以作出接收或拒收判决为止。

定时测试方案和无失效考核测试方案的测试时间应按照确定的统计方案中的验证时间进行。

b) 验证指标为成功率的统计测试方案

对于序贯测试方案,应按方案中可能的最大用例数执行所需的估计时间来设计,以保证时间控制在计划之内。测试应执行到最大用例数或失效数达到测试方案可以作出接收或拒收判决为止。

定数测试方案和无失效考核测试方案的测试用例数量应按照确定的统计方案中的用例数量来生成用例,相应的测试应按执行该测试用例数量所需的估计时间来设计。

(2) 决策风险

在风险方案中,一般来说,选择决策风险较小的测试方案,需要较长的总测试时间(用例数量),但接收不合格软件及拒收合格软件的概率也小了。在制定方案时,力求方案的实际决策风险值接近于指定的风险值,并使每一方案的两类决策风险尽可能接近。

(3) 鉴别比

鉴别比是检验上限与检验下限的比值。鉴别比越大,作出判决就越快。应慎重选择鉴别比,以防止因鉴别比过大而导致的检验上限相应过大,使指标要求难以实现。

3    定时可靠性验证测试方案

制定定时可靠性验证测试方案的程序通常为:

a) 根据软件产品的可靠性要求及可用的测试资源,由用户和开发方共同协商确定θ1、d、α、β值,一般选α、β值为10%、20%,特殊情况下可取高风险率30%。

b) 根据θ1、d、α、β值查表5(原定的α、β叫名义值,实际计算中的α、β取值叫实际值αβ’),得相应的测试时间(θ1的倍数)、接收数Ac及拒收数Re = Ac +1值。统计在方案中给定的测试时间内收集的失效数据个数,进行接收/拒收判断:

l 当实际失效个数小于等于接收数Ac时,接收软件;

l 当实际失效个数大于等于拒收数Re时拒收软件。

c) 参数估计。

若用户需要根据测试数据估计软件的MTTF,必须规定置信区间的置信度γ,GJB899A建议γ=1-2β。测试方根据测试数据向用户提供MTTF的观测值(点估计值)及相应于给定γ的置信区间(θL,θU),这里分为两种情况:

l  判决结果为接收时的MTTF的估计

设T是定时截尾测试规定测试时间,r是到测试结束时出现的失效总数,则MTTF的观测值为:

                                                               (2)

表5验证测试统计方案对应表

当r=0时,根据IEC建议

                                      (3)

给定置信度γ,则的单侧置信下限

                               (4)

其中表示:置信水平为γ,自由度为2r+2的分布值。

的双侧置信区间为:

                                                               

(5)

(6)

l  判决结果为拒收时的MTTF的估计

设T是最后一个失效发生时软件的总测试时间,r是失效总数,则MTTF的观测值为:

                                                                         (7)

给定置信度γ则相应的置信区间为:

                                                       

(8)

(9)

4    序贯可靠性验证测试方案

制定序贯可靠性验证测试方案的步骤通常为:

a) 用户及软件开发商协商确定θ0θ1、α、β。d可取1.5、2.0、3.0之一,α、β可取10%或20%,(短时高风险方案取30%)。

b) 画出序贯测试判决图(如图 8),图中标出合格判定线及不合格判定线,接收区、继续测试区。

图表中的标准化判决时间t以的倍数表示。使用时应将图表中的标准化判决时间乘以,以得到实际的接收判决时间及拒收判决时间

图 8 序贯测试判决示意图

图 8中,合格判定线                                                 (10)

不合格判定线                                                       (11)

       其中:

                             (12)

根据每次失效的发生时间在序贯测试判决图上描点,进行接收/拒收判决:

l  若该点落在“接收区”即接收软件;

l  若该点落在“拒收区”即拒收软件;

l  若该点落在“继续测试区”即继续测试,直至失效点落在接收区或拒收区即停止测试。

c) 参数估计。根据测试中收集的每个失效发生的时间,在给定的置信度γ下可估计MTTF的上下限。

4.1.3  软件可靠性验证测试的注意事项

软件可靠性验证测试的注意事项如下:

a) 验证测试中,使用的测试数据必须基于操作剖面(如Musa操作剖面)随机抽取,否则验证的结果以及评估得出的结果是不正确的;

b) 验证测试过程中,发现失效后不对软件进行修改,从而保证失效时间服从指数分布;

c) 在进行可靠性验证测试前必须由测试方、开发方以及使用方(可能的话)明确失效的判据,并明确哪些失效需要统计在内。对于不同的可靠性要求其失效判据可能不同,比如,如果只对影响任务的失效提出了可靠性定量要求,则失效应定义为影响软件系统任务完成的软件行为;

d) 在接受/拒收判定及可靠性参数评估中,应计入每一次失效,无论其是否由相同的原因导致;如一次失效是由N个独立的缺陷引起,则应计为N次失效;

e) 在验证测试中,就算产品被接收了,也应该排除可靠性测试中发现的软件缺陷,在条件允许的情况下,可以增加无失效方案进一步验证。

4.2     实验软件

本部分实验将使用TCS软件、ATM机软件。

本部分实验需要根据4.1.2中的方法制定统计方案,并使用TCS生成的测试用例对ATM机软件进行可靠性测试,根据测试过程中收集到的失效数据数据进行接收或拒收判别。

4.3     实验内容

选取验证统计测试方案进行可靠性验证测试。

1)        按照图 7软件可靠性验证测试的主要流程开展软件可靠性验证测试

2)        设计统计实验方案

3)        使用TCS生成1000个测试用例

4)        按照测试用例逐一测试ATM机软件

5)        记录测试用例的执行时间和失效发生的时间

6)        判定是否接收或拒收,同时进行区间和点估计

7)        完成软件可靠性验证测试计划、说明、报告的编写

5         软件可靠性增长测试实验部分(选做)

5.1     概述及实验相关介绍

5.1.1  软件可靠性增长测试流程

软件可靠性增长测试通常采用如图9的流程。

1) 测试策划阶段

该阶段的主要工作是定义失效和可靠性目标。在测试前应该确定失效判据。专用的失效判据通常由测试人员、开发人员和用户共同商定。

首先需要定义什么是失效,如果软件可靠性要求是针对不同严重性等级的失效提出的,则应按照严重性等级将软件失效进行分类,以便基于不同严重性等级的失效数据评估相应的软件可靠性。

定义软件可靠性增长的目标主要用于是否停止增长测试的参照。通常采用系统分配给软件的可靠性指标作为可靠性增长的目标值。

该阶段的主要输出是软件可靠性增长测试计划,计划中包括对失效和可靠性目标的定义,以及时间进度、资源等安排。通常软件可靠性增长测试计划完成后需要组织评审。

图 9软件可靠性增长测试的主要流程

2) 测试设计与实现阶段

该阶段的主要工作包括构造操作剖面与建立测试环境,以及在此基础上生成软件可靠性测试用例。

(1) 构造操作剖面

如上一节实验内容

(2) 搭建软件可靠性测试环境

通常测试环境应与真实运行环境尽可能相同,在真实测试环境受限的情况下也可以在仿真测试环境下进行测试。

本实验的测试环境已经由实验教师搭建完毕。

(3) 生成测试用例

根据构建的操作剖面,可以通过随机抽样生成测试数据。

该阶段的主要输出是软件可靠性增长测试说明,包含测试用例集。对于较复杂的软件,随机抽样产生的测试数据通常不含测试预期结果,此时可以在抽样生成的测试数据的基础上,人工添加测试预期结果,从而生成完整的测试用例。由于操作剖面是软件可靠性测试的关键环节之一,通常在操作剖面构建完成之后要进行严格的评审,重点审核操作剖面的合理性以及测试环境的可行性。

3) 软件可靠性增长测试执行阶段

测试执行阶段的主要工作是根据测试用例执行测试,同时收集失效数据用于可靠性评估。

(1) 测试执行与收集失效数据

收集软件失效数据是采用模型进行软件可靠性评估的基础,因此失效数据收集的完整、准确、及时与否对可靠性评估结果的可信程度至关重要。

针对不同的可靠性要求,应该制定不同的数据收集程序和数据收集要求。通常认为,对于软件可靠性模型来说,执行时间比日历时间更好,如果不能得到执行时间,也可以使用一些近似的表示,诸如时钟时间、加权时钟时间或事务处理数等表示。

常用的模型使用两类失效数据:失效计数数据和失效时间数据。

失效计数数据是指单位时间内发生的失效数,如每日、每周发生的失效次数;失效时间数据是指每次失效发生的累计执行时间或间隔执行时间,可以直接或间接地收集,最好收集程序的实际执行时间,而不是时钟时间。因为时钟时间往往会给出乐观的软件可靠性估计。可以用单位时钟时间的平均利用率因子来调整时钟时间得到实际执行时间的估计值。

(2) 测试结果分析与处理

对测试结果的分析与处理主要包含两部分的工作,一是针对发现的软件失效,分析失效带来的影响,从而排除缺陷,并进行回归测试;另一方面是分析失效数据的趋势,选择出软件可靠性模型进行评估分析。

软件可靠性增长测试执行阶段的主要输出是可靠性测试执行记录、问题报告以及失效数据分析与处理的记录。

4) 软件可靠性测试总结阶段

总结阶段主要对测试过程和数据进行总结,主要输出是软件可靠性增长测试报告。通常需要对测试报告进行正式评审。

5.1.2  软件可靠性增长测试的注意事项

软件可靠性增长测试注意事项为:

a) 对于有可靠性定量要求的软件才进行软件可靠性增长测试;

b) 软件可靠性增长测试使用的测试数据必须基于操作剖面生成;

c) 对增长测试中发现的问题必须加以纠正;

d) 可能的话,记录每一次软件的失效时间;

e) 在软件可靠性评估中,由相同的软件缺陷导致的软件失效只计第一次;

f) 回归测试时收集的信息,不作为软件可靠性评估的依据;

g) 软件可靠性估计必须基于软件可靠性数据,即在基于操作剖面的软件测试中收集到的失效数据,或实际使用中收集到的失效数据。失效数据的收集必须完整、及时、准确;

h) 在进行可靠性测试前必须由测试方、开发方以及使用方(可能的话)明确失效的判据,并明确哪些失效需要统计在内。对于不同的可靠性要求其失效定义可能不同,例如,如果只对影响任务的失效提出了可靠性定量要求,则失效应定义为影响软件系统任务完成的软件行为;

i) 一个软件系统可以有多个操作剖面,主要取决于是否针对不同的操作模式有独立的可靠性要求。

5.2     实验软件

本部分实验将使用TCS软件、ATM机软件和SRET软件。

TCS软件将用于测试数据的自动生成;ATM机软件作为被测软件支持测试工作的进行;SRET软件根据收集到的失效数据评估当前的软件可靠性水平,当达到可靠性增长目标时停止测试。并进行可靠性预计。

5.3     实验内容

1)      按照图 9软件可靠性增长测试的主要流程开展软件可靠性增长测试。

2)      使用TCS自动生成测试用例1000个。

3)      根据生成的测试用例执行软件测试,在可靠性测试记录表中记录测试的时间和缺陷发现的时间,当失效数据超过21个之后,每发现一个缺陷就使用SRET进行评估,确定当前的可靠性水平是否满足要求并预计可靠性目标满足要求的时间,当满足要求之后停止增长测试。

4)      发现软件缺陷后,向教师汇报失效,教师确认后会移除缺陷,实现软件可靠性增长。

5)      测试完成后提交软件可靠性增长测试计划、说明、报告。

6         软件可靠性评估实验

6.1     概述及实验相关介绍

6.1.1  软件可靠性评估流程

软件可靠性评估是根据软件可靠性增长测试中收集的失效数据,评估当前软件的可靠性水平,预计未来可能达到的可靠性水平,为软件开发管理提供决策依据。实验中进行软件可靠性评估的流程如下:

1) 收集软件失效数据

进行软件可靠性评估首先需要收集足够的失效数据。将软件可靠性增长测试中获取的失效数据用于可靠性评估的输入。

2) 对失效模式进行趋势分析

对失效模式进行趋势分析的目的是指导选取适当的可靠性模型或模型组,避免软件可靠性模型的盲目使用。可用图形法和拉普拉斯法进行失效数据的趋势分析。

趋势分析结果分为以下类型:

(1)可靠性增长:选择可靠性增长模型;

(2)可靠性下降:一般这种情况下没必要进行可靠性估计;

(3)可靠性先降后升:使用S型模型;

(4)可靠性稳定趋势:用失效率为常值的模型(失效时间服从指数分布)。

3) 选择适用的软件可靠性模型

根据获取到的失效数据的特点、对测试过程和模型假设的理解以及参考模型的分类特征,选取适合的可靠性模型,对失效数据进行拟合。

4) 可靠性评估/预计分析

在选定好模型后,基于拟合的模型做出判定或进行可靠性的预计,包括:

(1)估计当前的软件可靠性,如MTTF、当前的失效率等;

(2)预计达到的可靠性水平:根据现有的资源(如测试时间)预计可能达到的可靠性水平;

(3)预计还需要增加的测试工作:预计何时能够达到可靠性要求,或者还需要发现并排除多少问题能达到可靠性要求值等。

6.1.2  软件可靠性评估注意事项

1) 软件可靠性评估必须基于软件可靠性测试数据,失效数据的收集必须完整、及时、准确;

2) 在进行可靠性测试前必须由测试方、开发方以及使用方(可能的话)明确失效的判据,并明确哪些失效需要统计在内;

3) 软件系统可以有多个操作剖面,主要取决于是否针对不同的操作模式有独立的可靠性要求;

4) 在选用模型前应进行失效数据的趋势分析,以确定使用的模型的类型;

5) 由于没有普适的软件可靠性增长模型,一般必须使用多个模型进行评估,通过对预计质量的分析判断模型的适用性;

6) 要不断地对模型的适用性进行检查,即每进行一次评估(如增加或修改失效数据后,就要对软件可靠性预计的质量进行分析,这样才能保证评估结果的有效性;

7) 应采用软件可靠性评估工具进行评估工作。

6.2     实验软件

本部分实验将使用SRET软件。SRET软件用于进行可靠性增长测试数据的录入、可靠性趋势的分析、可靠性模型的选择和可靠性参数的估计。通过在SRET软件中按照操作步骤进行操作和分析,完成软件可靠性的评估。

6.3     实验内容

1)      将软件增长测试中收集到的失效数据进行整理,输入SRET软件中。

2)      根据输入失效数据,使用SRET软件对被测软件的可靠性趋势进行分析。

3)      选择可用的可靠性模型,利用SRET软件计算各个模型的U图,Y图和PLR图,依据各个图的质量对可靠性模型的质量进行判断,确定最优的可靠性模型。

4)      根据选定的可靠性模型进行可靠性评估和预计,输入时间计算可靠度、失效强度、失效均值等,根据可靠度可以计算相应所需的时间。

5)      完成可靠性评估报告的编写。


附件一:软件可靠性测试剖面报告模版

附件二:软件可靠性增长测试计划模版

附件三:软件可靠性增长测试说明模版

附件四:软件可靠性增长测试报告模版(含测试记录表格)

附件五:软件可靠性验证测试计划模版

附件六:软件可靠性验证测试说明模版

附件七:软件可靠性验证测试报告模版(含测试记录表格)

更多相关推荐:
可靠性测试报告

CZT温州意华通讯接插件有限公司WENZHOUYIHUACOMMUNICATEDCONNECTORCO.,LTD产品测试报告TESTREPORTCZT温州意华通讯接插件有限公司WENZHOUYIHUACOMMU…

软件评测师的软件可靠性测试认知

软件测评师rktestindexhtml软件评测师的软件可靠性测试认知一对软件可靠性测试的认识1有关术语1软件可靠性在规定条件下在规定时间内软件不引起系统失效的概率该概率是系统输入和系统使用的函数也是软件中存在...

可靠性软件评估报告

可靠性软件评估报告目前关于可靠性分析方面的软件产品在市场上出现的越来越多其中比较著名的有以下3种产品英国的ISOGRAPH广五所的CARMES和美国Relex总体上来说这些可靠性软件都是基于相同的标准因此它们的...

对软件可靠性测试的认识

一对软件可靠性测试的认识1有关术语1软件可靠性在规定条件下在规定时间内软件不引起系统失效的概率该概率是系统输入和系统使用的函数也是软件中存在故障的函数系统输入将确定是否会遇到存在的故障2软件可靠性估计应用统计技...

软件测试实验报告

软件测试实验报告万继王20xx1081147任课教师贾春花班级20xx级计科1班实验目的计算机在生活中的普遍计算机已经成为我们生活中不可缺少的部分计算机已经被广泛的应用到各个领域网络技术的飞速发展互联网已经成为...

可靠性测试 软件测试 性能测试

可靠性reliabllltv是产品在规定的条件F和规定的时间内完成规定功能的能力它的概率度量称为可靠度软件可靠性是软件系统的固有特性之一它表明了一个软件系统按照用户的要求和设计目标执行其功能的可靠程度软件呵靠性...

计算机软件可靠性测试概述

计算机软件测试中关于可靠性测试的一些看法一软件可靠性11软件可靠性定义软件可靠性是软件质量因素中最基本最重要的因素19xx年IEEE计算机学会对软件可靠性这一术语作了专门的定义在规定的条件下在规定的时间内软件不...

软件可靠性测试的三个阶梯

一对软件可靠性测试的认识1有关术语1软件可靠性在规定条件下在规定时间内软件不引起系统失效的概率该概率是系统输入和系统使用的函数也是软件中存在故障的函数系统输入将确定是否会遇到存在的故障2软件可靠性估计应用统计技...

开题报告:常用软件测试技术与工具

河南财经政法大学成功学院毕业论文设计开题报告123456789

可靠性测试课程报告

机械工程的可靠性测试摘要机械工程设计是一个较为复杂且系统的领域由于机械产品较多并且大部分产品都需要较高的可靠性为此可靠性设计成为机械工程及其相关产品设计中较为重要的环节之一目前比较常用的机械工程可靠性设计方法有...

《嵌入式软件可靠性测试方法》-编制说明

国家标准嵌入式软件可靠性测试方法征求意见稿编制说明一制定标准的背景大多数软件测试方法都可以直接或间接地用于嵌入式软件的测试但嵌入式软件可靠性测试与通用软件可靠性测试有着较大差别当前后PC时代的来临及3C融合加速...

可靠性测试报告

Pageof2文件编号QR824011Pageof2文件编号QR824011

软件可靠性测试报告(33篇)