首页> 中国专利> 一种嵌入式软件测试数据可视化自动生成方法及系统

一种嵌入式软件测试数据可视化自动生成方法及系统

摘要

本发明涉及一种嵌入式软件测试数据可视化自动生成方法及系统。本方法是利用事实上的工业标准——统一建模语言UML的广泛性和灵活性,并对UML进行实时扩展,并引入场景技术,实现以可视化的方式自动生成嵌入式软件测试数据,开发的测试数据自动生成系统能够将测试数据自动转化为针对特定测试平台所需的测试脚本,测试脚本的运行可驱动测试运行,实现嵌入式软件自动化测试。

著录项

  • 公开/公告号CN101571802A

    专利类型发明专利

  • 公开/公告日2009-11-04

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN200910147768.0

  • 发明设计人 殷永峰;刘斌;杨顺昆;陈皓晖;

    申请日2009-06-19

  • 分类号G06F9/44(20060101);G06F11/36(20060101);

  • 代理机构11299 北京市卓华知识产权代理有限公司;

  • 代理人陈子英

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2023-12-17 22:53:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-08-13

    未缴年费专利权终止 IPC(主分类):G06F9/44 授权公告日:20120509 终止日期:20130619 申请日:20090619

    专利权的终止

  • 2012-05-09

    授权

    授权

  • 2009-12-30

    实质审查的生效

    实质审查的生效

  • 2009-11-04

    公开

    公开

说明书

技术领域

本方法属于嵌入式软件自动化测试领域、测试数据生成领域。

背景技术

作为上个世纪的一个伟大发明,计算机正深刻影响和改变着人类的生活。嵌入式系统无疑是计算机应用领域里一个十分活跃的分支,其在军事、工业、医疗、教育和金融等各个领域发挥着越来越重要的作用。伴随这些嵌入式系统的规模不断增长和复杂度不断增大,暴露出的问题也逐渐增多,软件的质量和可靠性成为制约系统安全的关键因素之一。在嵌入式系统的研制或使用过程中,大量的故障都是由于软件的因素造成的,如航天器发射、航空器试飞的失事原因60%由软件引起,并且已造成了非常严重的后果,影响研制进度,甚至造成人员伤害和设备损害。当前,越来越多的目光投向了嵌入式软件的测试领域,为嵌入式系统软件测试提供了广阔的前景。

由于嵌入式系统具有资源短缺、实时性要求高等特点,这就要求嵌入式软件精简高效,且稳定可靠,同时也造成了针对嵌入式软件的测试难度大大增加。目前,对于嵌入式软件测试支持的环境和工具很少,测试手段大多都是以手工编写测试数据(测试用例/测试脚本)为主,效率很低,测试质量不高。因此,随着嵌入式系统的进一步发展,迫切需要一种更快速、更有效的自动化测试技术,自动地生成大量的符合规范测试数据(测试用例/测试脚本),通过提高测试效率,来有效地提高软件质量和可靠性。

目前,国内外众多嵌入式软件测试数据的主要生成手段是手工方式,部分自动生成测试数据的方法往往不能满足测试充分性要求,或无法满足嵌入式软件测试数据对实时、并发等方面的描述机制,导致测试数据的适用性差,测试效率低。要实现嵌入式软件测试数据的自动化生成,必须从解决如下几个方面的问题:

1)能够自动化生成测试数据,并可对被测嵌入式系统的静态和动态特征进行完整描述,且生成的测试数据能够满足嵌入式软件对实时、并发等特性描述的要求。

2)应开发相应的测试数据生成系统,且该系统能够以操作简便、易快速掌握的、可视化的方式对测试过程进行建模,以便快速、方便地生成符合要求的测试数据。

3)应基于当前业界普遍采用的建模语言,以加快测试人员的掌握速度,缩短测试人员的培训时间,提高测试效率。

发明内容

本发明公开了一种嵌入式软件测试数据可视化自动生成方法,其特征在于包括以下步骤:

