软件测试性需求分析方法研究
文章编号:1008-0570(2010)09-3-0097-02
软件时空
软件测试性需求分析方法研究
Research on Software Testability Requirement Analysis Method
(北京航空航天大学)
周震震王轶辰
ZHOU Zhen-zhen WANG Yi-chen
摘要:从诸多软件测试性影响因素中提取出软件测试性参数, 并以此构建软件测试性参数体系。该参数体系通过能反映软件内在表征的目标层建立起软件测试性参数与软件测试性的联系。为能以工程化的方法开展软件测试性设计, 提出了软件测试性需求与软件需求因子的概念, 进而提出了完整的软件测试性需求分析方法。该方法以软件特性和软件测试类型为筛选标准, 定位目标层, 借助软件测试性参数体系获取软件测试性需求因子, 进而得到软件测试性需求。关键词:软件测试性; 软件测试性参数; 软件测试性需求
文献标识码:A 中图分类号:TP311.52
Abstract:Software testability parameter architecture was constructed with parameters extracted from software testability influence fac -tors. It established relationships between these parameters and software testability through a named target layer which may reflect soft -ware inner attributes. In order to carry out the design of software testability in engineering ways, principles of software testability re -quirement and software testability requirement factor were proposed, as well as analysis method for software testability requirement.
This method first considered software characteristics and software test types as selection criteria to specify the target layer, and then tried to acquire software testability requirement factors with the help of software testability parameter architecture built before. Next, software testability requirement could be obtained by following the steps of software requirement engineering. Key words:software testability; software testability parameter; software testability requirement
随着软件不断向系统化、集成化发展, 软件测试在软件开发中的地位越来越重要。但软件测试本身是具有很大复杂性的工作, 从软件设计到开发的整个过程中,40%的资源是用于测试。但是, 现实情况表明, 即使在测试工作上投入很多的人力和物力, 软件的质量仍然得不到完全保证。目前, 可以采取两种技术来提高测试的效率, 一种方法是选择那些有非常强的故障揭示能力的测试来进行软件的测试; 另一种办法是在软件进行设计时, 就把测试性的要求考虑进去, 从而设计出测试性高的软件———这就是软件测试性设计的初衷。
然而, 在进行软件测试性设计之前, 有一个关键问题需要解决, 即:如何确定这些“可测试性的要求”。为此, 我们引入软件测试性需求的概念, 希望为软件测试性设计提供获取设计依据的方法。
力。测试性高的软件不仅可以大幅节约测试成本, 同时可以保证软件质量。
既然作为软件的固有属性, 软件测试性可以用科学的方法进行度量。实际上, 自20世纪90年代初就有很多学者为软件测试性度量付出了努力。与定义一样, 软件测试性度量也存在多种方法。其中主要有四大类:基于某种流图(如数据流图) 的度量; 基于信息论的分析方法;PIE 技术; 基于面向对象思想的分析方法。
软件测试性设计是提高软件这一固有属性的主要方法。
技
术创新
1软件测试性
什么是软件测试性? 软件测试性的定义有多种, 最常见的软件测试性定义衍生自硬件测试, 它包括两个方面:用于衡量程序测试执行时的开销; 作为质量因素之一, 是程序的固有属性。而Baudry 认为:软件测试性不仅是软件设计的一种内在属性, 同时还与测试策略相关。据此, 他提出了影响软件测试性的三个方面:整体测试开销成本、可控制性、可观察性。其中, 整体测试开销是指为达到选定的测试标准而花费的所有开销; 可观察性是指观测软件单元操作、输入变量和输出结果的难易程度; 可控制性是指软件单元控制输入输出操作和行为的能力。简单的说, 软件测试性是指软件易于测试和暴露缺陷的能周震震:硕士
Beizer 最早将软件测试性设计的重要性提升到与软件测试同样的高度。之后, 有关软件测试性设计的问题持续受到学者的关注。现在, 软件测试性设计方法大致包括:分解规格说明的方法--减少发生在模块之间的潜在数据状态错误消失(信息丢失); 最小化变量重用--减少隐式信息丢失; 插入断言或软件探针--增加输出参数等。
2软件测试性需求
软件测试性设计的研究刚刚起步, 研究者大多简单的针对软件的某一方面进行测试性设计, 如降低软件模块的输入输出比等。然而, 软件作为一个复杂的综合体, 其测试性不会仅通过这样的方法就能得到本质的提高。因此, 我们借鉴软件工程的思想, 从系统工程的角度出发, 进行软件测试性设计方法的研究工作, 以期提出一种有效的具有可操作性设计方法, 从而达到提高软件测试性的目的。我们知道, 软件设计是以完整详细的软件需求为依据的, 而软件测试性设计作为软件设计的一种, 其首要问题也是确定设计依据。为此, 我们单独提出了软件测试性需求的概念。但是, 在此之前, 我们需要先来介绍一下软件测试性参数及软件测试性参数体系。
邮局订阅号:82-946360元/年-97-
PLC 技术应用200例》
软件时空
2.1软件测试性参数体系
软件测试性参数是各种软件测试性影响因素的统称。影响软件测试性的因素有很多, 诸如软件的单元耦合度, 圈复杂度等。在软件或软件单元设计实现时, 如果能够有意识的将这么因素(参数) 考虑其中, 并采取相应的方法(测试性设计) 使之满足特定的要求(参数描述), 那么就可以保证软件产品具有良好的测试性。需要指出的是, 所有这些参数可以通过目标层与软件的测试性建立联系。而目标层是指建立在软件特性基础上的软件测试性的内在表现:包括可观测性, 可控制性, 适用性等。换句话说, 软件测试性高低取决于目标层的高低。软件测试性参数与目标层以及它们之间的对应关系共同构成了软件测试性参数体系。基本的软件测试性参数体系可用图1来表示:
《微计算机信息》(管控一体化)2010年第26卷第9-3期
然后, 根据目标层确定软件测试性参数层。在确定软件的目标层之后, 就可以根据已经建立的软件测试性参数体系, 通过目标层查找相关的软件测试性参数。
最后, 结合软件特性与软件测试类型确定参数值。由于参数的多样性与复杂性, 我们可以采用两种方法来确定软件测试性参数。指标法:有些软件测试性参数可以根据相关的文献, 如标准或者规范等来确定参数的值或描述(例如, 有的标准规定关键单元的圈复杂度不得超过20等); 讨论法:对于那些不能通过资料确定值的参数, 可以由专家或者有丰富开发或测试经验人员组成讨论小组, 研究讨论后确定参数的值或描述。
2.3.2需求分析
与一般的软件需求一样, 软件测试性需求也应进行需求分析以确定其正确性和有效性。首先, 分析需求的一致性:重复或参数值相异的需求参数, 需要在综合考虑的基础上保留唯一的参数值。然后, 分析需求可行性:确定需求参数实现的可行性、成本、以及风险等。再者, 确定需求的优先级别:应用分析方法确定需求参数实现的优先级别, 在参数冲突或超出预算时, 可以以优
图1软件测试性参数体系
先级作为参数选择的依据。最后, 创建数据字典:确保一致的定义和术语, 以便于需求管理和维护。
表1常见软件类型与目标层对应关系
技
术创新
该参数体系包括了基本的软件测试性参数, 同时标明了与目标层的对应关系:其中“+”代表正相关, “-”代表负相关。例如,
CC(圈复杂度) 与简单性为负相关, 则说明圈复杂度越高, 软件的简单性越低(意味着软件测试性越低) 。
2.2软件测试性需求的概念
在软件测试性参数体系的基础上, 我们提出了软件测试性需求的概念。软件测试性需求是指, 为了提高产品的测试性, 在软件生命周期的前期提出的软件应满足的要求的集合。其中, 软件测试性需求的单个元素定义为需求因子(RequirementFactor, RF) 。需求因子可以用一组二维向量来表示:RF=(P,V) 其中:P:软件测试性参数;V:该参数的具体描述, 即特定的标准或指标等。需要指出的是,V 值是软件测试性参数体系中的参数层与目标层对应关系的反映。例:RF=(CC,C≤20) 。
2.3软件测试性需求分析
软件测试性需求分析是软件测试性设计的基础, 对软件产品的测试性有着至关重要的影响。作为软件需求的特殊分类, 软
件测试性需求的获取应当以软件需求工程的工程化理论为指导, 以确保软件测试性需求的完整性和有效性。具体而言, 可以分为如下几步:
表2基本测试类型与目标层对应关系
2.3.1需求获取
首先, 分析软件特性与软件测试类型以确定目标层。
软件特性从广义上讲, 是指某软件区别与其它软件的各方
面因素的集合。不同类型的软件在测试时要求不同的测试策略。因而, 软件测试性需求应充分考虑软件特性的影响因素, 并将其作为获取目标层的重要依据。表1为常见软件类型与目标层的对应关系。
在实际软件测试活动中, 普遍存在这样一种情况:软件的少数测试类型占用了大量的测试成本。我们相信, 通过良好的测试性设计可以显著降低这些测试类型消耗, 从而大大缩减软件整体测试成本。对于那些测试成本不高的测试类型先不予考虑, 这样就可以获得最佳的投入产出比。因此, 在软件测试性需求获取时, 应先判断哪些是测试难度大、成本高的测试类型(根据经验可以很容易的甄别出), 然后再以此为依据选择目标层。表2为测试类型与目标层的对应关系。
-98-360元/年邮局订阅号:82-946
2.3.3需求表述
需求表述有两种方案:一种是把软件测试性需求融入软件需求说明书中, 与一般意义上的需求作为一个整体。这样做的好处是便于需求管理, 但缺点也很明显, 即某些软件单元的测试性需求与普通需求所关注的软件颗粒度差别较大, 容易导致需求说明书的层次结构混乱。
(下转第107页)
现场总线技术应用200例》
通过必要的设置, 可以直接实现与VC 语言的混合编程, 而不必再依赖Matlab 。同时,Matcom 还提供编译转换功能, 能够将
软件时空
(上接第98页)
另外一种方案是采用新的标准模板编写测试性需求, 即软件测试性需求规格说明书。该方案的好处是便于组织和编写, 易读性和易用性较高。缺点是多个需求说明书, 使需求管理变得复杂。
Matlab 函数或编写的Matlab 程序转换为VC 语言形式的DLL, 只须包含必要的lib 、dll 以及h 文件, 即可脱离Matlab 环境, 并对Matlab 函数和过程有效调用。
2.3.4需求验证
软件测试性需求验证主要包括两个方面。审查需求文档:对需求文档进行正式审查是保证软件需求质量的很有效的方法。组织一个由不同代表(如分析人员, 客户, 设计人员, 测试人员) 组成的
图2Matcom 转换示意图
但是,Matcom 依然存在一些缺陷, 主要表现在待编译的m 文件不能涉及Matlab 的内部类。虽然大多数Matlab 函数都可以进行CPP 实现, 但有些函数不能实现。例如, 对class 数据类型只有部分支持。其次,Matcom 虽然支持图形函数, 但图形窗口远不如Matlab 绘制的图形精美。
小组, 对软件需求或STRS 及相关内容进行仔细的检查。确定合格的标准:确定软件测试性需求可以提交给测试性设计人员的标准, 诸如标识的完整性要求等, 以便进入测试性设计的下一阶段。
3研究方向
软件测试性需求的提出为软件测试性设计工作奠定了基础。但是, 由于软件测试性研究的复杂性和不完备性, 软件测试性需求分析方法还会不断丰富和完善, 特别是软件测试性参数体系的研究工作还将持续。同时, 未来研究的重点是如何通过软件测试性的设计将测试性需求融入软件开发过程, 从而达到大幅降低软件测试成本的目的。
4结束语
利用Matcom 的CPP 转换, 可以最大限度地利用Matlab 的复杂运算和强大的数据处理能力, 并发挥VC 用户界面开发功能强大、运行高效等优点, 使研究人员不必花费大量的时间与精力探讨具体的算法。本文探讨了基于Matcom4. 5的VC 与
Matlab 接口程序的实现问题, 详细介绍了将CPP 代码插入VC 的框架。其中, 重点介绍了建立文档方式和建立文本框方式的具体步骤。根据这些步骤, 工程技术人员能够简单高效地实现Matlab 与VC 程序的混合编制, 具有一定的实用价值。
本文作者创新点:本文从建立文档方式和建立文本框方式两种角度, 提出了建立Matlab 和VC 的通用接口程序的方法, 实现了Matlab 与VC 程序的混合编制。参考文献:
[1]李菁. MATLAB 与V C++接口技术的实现方法[J].科技资讯, 2008,1:86
[2]董长虹, 余啸海.MATLAB 接口技术及应用[M].国防工业出版社,2004.
[3]邓科.VC 与Matlab 接口编程之Matcom 安装配置[N].开发者在线,2007-10-17:http:\\www.builder.com.cn\2007\1017\560498.shtml
[4]徐彬, 张伟成. 基于Matcom 与COM 的VC/Matlab混合编程[J].微计算机信息,2009,3-3:184-185
[5]牟彧清, 王汝霖, 李国新.MATLAB 与VC 接口技术的研究[J].微计算机信息,2006,7-3:275-277
作者简介:彭长青(1976.6-),男, 工学学士, 现为华侨大学信息学院助理实验师。主要从事电机电器、电力系统等的研究; 尚荣艳(1975.12-),女, 现为华侨大学信息学院讲师。主要从事高压直流
输电技术、电机电器及其控制等方向的研究。
4结论
由于软件测试性设计工程化研究的需求, 本文提出了软件测试性需求的概念, 并在综合了软件需求工程等思想的基础上形成了完整的软件测试性需求分析方法。该方法的提出可以帮助软件开发人员获取具体的软件测试性需求, 进而指导软件的测试性设计工作。
本文作者创新点:本文结合软件需求工程的理论, 创造性的提出了软件测试性需求的概念及其分析方法。
技术创新
参考文献
[1]RBache, M Mullerburg. Measures of Testability as a Basis for Quality Assurance [J].SoftwareEngineering Journal, 1990, 5(2):86–92. [2]BBaudry, Y Le Traon, G Suny é. Testability Analysis of a UML Class Diagram [C]Proceedings of the Eight IEEE Symposium on Software Metrics (METRICS2002). Ottawa, 2002:54-65
[3]RVBinder. Design for Testability in Object -Oriented Systems [J].Communications of the ACM, 1994, 37(9):87–101.
[4]FuJianping. Study on Software Testability Measurement Method [D].Beijing:Dept. of System Engineering of Engineering Technolo -gy, Beijing University of Aeronautics and Astronautics,2008
[5]周娟; 钱稷; 刘扬基于面向对象的软件测试技术研究[J].微计算机信息,2009,7-3:222-224
作者简介:周震震(1986-),男, 山东省济南市人, 北京航空航天大学, 硕士, 研究方向:软件测试性设计。
Biography:ZHOU Zhen-zhen (1986-)Male,Jinan City of Shan -dong Province, Beihang University, Master, research area:soft -ware testability design.
(100191北京北京航空航天大学工程系统工程系) 周震震
王轶辰
Biography:PENG Chang-qing (1976.6-),Male,Hunan Province, College of Information Science and Engineering, Huaqiao Uni -versity, Assistant Experimentalist, Research on electric machines and electric apparatus, power systems, and so on.
(361021华侨大学信息科学与工程学院) 彭长青尚荣艳
(Collegeof Information Science and Engineering, Huaqiao Uni -versity, 361021, China) PENG Chang-qing SHANG Rong-yan 通讯地址:(361021福建厦门集美大道华侨大学信息学院办公室) 彭长青
(收稿日期:2009.12.09)(修稿日期:2010.09.20)
(Departmentof System Engineering of Engineering Technolo -gy, Beihang University, Beijing 100191, China) ZHOU Zhen-zhen WANG Yi-chen
通讯地址:(100191北京航空航天大学工程系统工程系) 周震震
(收稿日期:2009.12.09)(修稿日期:2010.03.09)
PLC 技术应用200例》
邮局订阅号:82-946360元/年-107-