作者简介:韩仙玉(1985-),女,硕士,阿坝师范高等专科学校助教、CCF会员,研究方向为软件工程、软件测试、信息处理。
0引言
软件测试是保障软件质量的有效手段,其过程实质上是测试知识共享和重用的过程。因此,对软件测试信息的有效收集、表示和存储,不仅能为重复测试提供方便,也可以为评估软件质量提供参考。近年来,作为知识表示工具的本体论(Ontology)由于其具备良好的概念层次结构和逻辑推理能力,使其在信息检索等多个领域得到了广泛应用。因此,为软件测试信息建立领域本体,可以为信息的表示、存储和共享提供知识管理框架,也可以为软件的复用者提供参考。
1本体和构建方法
本体论源于哲学上的概念,广泛认可的定义是Studer等人在前人基础上提出:本体是共享概念模型、明确形式化的规范说明[1,2],包含概念模型、明确性、形式化和共享性4个含义[3]。本体的建模元语有类(classes 或concepts)、关系(retations)、函数(functions)、公理(axioms)和实例(instance)[4]。概念并非单纯意义上的概念,可以是任务、功能、行为、策略、推理过程等。关系表示概念之间的关联关系,可形式化表示为R:C1×C2×…×Cn表示概念类C1,C2,…,Cn之间存在n元关系R。函数是一种特殊的关系。公理用于表示永真式。实例是某概念类的基本元素,即某概念类所指的具体对象。
为了便于对本体的有效分类,Guarino提出以详细程度、领域依赖程度作为本体划分的基础[4]。根据领域依赖度,可划分为顶级、领域、任务和应用本体4类。其中领域本体(Domain Ontology)描述的是特定领域(如测试、图书、航空航天)中概念及概念之间的关系。
建立本体的依据标准最具影响力的是Gruber在1995年提出的5条规则[5]:明确性和客观性、安全性、一致性、可扩展性和最小本体承诺。领域本体概念提出以来,目前比较有名的构建方法有:IDEF5方法、Uschold和King的“骨架法”、Gruninger和Fox的“评估法”(又称TOVE)、Bernaras方法和METHONTOLOGY方法等。本文通过参考Gruber提出的本体构造原则以及斯坦福大学的Natalya F. Noy 和 Deborah L. McGuinness提出的建议[11],领域本体构建过程如下:①确定本体的领域与范围;②考虑对已存在的本体的重用;③列举领域中重要的术语、概念;④定义类和类层次;⑤定义类的属性;⑥创建实例;⑦本体的检验评价。
目前,本体的构建工具之一Protégé是可扩展、可跨平台的和能支持概念层次、属性及原则和约束定义的,为本体的一致性检测和组织概念提供自动分类。利用Protégé建立的本体知识库能很方便地与外界系统实现知识共享和互操作。另外, Protégé能扩展OWL插件成为当下优秀的OWL本体构造工具,其中OWL (Web Ontology Language)是W3C能够对构建的本体进行推理。
2基于SWEBOK的软件测试知识域
1983年IEEE指出软件测试的定义是,如图1所示。
由图1可以看出软件测试的5个子域依次是:软件测试基础、测试级别、测试技术、测试相关的度量和测试过程。
通过对测试领域分析,可知测试信息主要包括:①测试对象的信息;②伴随着软件测试产生的测试计划、测试用例、缺陷报告以及其它相关文档信息;③测试过程运用的测试技术、方法、经验等相关知识。
3STIDO构建与实现
3.1STIDO核心概念确定
建立软件测试信息领域本体(Software Testing Information Domain Ontology,STIDO)的过程,就是利用本体思想与OWL语言组织和描述“软件测试信息”的过程。首先,利用本体建立软件测试领域知识概念模型,有3种常用方法[14]:自顶向下(top-down)方法、自底向上(bottom-up)方法和核心扩展(middle-out)方法。本文采用核心扩展的方法建立本体概念模型,首先需要确定核心概念集,包括:“测试对象”、“测试用例”、“测试计划”“ 测试设计”、“ 测试报告”、“ 测试方法”、“ 测试人员”等。其中,核心概念集合作为概念模型的顶级概念集,必须满足没有二义性并且能覆盖整个测试领域知识的要求。
3.2定义类和类的层次结构
确立核心概念集后,对这组具有本体雏形的核心概念进行扩展,建立本体概念模型如图2所示。
这个过程是一个自顶向下的过程,即根据事先定义好的上一层抽象父类,分别逐步细化说明其下一级子类。在此过程有两个问题需要考虑和解决:①概念间关系的选择和层次结构组织;②概念层次结构可用性和表达精确性的平衡。
在本体中,类是共有某些属性而属于同组的个体集合。通常将每个知识点设为一个单独类,根据知识层次来规定上层知识点作为父类,相反下层知识点作为子类。最高层的类表示最抽象的实体概念,每个子类继承了父类的抽象特征,是比其父类更具体、范围更小的实体概念。可见,类是具备独立存在性、层次性的对象概念,其实例称为个体(Individual),判断两个类层次关系的方法是:评估它们的实例是否相同。
3.3定义概念、术语和属性
概念层次结构是本体的框架,需要通过概念的属性和关系进行充实和扩展。概念的两种属性是描述自身信息与结构的数值属性和描述概念间关系的对象属性。对概念、属性和关系明确定义的工作实质是定义实例,具体工作有:取值类型、允许取值的范围及属性的基数
等,如图3所示。
此阶段注意的两个问题:①面向对象类继承特性的应用。本体模型具有面向对象的特点,可充分利用类继承对属性定义。子类的公共属性在父类定义,并继承父概念的全部属性后再定义特有属性。因此,消除了属性冗余,增强了模型的描述能力;②关系分解。用OWL描述二元关系只能通过“主体-谓词-客体”三元组的方式。在测试领域中有的关系不是二元而是多元的。多元关系表明概念的属性中还具有属性,即带属性的属性。
4结语
本文通过研究本体技术及构建方法,完成了基于本体的软件测试信息领域本体的建立。通过使用Protégé软件中OWL插件的推理功能,检测了STIDO发现其概念的一致性和包含性,其实例不存在冲突问题。STIDO的建立不是一蹴而就的,而是一个反复完善的过程,并且有待于用更多的实践来验证其价值,对今后软件测试的检索十分有益。笔者的下一步工作是对STIDO不断完善,在其基础上实现测试信息的有效存取、共享和复用。
参考文献:
[1]邓志鸿,唐世渭,张铭,等.Ontology研究综述[J].北京大学学报:自然科学版,2002,38(5):730738.
.AI Magazine,1991,13(3):3656.
.Data and Knowlegde Engineering,1998,25(12):161197.
//STOCKHOLM V R,BENJAMINNS B,CHANDRASEKARAN A,eds.Proceedings of the IJCAI99 workshop on Ontologies and ProblemSolving Methods(KRR5),1999:115.
.International Journal of HumanComputer Studies,1995,43(56):907928.
.昆明:云南科技出版社,2007:52101.
.http://www.w3.org/TR/2004/RECowlguide20040210.
[8]郑人杰. 计算机软件测试技术[M].北京: 清华大学出版社, 1992.
.王峰, 陈杰,译.北京:机械工业出版社, 2006.