(1)首先加载测试方案,所述测试方案是根据被测嵌入式软件系统的特点以及测试要求,在确定测试数据生成所需的静态和动态信息之后生成的;

(2)对被测系统静态建模,通过扩展的UML类图完成针对被测系统测试数据生成中的静态建模;根据所述加载测试方案,完成对所述被测系统及其周围交联设备的建模;

(3)对被测系统动态建模,其进一步包括测试活动建模和测试活动中的动作建模;

(4)在完成所述述静态建模和动态建模之后,自动提取测试场景并生成测试数据;

(5)生成测试数据的XML描述;

(6)将已自动生成的以XML描述的测试数据转化为特定测试平台所需的测试脚本;

(7)根据所述特定测试平台所需的测试脚本,实现在特定测试平台的自动运行,驱动测试过程,完成嵌入式软件的自动化测试。

所述测试要求包括可测功能、性能、安全性和接口信息。

所述静态建模的控件包括静态画布中的鼠标,被测系统,与被测系统相关的交联设备,单方向连接以及双方向连接。

所述动态建模的控件包括动态画布中的鼠标的,具体的测试任务,测试任务集,单线程下顺序连接,多线程下的顺序连接以及多线程的开始或是结束。

通过对嵌入式设备类的继承及实例化完成所述被测系统及其周围交联设备模型的建立工作。

所述嵌入式设备类包括判断是否为被测系统或者交联设备的属性,设备标识属性和设备间通讯接口变量属性,以及表示初始化设备的操作,表示启动设备运行的操作,表示挂起设备的操作,表示重启动设备的操作和表示停止设备的操作。

所述测试活动建模是利用UML活动图完成测试活动的建模,同时对UML活动图进行扩展以便实现对时钟和受时间约束的行为的描述。

对UML活动图的扩展包括在活动图迁移边上加入约束条件,以及在迁移中加入条件表达式;所述约束条件包括延时操作,所述条件表示式表示功能测试数据的前置条件或者后置条件。

所述测试活动中的动作建模是利用UML顺序图描述被测系统与其交联设备的数据交互过程,同时对UML顺序图进行扩展以便对被测系统与仿真模型之间的数据传递过程进行精确描述。

对UML顺序图的扩展包括增加Transfer构造型并添加标记值,用于对嵌入式系统对象之间数据传输行为建模,应用于顺序图的消息或调用,其中传输的数据类型必须和静态建模时对象间的I/O接口类型保持一致,传输的数据有确切的取值,是仿真模型中该I/O接口接口变量的一个实例

所述Transfer构造型的标记值包括源设备值,目标设备值,数据传递条件值,发生时间值以及I/O类型传递数据值。

对UML顺序图的扩展还包括通过扩展约束的方式来表达消息之间的时间约束信息。

所述自动提取测试场景并生成测试数据的步骤,进一步包括:

(1)遍历活动图生成测试场景,得到所有可能的活动序列;

(2)根据测试场景,生成测试数据。

所述遍历活动图包括:

在活动图上根据节点的顺序号及节点的类型米跟踪得到测试场景路径;

在遍历场景路径的过程中,访问一个节点后,先找到该节点可能的直接后继,然后采用深度优先的方法选择一个直接后继继续遍历,当到达一个没有后继的节点时,就完成一个场景路径的遍历,然后回溯到下一个直接后继,继续遍历,直到所有的直接后继都已经被访问,则完成了所有的场景路径的遍历;

所述生成测试数据进一步包括:

对测试场景对应的顺序图进行分析,按照顺序图的生命线方向依次提取出每个消息;

如果某个对象属于被测系统,即如果表示是否为被测系统或者交联设备的属性的IsSUT属性值被设定为TRUE,则不用提取该对象生命线方向的所有自身消息;

