软件可靠性测试与评估实验指导书.docx
《软件可靠性测试与评估实验指导书.docx》由会员分享,可在线阅读,更多相关《软件可靠性测试与评估实验指导书.docx(29页珍藏版)》请在冰豆网上搜索。
软件可靠性测试与评估实验指导书
软件可靠性测试与评估
实验指导书
北航可靠性与系统工程学院
1绪论
1.1软件可靠性测试与评估概论
软件可靠性测试是指为了保证和验证软件的可靠性而对软件进行的测试。
它是随机测试的一种,其主要特征是按照用户实际使用软件的方式来测试软件。
软件可靠性测试是评估软件可靠性水平及验证软件产品是否达到可靠性要求的一种有效途径。
与其它类型的软件测试相比,软件可靠性测试可以使用与其它测试方法相同的测试环境和测试结果分析方法,但是必须使用专有的软件测试数据生成方法和软件可靠性评估技术,在测试数据中体现出软件需求以及用户对软件的使用情况,在评估中体现出软件可靠性测试中的定量化评估度量。
通过软件可靠性测试可以达到以下目的:
a)实现软件可靠性的有效增长:
通过软件可靠性测试暴露出软件中隐藏的缺陷,并进行排错和纠正后,软件可靠性会得到增长。
软件可靠性测试暴露出来的缺陷是那些软件中发生概率高的缺陷,而且是对软件可靠性影响最大的缺陷,这些缺陷得到纠正后,软件可靠性在软件可靠性测试的早期就会得到较大的增长。
b)用于验证软件可靠性是否满足一定的要求:
可以根据用户的可靠性要求确定可靠性验证方案,进行可靠性验证测试,从而验证软件可靠性的定量要求是否得到满足。
c)用于预计软件的可靠性:
通过对软件可靠性增长测试中观测到的失效数据进行分析,可以评估当前软件可靠性的水平,预测未来可能达到的水平,从而为软件开发管理提供决策依据。
软件可靠性测试与一般软件测试在测试目的、测试效率、测试数据生成方法、测试数据收集、测试数据分析以及测试停止准则上都存在差异,软件可靠性测试与一般软件测试的比较如表1所示。
表1软件可靠性增长测试与一般测试比较
比较项目
软件可靠性增长测试
一般软件测试
测试目的
评估软件可靠性水平、有效实现软件可靠性增长
发现软件的故障
测试效率
较快达到可靠性要求
达到可靠性要求较慢
测试数据生成方法
基于使用的测试,根据软件的使用状况构造操作剖面然后生成测试用例
基于需求/结构的测试,根据软件的需求或结构生成测试用例
数据收集
需要收集测试输出结果和失效时间等数据
只需收集测试输出结果
数据分析
通过失效数据进行可靠性分析
根据用例执行情况进行需求/结构覆盖分析
测试停止准则
满足可靠性要求
功能/性能测试:
需求覆盖100%
结构测试:
语句覆盖100%、
分支覆盖100%或满足其它结构覆盖要求
软件可靠性测试的特点如图1所示。
图1软件可靠性测试的特点
国家标准GB11457中,软件可靠性评估(softwarereliabilityassessment)或软件可靠性评价(softwarereliabilityevaluation)是指“确定现有系统或系统部件可靠性所达到的水平的过程”。
国际标准IEEEStd.1633中,软件可靠性评估(softwarereliabilityevaluation)被定义为“统计学技术在系统测试和运行期间收集的可观测失效数据上的应用,用于评价软件的可靠性”。
软件的失效数据可以在下述两种情况下获得,一是在测试阶段后期,通过软件可靠性测试(即按照软件的实际使用方式测试软件的一种方法),收集测试过程中的失效数据,对软件的可靠性水平进行估计,并能够对未来可能达到的可靠性水平进行预计;二是在软件投入使用后,通过收集实际使用过程中软件的失效数据,对软件可靠性进行评估,并对未来软件可能达到的可靠性水平进行预计。
此时的软件可靠性评估结果被认为是真正意义上“软件完成规定功能的能力”(即软件可靠性的定义)的反映,即:
此时的可靠性评估结果,不仅可以给出实际的可靠性水平,也可以为下一代软件或同类型软件的可靠性定量要求的确定提供参考。
软件可靠性评估是软件可靠性工程中的重要活动内容之一,可用于定量地评价软件工程技术,能够给出“软件究竟有多可靠”的定量结果。
1.2软件可靠性测试分类
软件可靠性测试分为软件可靠性增长测试、软件可靠性验证测试,如果在没有可靠性指标要求而需要评估当前的可靠性水平,还有软件可靠性摸底测试。
●软件可靠性增长测试
软件可靠性增长测试一般在软件系统测试阶段的末期进行。
通常在完成编码、单元测试、集成测试以及常规系统测试后,如果还有可靠性要求,再进行软件可靠性增长测试。
软件可靠性增长测试是一项费时、费力的工作,一般仅适用于有可靠性定量要求、且可能会影响系统安全和任务完成的关键软件。
通常采取的是测试-可靠性分析-修改-再测试-再分析-再修改的循环过程。
软件可靠性增长测试具有以下特点,如表2所示
表2软件可靠性增长测试的特点
软件可靠性增长测试的特点
测试目的
通过测试-可靠性分析-修改-再测试-再分析-再修改的循环过程,使软件达到可靠性要求
测试人员
通常由软件研制方而非使用方进行测试
测试阶段
通常在软件系统测试阶段
测试场所
一般在实验室中进行
测试对象
软件产品的中间形式
测试方法
基于操作剖面的随机测试方法
测试特征
测试过程中软件出现失效后修改软件、排除引起失效的缺陷,从而实现软件可靠性的增长
●软件可靠性验证测试
软件可靠性验证测试是为了验证在给定的置信度下,软件当前的可靠性水平是否满足用户的要求而进行的测试。
即用户在接收软件时,确定它是否满足软件研制任务书中规定的可靠性指标要求。
软件可靠性验证测试具有如表3所示的特点。
表3软件可靠性验证测试的特点
软件可靠性验证测试的特点
测试目的
定量估计软件产品的可靠性,并作出接收/拒收回答
测试人员
通常由使用方参加进行测试
测试阶段
软件确认(验收)阶段
测试场所
既可在实验室测试又可现场测试
测试对象
软件产品的最终形式,而不是中间形式
测试方法
基于软件操作剖面的随机测试方法
测试特征
不进行软件缺陷剔除
2实验设置的背景、意义和内容安排
2.1实验设置的背景、意义
在高新技术武器装备中,计算机软件在装备研制中的地位日趋重要。
以美国歼击机上的航空电子系统为例,美国的歼击机每更新一代,其由软件实现的功能翻一番。
然而,软件发展至今不过短短几十年的时间,无论从开发过程还是质量控制,与硬件相比都显得较为薄弱。
对软件,人们通常关心两个方面:
一个是软件的功能性能需求,我们需要功能强大、性能优越的软件在生产、生活中扮演更加重要的角色;另一个是对软件质量的需求,需要高可靠性的软件在生产、生活中持续的发挥作用。
对于第一个需求,不断涌现的编程工具和语言,能够使编程人员开发出功能和规模非常强大的软件。
对于第二个需求,定量化的可靠性管理将是一个重要手段,如在美国的第五代战机研制中已经明确的提出了软件可靠性指标,并进行定量化的验证。
常规的软件测试(如单元测试、集成测试、系统测试等)旨在发现软件缺陷,却不能进行软件可靠性的定量评估。
因为软件可靠性与软件的使用情况密切相关,在测试中需要体现出用户对软件的使用情况,成为了软件可靠性测试中一个非常重要的环节。
软件可靠性测试有效地发现程序中影响软件可靠性的缺陷,从而实现可靠性增长;通过对软件可靠性测试中观测到的失效情况进行分析,可以验证软件可靠性的定量要求是否得到满足;通过对软件可靠性测试中观测到的失效数据进行分析,可以评估当前软件可靠性的水平,预测未来可能达到的水平,从而为软件的开发管理提供决策依据。
软件可靠性测试与评估是软件可靠性工程的核心内容,是软件可靠性工程技术区别与其它软件工程技术的特色所在。
通过软件可靠性测试与评估实验教学,能够使学生建立定量的软件可靠性实验技术的概念,掌握软件可靠性工程中最具代表性的软件可靠性测试剖面技术,按照严格的软件可靠性增长测试和验证测试的要求,实现完整的测试评估实验过程,以软件可靠性测试计划、测试说明、测试报告的方式完成实验报告。
本实验采用的软件可靠性测试试验系统,软件可靠性测试数据自动生成工具,软件可靠性评估工具为北航所独有。
本实验的开设,对国内高校研究生软件可靠性实验来说具有开创性。
不仅可以掌握软件可靠性测试与评估的基本原理,而且通过实验使学生从软件被测对象分析、软件可靠性测试剖面构造、软件可靠性测试执行、软件可靠性测试评估等环节加深对软件可靠性测试及评估理论知识的理解,并熟悉相关软件的使用,对于他们将来走上工作岗位无论是理论研究还是工程实践都具有重要意义。
2.2本实验的内容安排
本实验包括四部分内容:
1)软件可靠性测试剖面构造实验
2)软件可靠性评估实验
3)软件可靠性验证测试实验
4)软件可靠性增长测试实验(选做)
其中软件可靠性评估实验会贯穿在验证测试实验和增长测试实验之中进行。
2.3实验课要求
1)以两人为小组完成实验内容,每组使用一台固定的实验用计算机,以小组成绩作为学生个人成绩。
2)每个小组需要在实验用计算机的D盘,以两人的姓名命名一个文件夹,并把实验中产生的数据、文件、文档存放在该文件夹中。
3)实验用计算机禁止插拔自带U盘,非教师允许,不得向实验计算机拷入和拷出文件。
4)各小组可以在实验过程中自带笔记本电脑编写测试文档,测试文档可以在实验室之外完成。
5)实验中使用的《软件可靠性测试剖面报告》、《软件可靠性验证测试计划》、《软件可靠性验证测试说明》、《软件可靠性验证测试报告》、《软件可靠性增长测试计划》、《软件可靠性增长测试说明》、《软件可靠性增长测试报告》及测试记录表格模版可以在实验课公共邮箱中下载:
experiment2014@,密码为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.3ATM机软件
ATM机软件主要用于用户进行取款,存款,转账,查询余额,退卡等操作。
客户通过插入银行卡,输入正确的密码,便可根据显示器页面上的提示进行以上操作。
操作界面如图2。
关于ATM机软件的详细说明详见ATM机的软件需求规格说明。
图2ATM软件界面
3软件可靠性测试剖面构造实验部分
3.1概述及实验相关介绍
软件可靠性测试的主要思想就是按照用户对软件实际使用的统计规律进行随机测试,目前通常采用操作剖面的形式对软件的使用情况进行建模,然后在建模的基础上生成测试数据进行测试。
常见的操作剖面通常有Musa的操作剖面、Markov、使用剖面等方法。
本实验将采用Musa操作剖面构造方法进行剖面构造。
3.1.1Musa操作剖面
对于软件可靠性测试而言,其基本思路都是按照用户的实际使用软件的方式来进行测试,操作剖面是目前常用的一种对用户实际使用软件情况进行建模的工具。
其主要目的之一就是生成软件可靠性测试数据,用于支持测试的执行。
对于操作剖面,Musa的定义是指操作的集合及其发生概率。
该定义中,操作剖面不严格强调输入之间的相互约束和时序关系,重点关心操作的分布。
这种定义的特点是简单易行,由于相对忽略了输入之间的约束和时序,在工程中较容易推行。
在Musa的操作剖面中,操作是一个主要的系统逻辑任务,持续时间短,结束时将控制权交还给系统,并且它的处理与其它操作显著不同。
按照Musa的定义,操作应该是一个逻辑概念,它与软件的功能需求和特征相关。
根据Musa的操作剖面,对操作可以做如下的解释:
“持续时间短”是指在通常负载条件下每个小时可以有多个操作发生;
“将控制权交还给系统”说明当一个操作完成后,系统应该结束对该操作的处理,进而转入等待下一个操作,或者立即执行下一个操作;
“处理与其它操作显著不同”是从系统执行操作的角度来说的,不同的操作,系统应该有着显著不同的处理方式。
剖面是一组独立的元素及其发生概率。
例如,如果某一时刻操作A的发生概率是60%,B的发生概率是30%,C发生的概率是10%,则此时的剖面可以表示为[A,0.6;B,0.3;C,0.1]。
3.1.2Musa操作剖面的构造方法
构造操作剖面的主要目的是定量刻画用户对软件的使用情况,即用户使用软件的统计规律。
通常操作剖面可以采用两种不同的构造方法。
1)Musa操作剖面构造方法1
Musa第一种构造操作剖面方法(简称Musa-1)的流程通常包括以下5个步骤,见图3,其中
(1)~(4)步为中间步骤剖面,是为准确得到操作剖面而逐步细化的过程。
图3Musa-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。
图4Musa-2流程
(1)确定操作模式
操作模式的概念与Musa第一种方法中的系统模式概念相同,是系统使用的独特模式,是需要单独测试的环境条件的集合。
(2)确定操作的发起者
操作的发起者包括系统的用户、外界系统和系统自身的控制程序。
为了确定操作的发起者,首先应该基于系统相关的商业用例和系统使用信息来确定系统的用户类型,用户类型是倾向于以同样的方式使用系统的用户的集合。
这里的用户指的是任何能够发起操作的人、系统或组织。
(3)选择操作剖面表示法
操作剖面可以用表格表示法或图形表示法进行表示。
表格表示法的示例见表3,图形表示法的示例见图5。
如果大部分操作可以用很少的属性表示,就使用表格表示法,表格表示法中通常以其功能组合来命名操作;如果大部分操作由许多属性来描述,逐一地考虑属性会比较容易,此时就应该选择图形表示法。
图形表示法将每个操作表示为图中的一条路径,图5中的节点表示操作的属性,分支表示不同的属性值。
表3表格法表示的操作剖面
操作
概率
GPS有效、目标方向水平、开启轴线调整
0.4725
GPS有效、目标方向水平、关闭轴线调整
0.2025
GPS有效、目标方向垂直、开启轴线调整
0.0525
GPS有效、目标方向垂直、关闭轴线调整
0.0225
GPS无效、目标方向水平、开启轴线调整
0.14875
GPS无效、目标方向水平、关闭轴线调整
0.06375
GPS无效、目标方向垂直、开启轴线调整
0.02625
GPS无效、目标方向垂直、关闭轴线调整
0.01125
图5图形法表示的操作剖面
(4)为每个操作发起者创建操作列表
基于操作的发起人,能够较为方便地创建操作列表。
创建操作列表时,应该将每个显著不同的处理都定义为不同的操作,除非它有着非常低的发生概率或执行非常不重要的功能。
除了主要参考系统的需求以外,还可以参考事件流图、用户手册、协议和以前的系统版本等信息。
(5)确定单个操作或属性值的出现率
出现率是操作或属性值在单位时间内的发生次数,最好使用实际的数据来决定出现率。
这种对使用的度量常常可以从系统的日志中获得,通常情况下,这些数据已经存在于相同或相类似的系统中。
如果在没有这些直接的日志的情况下,可以通过更多的调研工作来收集信息,使用相关的一些数据来对出现率进行评估。
确定操作或属性值的发生概率。
操作或属性值的发生概率通过出现率计算得来,可以采用操作/属性值的发生次数除以所有操作/属性值发生的总数获得。
3.2实验软件
3.2.1TCS
TCS软件是面向实时嵌入式软件可靠性测试数据生成的应用软件,能够支持对实时嵌入式软件的图形化测试输入建模以及输入元素的信息描述,辅助测试人员对测试环境、软件的使用情况、软件输入情况进行分析。
在测试建模的基础上,本软件能够自动生成软件可靠性测试数据,并实现对测试数据的管理。
TCS具备以下的基本功能特性:
1)支持测试分析、测试建模和测试数据自动生成的全过程。
2)提供系统图的建模机制,能够以图形化描述的方式辅助用户进行被测系统交联环境的构建和系统分析。
3)为用户提供输入变量和使用类的提取以及图形建模的机制,使用户能够以图形绘制的方式构建使用类图。
4)为用户提供使用剖面的建模机制,能够以图形化视图的方式实现多个使用子剖面图,并建立起使用剖面中各个元素的使用关系。
5)为使用剖面中的每个操作构建操作描述图,支持步骤图和连续图描述。
6)支持图形化建模过程中的图形元素的拖放、删除、修改、重命名等操作,并能够保持建模中关系的一致性。
7)能够为图形建模提供检查机制,实现建模过程中错误的发现和定位,并给出准确的错误提示。
8)能够根据用户的描述建模信息,自动按照测试数据取值规则生成XML形式的测试数据。
9)能够以测试报表的形式给出整个测试输入建模过程中用户描述信息的报表。
10)能够提供信息检索服务,用于查找建模中的元素,并提供定位功能。
11)通过提供测试输入建模信息导入导出功能,从而实现多人开发对同一个被测对象进行描述。
3.2.2ATM机软件
在本部分实验中,学生需要熟悉ATM机软件的使用,并对其进行剖面建模。
ATM机软件的主要功能如图6所示。
图6ATM功能结构图
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统计测试方案特点及确定程序
测试方案
定时截尾方案
序贯方案
无失效运行方案
特点
a.测试时间可