摘 要: 嵌入式软件可靠性测试往往是基于运行剖面的,常用均匀分布或分段均匀分布的选取方式确定各个运行剖面输入变量的取值范围,这种选取方式使测试用例的生成和选择是随机的,不具备针对性,使用质量功能展开(QFD)方法能克服这种局限性。将需求优先级、测试成本、业务重要性等因素作为权重分配给嵌入式软件可靠性测试系统的运行剖面的输入变量,可提高工作效率,并且达到以质量为导向的测试目的。
关键词: 软件可靠性测试;质量功能展开;运行剖面
0 引言
相较于传统的软件应用程序,嵌入式软件系统具有实时性要求高、存储器资源有限、I/O通道少、使用相对昂贵的硬件、涉及的CPU类型多等特性,因此与一般测试应用软件不同,嵌入式软件测试具有独特性。嵌入式软件可靠性测试经常用的一种方法是基于运行剖面的可靠性测试。传统方法中,运行剖面中输入变量的取值区间通常是均匀分布或分段均匀分布,这种取值方式导致测试用例的选取方式是随机的,没有针对性。本文提出在确定输入变量权重时应用质量功能展开(QFD)方法以提高工作效率和质量。
1 相关背景知识
1.1 嵌入式软件测试的特点
在特定的硬件平台进行测试是嵌入式软件测试的一个显著特点。嵌入式软件开发环境与运行环境也有不一致的地方,所以测试时,即使在主机环境或描述目标环境中运行时没有发现软件问题,也不能根据此判定嵌入式软件是高可靠的。嵌入式软件的测试策略的开发,必须考虑到在主机环境分配给目标环境中的资源问题和策略。嵌入式软件开发测试时如果目标机系统硬件不能方便地获得,这就使得最后确认测试中提供目标硬件设备上有了弹性。成功进行宿主机/目标机测试的先决条件是软件的可移植性,采用宿主机/目标机测试策略可提高工作效率并且能实现以质量为导向[1]。
实时性是嵌入式软件测试中的另一个重要特点。主要体现了嵌入式软件的执行需要对时间条件做一定约束。
1.2 嵌入式软件的可靠性测试
一般使用两种方法来实现嵌入式软件的可靠性测试[2]。
(1)从整个系统剥离出嵌入式软件,然后进行数学仿真平台测试。仿真平台通过测量和测试的一个逻辑描述可以实现物理地连接到彼此的软件系统,接着通过生成测试用例,通过仿真产生输入,最后,被测目标系统通过被调用来运行,得到运行的输出结果。
(2)使所测试的整个系统建立一个封闭的环境来完成测试,也称为交叉试验方法。交叉试验的优点是精度高,操作相对简单。交叉试验的一般步骤如下:首先完整地编写在主机上的测试代码,通过编译并下载到目标计算机,然后通过测试代理进行测试目标代码。由于测试工具部署在主机上,所以在目标计算机上的测试信息需要由主机和目标机来测试,然后再将信息上传到主机并最终用主机分析工具来分析测试结果。通过这种交叉测试环境,有时会大大增加测试费用。
1.3 质量功能展开
质量功能展开(QFD)是把客户的原始需求转化为产品的设计需求、功能部件需求、工艺要求、生产要求的质量工具,对客户的原始需求进行多层次的演绎分析。使用QFD可以帮助指导产品的健壮设计和质量保证。它主要的思想是通过“将客户的需求质量转换成质量特性”,确定产品的设计质量,通过确定各功能部件的质量,进而确定每个过程的质量和过程要素,系统地展开它们之间的关系。在质量功能展开中起重要作用的是由需求质量和质量特性构成的二维表。
QFD的基本原理是用“质量屋”的形式,量化地分析客户需求与质量特性之间的关系影响程度,经数据分析处理后找出对满足客户需求影响最大的质量特性因子,指导人员抓住主要矛盾,开展稳定性优化设计,通过把最高的价值/费用比率的特性设置为最高的优先级,进而开发出满足客户需求的产品。
1.4 基于运行剖面的可靠性测试
John Musa在19世纪30年代初提出了基于运行剖面的方法,这种方法考察的对象就是运行剖面,因此称为基于运行剖面的可靠性测试。运行剖面是指对嵌入式系统使用条件的定义,即“嵌入式系统的输入值用其按时间的分布或按它们在可能输入范围内的出现概率的分布来定义”,为了达到互通的目的,连接软件用户以及软件开发设计人员之间重要的桥梁即是运行剖面[3]。
2 应用QFD定义运行剖面
2.1 通过质量功能部署确定影响因素的优先级
用QFD确定需求优先级主要可分为5个步骤[4]:
(1)对原始信息进行收集并变换成语言信息。通过原型、需求访谈等方式对对象系统和用户进行调查,收集原始信息。经过一定的规则逐一对原始信息探讨确认,并变换成只含有一个意思的具体表现的语言信息。
(2)对语言信息进行分类。通过对语言信息的整理,将用户需求分类成功能需求、质量需求和其他需求。然后分析总体的功能需求,逐次抽出下层子功能点。确定某一功能需要怎样的输入和输出数据,逐一抽出数据项或者数据字典。
(3)功能数据二维表的构造。整理细化的功能点及其相应的数据,把功能和数据分别作为二维表的X因素和Y因素,探讨两者的关联,构造功能数据二维表。
(4)从功能需求抽出质量需求和质量特性。以功能项目为基础,从功能满足性、使用容易性、可靠性和适应性4个方面抽出质量需求。可以从功能性、可靠性、使用性、效率性、维护性和移植性6个方面抽出质量特性。
(5)质量关联表的构造。把质量需求项作为二维表的X因素,质量特性项作为Y因素,探讨两者的关系,构造二维表。在构造二维表时可以采用AHP方法对功能数据和质量表进行分层来构造[5]。按其相互关系通过两两比较,通过行业专家对评价指标的判断来确定层次中各质量特性因素的相对重要性,进而给出每个因素的权值,在这个基础上计算出方案的综合排序,反复循环逐渐导出需求的层次结构,这些层次关系可以作为对各个需求的优先级的不同权重。
2.2 运行剖面构建过程
嵌入式软件的可靠性测试通常通过嵌入式用户如何使用系统和使用频率来确定运行剖面[6]。运行剖面描述了在实际运行时嵌入式软件的各项功能的使用概率。它的主要任务是在嵌入式软件可靠性试验中如何根据运行剖面在运行测试中的误差数据来确定最适合嵌入式软件可靠性的模型,进而使得得到的可靠性指标更加准确。在实际使用中运行剖面取决于嵌入式软件系统的机型、功能、需求和相应的输入,以及进行分析的嵌入式软件开发可靠性和附加的嵌入式系统开发人员对这些模型的概率、功能、任务的了解程度。测试、分析的结果是否可信取决于运行剖面构造的质量。
2.3 传统的运行剖面输入变量的取值
运行剖面可以看成是二维向量的集合,定义如下:
OpProfile={(Element1,W1),(Element2,W2),…,
(Elementn,Wn)}
其中,Element表示运行剖面中所包含的没有交集的元素,W代表元素的权重或概率。
运行剖面允许使用不同的权重选择运行,根据有关规则测试用例的选择还必须确定输入变量或者软件运行环境变量的值。确定各个运行剖面输入变量的取值范围的常用方法是采用均匀分布或分段均匀分布的选取方式,这种选取方式使测试用例的生成和选择是随机的,不具备针对性[7-8]。
2.4 应用QFD建立运行剖面
嵌入式软件可靠性测试的基本思想是将资源集中在使用最频繁和最可能导致严重失效的功能上,并使测试尽可能按照实际进行,因此运行剖面的选择应结合以下几个方面来综合考虑:
(1)需求优先级的高低
根据用户对嵌入式软件系统的需求的优先级确定哪些测试是重要的或者优先级别是比较高的,在测试时投入相对多的资源[9]。
(2)日常使用频率高、涉及用户面广的功能
用户使用频率高的功能点的测试更为重要,所以需要投入更多的精力并且可以让模拟环境更接近生产环境,这样可使测试效果更真实。
(3)能反映业务重要性指标的功能
根据业务重要程度和使用习惯对模块的优先级别进行排序,为了使用户培训及用户应用的过程更加高效,需要把业务最重要和使用最多的模块优先级别排在最高。
(4)测试成本因素、测试实施过程的简便性及可操作性
需要综合考虑测试成本的因素。测试用例选择越多意味着测试过程的复杂度越高、成本越大。从成本的角度分析,可以只选择其中的一种业务类型作为测试用例。还需要考虑测试过程的可操作性。某些功能很难搭建模拟环境进行测试,对那些可操作性较差的功能点将作为测试优先级较低的选项。
在每个层级的剖面都可以按照QFD的方法进行上述影响因素分析并赋值,赋值后的数字代表针对嵌入式软件执行时间的权重或概率。在运行剖面给定的输入变量的取值按照上述方法的权重代入公式,根据运行剖面生成测试用例的过程来实现对某一功能的测试。
3 结束语
本文提出基于QFD应用到运行剖面输入变量的权重确定,其通过QFD分析影响嵌入式软件可靠性测试的因素,建立需求优先级、业务重要性、测试成本等因素的二维表,通过二维表中的这些因素作为嵌入式软件可靠性测试系统的运行剖面的输入变量的权重或概率予以分配,来提高工作效率并且达到以质量为导向的测试目的。
参考文献
[1] 张广梅,李晓维.软件可靠性测试方法探析[J].计算机应用,2004,24(4):28-30.
[2] 韩柯.软件可靠性工程[M].北京:机械工业出版社,2003.
[3] LYU M R. Handbook software reliability engineering [M]. New York: McGraw-Hill, 1996.
[4] 李军.CMMI实施过程中确定需求优先级的几种方法[J].软件导刊,2010,9(11):22-23.
[5] 湛浩旻,印桂生,赵蕴龙.基于ISM与AHP组合的需求优先级排序方法[J].计算机科学,2013,40(3):225-227,243.
[6] 艾骏,陆民燕,阮镰.面向软件可靠性测试数据生成的剖面构造技术[J].计算机工程,2006,32(22):7-9,45.
[7] 徐忠兵,王大翊,蕫威.嵌入式软件可靠性测试用例自动生成技术的研究[J].科技信息,2009(5):57,48.
[8] 黄松,端木怡婷,惠战伟,等.基于运行剖面的测试用例选择改进算法[J].指挥信息系统与技术,2011,2(3):78-82.
[9] 熊伟.基于QFD的软件需求分析法[J].计算机与现代化,1998(5):1-4,27.