针对每个事件提取出与其相关的信息,得到该测试场景的测试数据,然后将这些数据进行有效组合得到测试数据,所述相关的信息包括事件发生的事件,事件的源设备对象、目标设备对象,事件中传递数据的内容。

所述测试脚本包括以C语言或Tcl语言描述的测试脚本。

本发明还公开了一种嵌入式软件测试数据可视化自动生成系统,包括:

用于加载测试方案的装置,所述测试方案是根据被测嵌入式软件系统的特点以及测试要求,在确定测试数据生成所需的静态和动态信息之后生成的;

用于对被测系统静态建模的装置,其通过扩展的UML类图完成针对被测系统测试数据生成中的静态建模;根据所述加载测试方案,完成对所述被测系统及其周围交联设备的建模;

用于对被测系统动态建模的装置,其进一步包括用于测试活动建模的装置和用于测试活动中的动作建模;

用于在完成所述述静态建模和动态建模之后,自动提取测试场景并生成测试数据的装置;

用于生成测试数据的XML描述的装置;

将已自动生成的以XML描述的测试数据转化为特定测试平台所需的测试脚本的装置;

根据所述特定测试平台所需的测试脚本,实现在特定测试平台的自动运行,驱动测试过程,完成嵌入式软件的自动化测试的装置。

所述测试要求包括可测功能、性能、安全性和接口信息。

所述静态建模的控件包括静态画布中的鼠标,被测系统,与被测系统相关的交联设备,单方向连接以及双方向连接。

所述动态建模的控件包括动态画布中的鼠标的,具体的测试任务,测试任务集,单线程下顺序连接,多线程下的顺序连接以及多线程的开始或是结束。

通过对嵌入式设备类的继承及实例化完成所述被测系统及其周围交联设备模型的建立工作。

所述嵌入式设备类包括判断是否为被测系统或者交联设备的属性,设备标识属性和设备间通讯接口变量属性,以及表示初始化设备的操作,表示启动设备运行的操作,表示挂起设备的操作,表示重启动设备的操作和表示停止设备的操作。

所述用于测试活动建模的模块,利用UML活动图完成测试活动的建模,同时对UML活动图进行扩展以便实现对时钟和受时间约束的行为的描述。

对UML活动图的扩展包括在活动图迁移边上加入约束条件,以及在迁移中加入条件表达式;所述约束条件包括延时操作,所述条件表示式表示功能测试数据的前置条件或者后置条件。

所述用于测试活动中的动作建模的装置,利用UML顺序图描述被测系统与其交联设备的数据交互过程,同时对UML顺序图进行扩展以便对被测系统与仿真模型之间的数据传递过程进行精确描述。

对UML顺序图的扩展包括增加Transfer构造型并添加标记值,用于对嵌入式系统对象之间数据传输行为建模,应用于顺序图的消息或调用,其中传输的数据类型必须和静态建模时对象间的I/O接口类型保持一致,传输的数据有确切的取值,是仿真模型中该I/O接口接口变量的一个实例

所述Transfer构造型的标记值包括源设备值,目标设备值,数据传递条件值,发生时间值以及I/O类型传递数据值。

对UML顺序图的扩展还包括通过扩展约束的方式来表达消息之间的时间约束信息。

所述用于自动提取测试场景并生成测试数据的装置,进一步包括:

用于遍历活动图生成测试场景,得到所有可能的活动序列的装置;

用于根据测试场景,生成测试数据的装置。

所述用于遍历活动图生成测试场景,得到所有可能的活动序列的装置包括:

用于在活动图上根据节点的顺序号及节点的类型来跟踪得到测试场景路径的装置;

遍历装置,用于在遍历场景路径的过程中,访问一个节点后,先找到该节点可能的直接后继,然后采用深度优先的方法选择一个直接后继继续遍历,当到达一个没有后继的节点时,就完成一个场景路径的遍历,然后回溯到下一个直接后继,继续遍历,直到所有的直接后继都已经被访问,则完成了所有的场景路径的遍历;

