一种新的基于缺陷的软件测试描述语言-DBSTDL
2017-05-10顾滨兵
顾滨兵,郑 梅
(1.中国人民解放军91413部队, 河北 秦皇岛 066000; 2.燕山大学, 河北 秦皇岛 066000)
一种新的基于缺陷的软件测试描述语言-DBSTDL
顾滨兵1,郑 梅2
(1.中国人民解放军91413部队, 河北 秦皇岛 066000; 2.燕山大学, 河北 秦皇岛 066000)
缺乏统一的测试描述语言(TDL)已成为提高测试效率和复用程度的瓶颈;以设备、信号等为核心的传统测试语言不能体现软件测试的基本思想,不适用于建立软件测试“共享知识库”;为实现统一描述标准下的测试知识积累,在软件测试信息模型基础上,面向软件缺陷,采用分类法和因素分解法,围绕缺陷摘要与被测软件信息双重主线,重组软件测试信息,设计了新的测试描述语言(DBSTDL);该语言共包括6类词,3大类100多条基本语句, 3组句群, 2种主要的语言组合方式,涵盖了测试描述语言的框架和基本内容;应用DBSTDL语言实现了软件典型缺陷与测试样例库,验证了利用DBSTDL语言建库的思想,说明该语言可用于建立统一的软件测试描述标准,提供了规范描述手段。
测试描述语言; 测试信息; 软件缺陷; 结构化表格
0 引言
测试描述语言是测试人员交流测试信息、共享测试资源的根本,同时也是人与机器互相通信的重要手段,研究测试描述语言是发展测试技术的基础性工作。
软件测试描述是采用一种语言(包括自然语言)为工具对测试的设计、执行,并得到测试结果的全过程描述。当前软件测试领域普遍认为,软件测试的根本目标是“为了发现尽可能多的缺陷,而不是为了证明软件没有缺陷”,软件缺陷是软件测试的主要目标,如果脱离了这一目标,软件测试描述就体现不出测试的设计思想、策略和方法的核心内容,测试的复用和共享就没有了“灵魂”和方向,本文据此开展相关研究。
1 国内外测试描述语言现状
1.1 国外主要的测试描述语言
国外一直视测试描述语言为自动测试的核心,用专业化的测试描述语言来替代自然语言和早期使用的通用计算机语言(C、Ada等),典型的包括ATLAS-面向测试的通用语言、STD-信号和测试规范标准、ATML-自动测试标记语言,除此之外还包括美国宇航局使用的GOAL、美国空军的PALCE、欧洲宇航局的ETOL等。
1.2 国内测试描述描述语言研究
国内在跟踪国外测试描述语言的同时,对测试语言的研究取得了较大的进展,开发出了许多专业的测试语言,包括中科院的C-Tess语言、北京空间飞行器总体设计部的表格型语言、中科院空间科学与应用研究中心提出的ATLMIC、北京航空航天大学基于UUT的TLBUM语言等。
这些语言在一定范围和领域内解决了测试系统、研发、使用等之间的信息交流问题,促进测试的共享、重用及自动化。但这些语言多应用硬件设备检测,偏重于信号、设备和流程,对软件测试中的一些关键信息缺乏完整的定义和准确的描述。
1.3 测试描述语言在软件测试中的应用
软件测试是保证软件质量的关键环节和重要手段。当前,在软件测试领域,迄今为止,还没有统一的测试描述语言,虽然在一些测试工具中引入了测试用例描述技术,但也是五花八门、各自为政;另外,软件测试描述主要以测试用例的复用为主要目标,缺乏对软件测试信息的整体框架分析以及对关键信息的定位和描述手段,面向软件测试的测试描述语言已成为了提高软件测试效率和软件测试复用程度的瓶颈。
2 软件测试信息及其描述
2.1 测试信息
信息来源于数据,是数据的抽象表达。一般测试信息是被测件基本信息、资源信息、流程信息、结果信息的融合。对于软件测试,由于软件缺陷是测试的主要目标,在基于软件缺陷的测试信息中将其独立出来,缺陷信息是提供能够让其它人员复现缺陷的必要信息。
整理测试信息的主要目的是进行共享和复用,用统一的信息模型标准,才能将测试信息进行交互,数据才能被共享、融合和复用。
2.2 软件测试信息模型
信息模型是一系列用于描述软件测试知识和功能特性的抽象定义,通过测试信息的模型化提供一个用于进行测试共享的信息框架。本文提出了基于软件缺陷的设计思想,面向发现及诊断缺陷来组织和整理测试信息。主要思路是:按照发现缺陷的一般逻辑,即发现缺陷的过程是对特定被测软件利用一定的测试资源及采用合适的测试手段方法得到测试结果的过程,将测试信息划分为3个独立的域:被测软件域、测试域、软件缺陷域。每个域中都包含大量的相关信息。图1为本文关于软件测试的信息模型示意图。
图1 软件测试信息模型
2.3 软件测试描述及软件测试描述语言
由图1对于软件域信息和测试域信息的描述以格式化表格以及表格中的数据枚举为主要格式,而缺陷域信息还包括大量的类自然语言描述方式。设计基于软件缺陷的测试描述语言(DBSTDL,defaults-based software test describe language)解决不同软件测试项目之间数据交换和信息共享问题。
3 基于缺陷的软件测试描述语言(DBSTDL)
与以往基于信号或者被测设备的测试描述语言不同,DBSTDL以软件缺陷为聚焦点的和组织核心。以下用图2~4来分别表示基于信号、被测设备和软件缺陷的测试描述语言。
图2 基于信号的测试描述语言
图3 基于被测设备的测试描述语言
图4 基于软件缺陷的测试描述语言
由图2~4看出,基于信号和被测设备的描述语言都是围绕一条主线进行组织的,而基于软件缺陷的测试描述语言是围绕软件缺陷和被测软件两条主线进行组织的,并且检索虽然是双重主线,但测试复用却主要围绕软件缺陷主线。比如同样是面向测试过程,面向被测设备的测试描述语言的主要框架是:被测设备准备、测试步骤1、测试步骤2、测试步骤3……、测试结果;而面向软件测试的测试描述语言的主要框架是:被测软件、软件缺陷1、测试步骤1-1、测试步骤1-2……、测试结果1、软件缺陷2、测试步骤2-1、测试步骤2-2……、测试结果2、……。
4 DBSTDL的基本框架
4.1 DBSTDL的基本要素和结构
DBSTDL的结构单位为:词、句子和句群。
4.2 结构化表格在DBSTDL中的定位
DBSTDL中结构化表格是一种按照预定的表格形式组合而成的结构体,包括两个或两个以上的词。被测软件单元信息如表1所示。
表1 单元信息表
简单结构化表格可以看作是句子,而对于一些复杂的结构化表格,表格中的内容就包括句子,甚至包括句群,比如测试用例表格,把它看作是句群。
一般说来,DBSTDL中的结构单位,词、句子、句群是按级逐次组合的,但由于这些结构化表格的存在,DBSTDL中的结构单位有时就不是简单地按级组合在一起,而是多层次地错综复杂地组合起来的。
5 基于软件缺陷的DBSTDL详细设计
建立测试描述语言的主要目的是实现测试复用,而测试复用的关键就是“测试知识”检索。基于软件缺陷的DBSTDL,不但以软件缺陷的描述为核心,而且为了提高检索效率,软件缺陷的描述又围绕软件缺陷摘要语句来展开。软件缺陷摘要语句通过使用关键词,进行一段简单、准确、专业的描述来抓住缺陷的本质,即对软件产品预期属性的偏离情况,同时,软件缺陷摘要语句又是检索点的有机组合,通过分类法和因素分解法,本文将该语句进行分解,把其中相同或类似的部分列定为固定参数,其中不同的列定为可变参数,这样就形成了参数化软件缺陷摘要语句。
5.1 软件缺陷信息描述
5.1.1 软件缺陷摘要语句
软件缺陷摘要语句具有形式化的约束,根据软件缺陷的种类,分别采取不同的格式。软件缺陷摘要语句共包括:文档类缺陷、代码度量类缺陷、功能类缺陷、性能余量类缺陷、接口类缺陷、人机交互界面类缺陷、安全可靠及其它类缺陷7大类语句。本文从这些基本分类开始,重点采用因素分析方法设计相应的描述语句。以性能余量类缺陷为例,介绍缺陷摘要语句:
软件的性能余量类缺陷主要是指软件的实际性能值或相关的余量值未能达到预期的性能余量的指标要求。软件的性能指标要求主要来源于两类,一是从软件所属系统的文档(如研制总要求、研制方案等)给出的战术技术指标中分解或直接引用,二是软件需求和设计阶段根据软件的自身任务给出的性能要求。
性能指标分为两大类:
枚举类:如软件能处理的信息文件4类:数据文件、文本文件、图像文件、声音文件;
数值类:如软件的信息处理时间为:<10 s。
对于第一方面的性能指标内容一般没有余量,但对于数值类性能指标,可分解出余量指标。
按照以上分类,性能余量类软件缺陷主要分为:
1)软件的实际数值类性能值未能达到规定的指标值;
2)软件的实际枚举类性能未能全部实现;
3)软件的实际余量值未能达到规定的性能指标值或默认的指标值。
5.1.2 基于软件缺陷的关键词
DBSTDL基于软件缺陷,它的描述因素主要考虑软件缺陷涉及的各个因素,如表2。按照1.2软件测试信息模型,软件缺陷涉及的因素包括:测试环境、测试数据、操作、方法以及状态,还有将这些因素连接起来所必须的连接词、符号等。在DBSTDL中,定义了环境设备类、测试数据类、操作类、方法类、状态类、连接词共6大类75个关键词。其中部分关键词举例如表3~表5所示。
表2 性能余量类缺陷摘要描述语句表
注:AAA,BBB,CCC为自由变量。
表2 测试数据类
表3 方法类
表4 状态类
在建立相应的软件缺陷知识库时,重点根据参数及关键词就可以实现高效检索了。
5.1.3 基于软件缺陷的过程语句
在进行过程描述时,根据不同的语句分类,在同类语句中采用因素分解法设置一致的格式,完整、前后统一地进行步骤及相关信息描述。
5.1.3.1 过程语句
过程语句用来对软件缺陷的发现过程进行清晰详细的描述, 测试一般分为白盒、黑盒测试,对于白盒测试,过程语句用软件缺陷的源代码(文档)片段+错误描述来替代;对于黑盒测试,软件缺陷发现过程的描述一般用前提、操作步骤及输入数据、实际结果、预期结果这四部分以及重复这四部分来构建的,在测试用例及执行结果中往往制作结构化表格。
1)前提约束语句:主要包括外部软硬件环境的约束,以及当前软件所处的状态。对于句法结构来说,软硬件环境约束语句以外部硬件项或软件项为主语进行描述,而软件当前状态以被测软件为主语进行描述。软硬件环境主要体现在本身处在何种状态以及对软件发送何种信号或数据,当前软件状态主要包括软件进入何种界面,接收到了某种数据,刚刚完成某项前置任务。通过总结归纳,已整理了8类基本语句可概括当前一般的前提约束情况。如语句“(软件)XXX配置项YYY软件单元完成了AAA功能,进入BBB界面”。
2)操作步骤语句:一般的操作步骤是指人对通过I/O硬件对软件的操作过程,操作步骤语句分为4个部分:主语为测试人员(测试人员间接操纵被测软件时,被测软件为主语),操作(如点击、输入等),操作对象,操作结果。已梳理了40余条基本语句来概括主要的操作步骤,包括基本语句,如语句:“测试人员通过AAA(操作对象)BBB(操作),软件CCC”;异常输入语句 “测试人员在AAA对话框对BBB通过CCC(键盘等输入设备)输入异常数据DDD”。还包括鼠标操作语句、设备操作语句、发送报文/命令语句、记录语句等。
操作步骤语句较多,并且它通过多个步骤,以及与预期结果、实际结果的结合迭代,可以表现更为丰富的操作过程。
3)预期结果语句:软件应该达到的状态。包括软件进入了某个界面,软件得到并显示某个数据,软件完成了某项任务。
4)实际结果语句:软件实际达到的状态描述。
5.2 其它软件测试信息描述
按照2.2软件测试信息模型,除了软件缺陷信息外,软件测试需要描述的还包括软件域信息和测试域信息,要对这些信息进行描述,DBSTDL还需要更多的词、语句并组成相应的句群,对软件测试信息进行完整、准确的描述,这些词和语句包括:
5.2.1 DBSTDL的其它词
除了软件缺陷描述的相关词,DBSTDL包括可枚举专用、项目专有名词、简化名称词、通用全局变量、自由变量等6类词。
5.2.2 DBSTDL的其它语句
5.2.2.1 声明语句
在DBSTDL中,声明语句包括测试项目声明语句、被测软件声明语句、测试设备声明语句、软件技术文档声明语句、简化名称声明语句5类语句组成。
5.2.2.2 组成语句
在DBSTDL中,组成语句包括:被测软件组成、配置项组成语句、测试环境组成语句等4类语句组成。
这些语句大多以格式化表格的形式给出,但对于不同的语句采用不同形式的格式化表格,如测试项目声明语句采用单行格式化表格的形式,被测软件声明语句采用多行三列格式化表格的形式。
5.3 DBSTDL的句群
句群是指若干个句子,围绕一个中心意思,按照一定的逻辑关系和结构形式构成的语流段。DBSTDL包括测试环境句群、项目信息句群、测试过程句群。
5.4 以软件缺陷为焦点,软件缺陷和被测软件双主线的软件测试描述
软件测试如图5所示。
图5 以软件缺陷为焦点,软件缺陷和被测软件双主线的软件测试描述
6 DBSTDL语言的应用
应用DBSTDL语言可规范、准确地描述软件缺陷和测试过程,解决不同软件测试项目技术人员之间的交流、共享问题,达到软件缺陷知识的积累和复用。具体可建立软件典型缺陷库来实现。
在建库过程中如果只按照测试项目进行软件缺陷进行简单的组合和聚合,那么很容易得到线性的以测试项目为中心的测试信息系统。而本文设计DBSTDL可以参数化的软件缺陷摘要语句为核心进行测试信息的重组,虽然其它信息语句是可迭代、重复的,但在一个缺陷中结果语句是唯一的。可以实现测试信息从测试项目为中心向软件缺陷为聚类同质群组的中心的转换,提供比较便捷的同类软件缺陷的查询和使用。
7 结束语
本文初步建立了基于软件缺陷的测试描述语言TDSBSD,设计了6类词, 3大类100多条基本语句, 3组句群,并分析了2种主要的语言组合方式。应用TDSBSD语言实现了软件典型缺陷与测试样例库,验证了TDSBLD语言和建库思想,实现了测试技术、测试经验在统一标准下的持续积累。
[1] 孙维张,刘富华.语言学概论[M].长春:吉林大学出版社,1999.
[2] 宫云战, 杨朝红, 金大海,等. 软件缺陷模式与测试[M]. 北京: 科学出版社,2011.
[3] 贾彦德.汉语语义学[M], 北京:北京大学出版社,1999/2005.
[4] 蒋 严,潘海华.形式语义学引论[M],北京:中国社会科学出版社,1998/2005.
[5] 张仕金,尚赵伟. Cppcheck的软件缺陷模式分析与定位[J]. 计算机工程与应用, 2015,51(3):69-73.
[6] 杨 召,肖明清,胡 斌,等.国外航空自动测试描述语言发展综述[J].计算机测量与控制,2013,21(4):833-835.
[7] 胡 璇,刘 斌,陆民燕. 软件代码缺陷分类及其应用[J].计算机工程,2009,35(2):30-33.
[8] 杨朝红,宫云战,肖 庆,等. 基于软件缺陷模型的测试系统[J].北京邮电大学学报,2008,31(5):1-4.
[9] 梁成才,章代雨, 林海静. 软件缺陷的综合研究[J].计算机工程,2006,32(19):88-90.
[10] 曾福萍,靳慧亮,陆民燕.软件缺陷模式的研究[J].计算机科学,2011,38(2):127-130.
[11] 刘 海,郝克刚. 软件缺陷原因分析方法[J].计算机科学,2009,36(1):242-243.
A New Software Description Language Based on Software Defaults-DBSTDL
Gu Binbing1, Zheng Mei2
(1.91413 Unit of PLA, Qinhuangdao 066000, China; 2.Yanshan University, Qinhuangdao 066000, China)
The lack of uniform test description language (TDL) is becoming as the constrain to improving the efficiency and reusing the test cases. The traditional TDL what makes equipment and signal as center can not reflect the basic idea of software testing and is not applicable for building shared knowledge database. Defaults-based software test description language (DBSTDL) is designed for accumulating the test knowledge under the unified description, based on software test information model, by using the classification method and the factor decomposition method. The new TDL is designed around double mainlines software defaults and tested software, containing six types of words, three types or more than 100 sentences, three groups of sentence groups, two types of combination. By DBSTDL, a database of typical software defaults and test cases is created to verifying the thought of establishing database by DBSTDL. The language can be used to establish a unified description standard and provides a standardized means in the field of software testing.
TDL(test description language), test information, software defaults, structured form
2016-10-18;
2016-11-19。
顾滨兵(1978-),男,江苏启东市人,硕士研究生,高级工程师,主要从事软件工程、软件形式化验证、容错计算等方向的研究。
1671-4598(2017)04-0113-04
10.16526/j.cnki.11-4762/tp.2017.04.032
TP31
A