其特征在于所述用于根据测试场景,生成测试数据的装置包括:

用于对测试场景对应的顺序图进行分析,按照顺序图的生命线方向依次提取出每个消息的装置;

判断装置,用于判断如果某个对象属于被测系统,即如果表示是否为被测系统或者交联设备的属性的IsSUT属性值被设定为TRUE,则不用提取该对象生命线方向的所有自身消息;

用于针对每个事件提取出与其相关的信息,得到该测试场景的测试数据,然后将这些数据进行有效组合得到测试数据的装置,所述相关的信息包括事件发生的事件,事件的源设备对象、目标设备对象,事件中传递数据的内容。

所述测试脚本包括以C语言或Tcl语言描述的测试脚本。

附图说明

图1是本发明所提出的嵌入式软件测试数据可视化自动生成过程;

图2是本发明所开发的嵌入式软件测试数据自动生成系统的主框架界面;

图3是扩展顺序图的时间标记。

具体实施方式

为了便于本领域普通技术人员理解和实施本发明,下面结合附图对本发明作进一步详细、深入地描述,应当理解,此处所描述的实施仅用于说明和解释本发明,并不用于限定本发明。

基于事实上的工业标准——统一建模语言UML进行实时扩展,从构造型(Stereotype)标记值(Tagged Value)、约束(Constraint)三个方面进行扩展,并结合UML的多种图(Diagram)(如类图、顺序图和状态图)对嵌入式软件测试过程进行建模,以提高本发明的适用性和有效性,主要方法如下所述:

静态建模方面。为了让UML类图应用于嵌入式软件测试领域,本发明对UML类图进行了扩展,使之能更好的描述被测嵌入式软件系统与其交联环境之间的联系。本发明通过增加嵌入式设备描述类和嵌入式设备之间的关联关系以解决嵌入式软件静态建模问题。

动态建模方面。采用分层的方式来描述被测嵌入式软件的行为。具体说明如下:

本发明采用分层的扩展UML活动图对测试流程进行描述,顶层的主活动图描述SUT的主要工作流程,底层的各子活动图由主活动图中的活动节点进一步展开,用于描述该活动节点中的子工作流程。测试数据的生成过程对UML各层的活动图进行搜索和遍历,提取出一个个独立的、从开始节点到结束节点之间针对不同功能的执行路径,因此活动图必须要包含SUT所有可能的工作路径。

本发明采用扩展的UML顺序图描述嵌入式系统中的设备交互过程,从微观上描述各被测功能实现的细节,如被测系统与交联设备、交联设备之间的数据通讯等。

在测试数据自动生成过程中,本发明引入场景技术,通过提取上述建模过程的测试场景,并结合搜索算法,自动生成测试数据。测试场景是由上述动态建模过程中的一系列相关活动组成,对应于活动图中的一条典型的执行路径。由于本发明的活动图是分层组织的,子活动图中可能存在多条路径,因此,采用搜索算法获取测试场景,并结合测试场景路径中的静态信息和预期输出信息,可自动生成测试数据。此外,本发明还对所生成测试数据的覆盖性准则(含节点覆盖准则,转移边覆盖准则及逻辑路径覆盖准则)等进行了研究,以保证测试数据的充分性。

本发明生成的测试数据以通用标记语言XML进行存储,测试人员可通过二次开发,按照特定测试平台的要求,将测试数据转化为特定平台所需的测试脚本。

图1中展示了本发明提出的嵌入式软件测试数据可视化自动生成过程及其支撑环境的结构,具体说明如下:

1)加载测试方案F01。本部分实现测试方案的加载功能,是后续静态建模和动态建模的基本依据,实现该功能的前提根据对被测嵌入式软件文档(如软件需求规格说明及软件接口控制文档)的分析,按照被测软件的特点以及测试要求,获取被测软件的可测功能、性能、安全性、接口等信息,明确测试数据生成所需的静态和动态信息,形成测试方案,

2)被测系统的静态建模F02。本发明扩展的UML类图完成针对嵌入式软件测试数据生成中的静态建模,在加载测试方案的基础上,完成对被测系统及其周围交联设备进行建模,通过对嵌入式设备类的继承及实例化完成被测系统及其周围交联设备模型的建立工作。基于类图扩展的静态建模为后续进行动态建模奠定基础。测试数据自动生成系统中用于静态建模的主要控件元素如表1所示。表2给出了已扩展的嵌入式设备类《Equipment》的属性和操作。

表1用于静态建模的主要控件元素

表2嵌入式设备类《Equipment》的属性和操作

3)测试过程的动态建模F03。本部分的主要是完成测试过程的动态建模,用于动态建模的控件元素如表3所示。下面分别从测试活动和测试动作两个方面对动态建模过程和方法进行阐述。

表3用于动态建模的主要控件元素

(1)测试活动建模。

UML活动图为测试活动建模提供了较好的基础,利用活动图可完成绝大部分测试活动的建模工作。此外,为了更好地完成嵌入式软件测试活动的建模,本发明还对UML活动图进行了扩展,解决了UML活动图中有关时钟和受时间约束的行为的描述问题。表4给出了UML活动图的扩展说明。

表4UML活动图的扩展说明

(2)测试活动中的动作建模

传统UML顺序图已经能够很好地描述嵌入式系统被测系统与其交联系统数据交互过程,为了更好地刻画交互行为的时间和数据特性。本发明对UML顺序图进行了扩展,用于描述被测系统与仿真模型之间的数据传递过程的精确描述。

由于静态建模中活动对象之间传递的数据必须满足两者之间的数据协议类型,且数据传递往往要满足严格的时间约束。为此,本发明采用扩展构造型并添加标记值,来补充表达嵌入式系统数据传递的特性。具体说明如下:

增加《Transfer》构造型,用于对嵌入式系统对象之间数据传输行为建模,应用于顺序图的消息或调用。传输的数据类型必须和静态仿真建模时对象间的I/O接口类型保持一致,传递的数据有确切的取值,是仿真模型中该接口变量的一个实例。加入了以下标记值:

Transfer.sender=value  //源设备

Transfer.target=value//目标设备

Transfer.cond=expression  //数据传递条件

Transfer.time=value  //发生时间

Transfer.IOtype=value//I/O类型

Transfer.data=value//传递数据

从以上添加的标记值可以看出,消息的传递条件和传递时间就是该消息发送的一种时间(或其他)约束。

此外,本发明还通过扩展约束[Condition:Expression]的方式来表达消息之间的时间约束信息。如图3所示的一种雷达控制系统中的扩展顺序图表明,Msg_Response必须在Msg_Detection执行之后的5毫秒之内发生。

4)测试数据生成F04

在完成上述静态建模和动态建模之后,下面要做的工作是自动提取测试场景并生成测试数据。主要步骤如下:

步骤1:遍历活动图生成测试场景,也即得到所有可能的活动序列。

活动图的各种节点在构建活模型的时候,都依照一定的规则分配了节点顺序号,节点顺序号隐含地表示了节点之间的偏序关系,因此在活动图上根据节点的顺序号及节点的类型来跟踪得到测试场景路径。下一步是完成对活动图的遍历。首先将活动图中的循环看成条件判断,在遍历场景路径的过程中,访问一个节点后,先找到该节点可能的直接后继,然后采用深度优先的方法选择一个直接后继继续遍历,当到达一个没有后继的节点时,就完成一个场景路径的便遍历,然后回溯到下一个直接后继,继续遍历,直到所有的直接后继都已经被访问,则完成了所有的场景路径的遍历。这样的所有节点我们都至少遍历一次,包括循环在内的每个条件分支都至少遍历了一次,也避免了路径的穷举覆盖。对于并发结构,可通过随机组合并发活动来生成活动序列,在单条路径上保证活动执行的先后顺序不变,其它顺序则是任意的。

步骤2:根据测试场景,生成测试数据。

在活动图上遍历生成测试场景的时候,很容易基于路径覆盖准则,获取相应场景执行过程中的控制流、数据流,分支节点的条件,然后就能确定每一路径所需要的输入和状态条件。当满足该路径条件时,系统就会沿着该路径表示的活动执行。生成测试数据主要有以下几个步骤:

对测试场景对应的顺序图进行分析,按照顺序图的生命线方向依次提取出每个消息。

如果某个对象属于被测系统,也就是该对象对应的设备类中,IsSUT属性被设定为TRUE,则该对象生命线方向的所有自身消息,不用提取。

针对每个事件,提取出与其相关的信息,包括事件发生的事件,事件的源设备对象、目标设备对象,事件中传递数据的内容等等,也即得到了该测试场景的测试数据,然后将这些数据进行有效组合可得到测试数据。

5)测试数据的XML描述F05

XML(Extensible Markup Language)是W3C(The World Wide Web Consortium,WWW协会)定义的一种标记语言。XML提供了一种结构化的元数据表示方法,具有平台和语义无关性、开放性和可扩展性等特点。本发明提供了一种基于XML的测试数据存储方法。表5给出了自动生成的测试数据的XML存储格式,便于测试人员浏览、编辑所生成的测试数据。

  <?xml version=″1.0″encoding=″GB2312″standalone=″yes″?>  <测试用例1>  <用例信息>  <编制人>XXX  </编制人>  <生成时间>XXX</生成时间>  <用例编号>XXX</用例编号>  </用例信息>  <被测软件信息>  <软件名称>XXX</软件名称>  <编号及版本>Version 1.0</编号及版本>  </被测软件信息>  <测试输入 单位=″XXX″>  <操作 名称=″XXX″>  <离散输入>  <步骤 时间=″t=XXX毫秒″>  <分支 约束条件=″XXX″>  <变量>文字描述=XXX</变量>  <变量>XXX</变量>  <变量>XXX</变量>  </分支>  </步骤>  </离散输入>  <预期结果/>  </操作>  </测试输入>  </测试用例1>

表5测试数据的XML存储格式

6)测试脚本转化程序F06。本系统将自动生成的测试数据以XML的格式存储,该格式便于测试人员掌握并实现浏览、编辑,为了更好的将生成的测试数据转化为特定的自动化测试平台所需的测试脚本(如C语言或Tcl语言描述的测试脚本),允许测试人员通过二次开发,将已自动生成的测试数据转化为特定测试平台所需的测试脚本。

7)交由自动化测试平台执行F07。将已生成的XML格式的测试数据转化为特定测试平台的测试脚本后,可实现在特定测试平台的自动运行,驱动测试过程,完成嵌入式软件的自动化测试。

本发明可以带来如下有益效果:

1)提高嵌入式软件测试的自动化水平。测试数据(测试用例/测试脚本)是嵌入式软件测试过程中最重要的阶段,它技术要求最高,耗时最长,本发明提供了一种自动化的测试数据生成方法,可以有效提高测试的自动化水平。

2)有效提高测试效率,减少测试费用,节约测试成本。本发明事实上的工业标准——统一建模语言UML,因此便于测试人员短时间内掌握并熟练应用。此外,已开发的测试数据生成系统具有可视化、操作简便的和简单直观的特点,也有利于测试人员拜托手工方式的低效率,从而提高测试效率,减少测试费用,节约测试成本。

3)提高测试数据的通用性、可移植性和可维护性。鉴于本发明自动生成的测试数据可按照特定的转换规则自动生成特定测试平台所需的测试脚本,因此可大大提高测试数据的用性、可移植性和可维护性。

4)具有重要的工程应用价值。鉴于本发明起源于实际工程应用需要,且已成功应用于工程实际应用,因此推广后具有重要的工程应用价值。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号