CN108959094A - 一种基于数据结构的测试程序的定义和应用方法 - Google Patents
一种基于数据结构的测试程序的定义和应用方法 Download PDFInfo
- Publication number
- CN108959094A CN108959094A CN201810759397.0A CN201810759397A CN108959094A CN 108959094 A CN108959094 A CN 108959094A CN 201810759397 A CN201810759397 A CN 201810759397A CN 108959094 A CN108959094 A CN 108959094A
- Authority
- CN
- China
- Prior art keywords
- program
- test
- tool
- data structure
- instrument
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于数据结构的测试程序的定义和应用方法,包括测试程序的通用开发环境、测试程序执行管理模块、人机交互界面模块和仪表驱动组;所述通用开发环境运行于上位机上,用于实现产生、编辑、调试和发布测试程序;所述测试程序执行管理模块用于使用程序数据,并通过程序数据调用对应的仪表驱动代码进行测试工作;有益效果在于:本发明通过对程序体各层次数据结构的定义、程序开发和使用环境的实现,配合对数据结构使用方法的设计,实现了基于数据结构的测试程序的定义和应用,从而使通过图形化的截面和数据填表的方式,调用特定的工具程序段,从而使程序的自动开发成为可能,降低程序的开发难度,提高程序的开发效率。
Description
技术领域
本发明涉及软件测试程序设计和应用技术领域,具体涉及一种基于数据结构的测试程序的定义和应用方法。
背景技术
到目前为止,电子测试仪表的发展经历了三个阶段,分别是最早期的模拟仪表,到以安捷伦,泰克为代表的台式数字仪表,以及NI的虚拟仪表。Agilent的台式仪表是基于MCU来构建,而NI的虚拟仪表是基于PC技术来构建。相对于台式仪表,NI的虚拟仪表取消了仪表的人工操纵面板,仪表被简化为一个个插在PC机箱或者PXI机箱内的模块,而所有仪表的操作面板功能通过PC的GUI来实现。NI的PCI/PXI仪表有两个缺陷,一是数据处理能力受限于机箱内PCI总线的速度,二是机箱的结构尺寸和供电能力限制了板块式仪表信号调理电路的性能,如精度和工作的范围等。
随着以XLINX的Z7000为代表的SOC的出现,开发出来新的仪表架构,称之为柔性仪表结构(FlexibleInstrument),柔性仪表(FI)主要有两部分组成,信号调理模块和计算控制模块(CCIO)和模拟数据转换模块(ADIO)组成,信号调理模块和CCIO之间通过线缆相连,在程序开发调试环境下,CCIO需要上接PC,以完成程序调试的工作,而在运行环境下,PC提供一个虚拟的操控界面。作为一种未来的选项,CCIO也可以自己接入连接一个触控屏,由触控屏提供测量操控和测试结果显示界面。
对于一个FI系统中的某一类实现特定功能的仪表,FPGA的特定IP由信号调理器的开发者开发,然后再和其他IP整合形成一个可加载的FPGA程序,仪表的某一特定功能被封装为一个个工具,驱动是FGPA硬件和Linix之间的接口,负责工具的执行,测试程序由多个测试步组成,每个测试步调用一个仪表的一个工具,测试应用程序运行支持程序则负责应用程序的运行管理和测试驱动的管理,测试应用程序。同一个仪表的IP,在和其他不同的仪表IP组合重载入到FPGA后,其实际硬件的资源的地址可能会不同,因此需要测试应用程序运行支持软件来解析此类不同。
测试程序是基于数据的测试程序,一个测试程序就是一组数据,定义了测试步骤、测试步的执行顺序和跳转条件、每测试步使用的工具、工具的参数、工具的输入和输出数据。基于数据的程序设计的好处是可扩展性好,可移植性好,易于开发自动程序程序生成工具。
因此需要一个测试应用测序的开发环境(TDE),该TDE应该基于图形界面,类似于NI的LabView,具备用户界面友好,容易学习使用的特性。
通用测试开发环境软件(UTDE)是一个运行在PC上的软件,用于产生基于数据架构的应用测试程序,测试程序的运行目标可以是PC,也可以是Linix的嵌入式系统。
本申请人发现现有技术中至少存在以下技术问题:现有的测试程序只能对现有的程序进行测试,但是程序的开发耗时较长且开发成本高。
发明内容
本发明的目的就在于为了解决上述问题而提供一种基于数据结构的测试程序的定义和应用方法,以解决现有技术中现有的测试程序只能对现有的程序进行测试,但是程序的开发耗时较长且开发成本高等技术问题。本发明提供的诸多技术方案中优选的技术方案具有:能够通过图形化的截面和数据填表的方式,调用特定的工具程序段,从而使程序的自动开发成为可能,降低程序的开发难度,提高程序的开发效率等技术效果,详见下文阐述。
为实现上述目的,本发明提供了以下技术方案:
本发明提供的一种基于数据结构的测试程序的定义和应用方法,包括测试程序的通用开发环境、测试程序执行管理模块、人机交互界面模块和仪表驱动组;
所述通用开发环境运行于上位机上,用于实现产生、编辑、调试和发布测试程序;
所述测试程序执行管理模块用于使用程序数据,并通过程序数据调用对应的仪表驱动代码进行测试工作;
所述人机交互界面模块用于测试程序运行结果的显示和人机交互输入参数和控制程序执行的启停和选择控制程序的执行方式;
所述仪表驱动组为驱动代码和数据结构的集合,所述驱动代码由面板代码和功能代码组成,所述功能代码用于根据工具的参数执行测试功能,所述面板代码为图形化的编辑界面,所述面板代码用于设置工具的参数;
所述工具由工具身份识别号和工具参数组成,所述工具身份识别号为工具的标识,所述工具参数为测试功能执行所需的参数设置。
作为优选,所述测试程序由一个程序头数据结构和多个程序步数据结构组成。
作为优选,所述程序头数据结构中定义了测试程序所需要测试系统配置和程序中测试步的数量,所述测试系统配置中定义了对应所述仪表驱动组的仪表资源。
作为优选,所述程序步分为控制程序步和测试功能步,所述控制程序步用于定义程序执行流程的控制,所述测试功能步用于执行具体的测试功能。
作为优选,所述测试功能步包括所述工具的数据结构和端子的数据结构,所述端子为所述工具参数的引出和封装。
作为优选,所述控制程序步之间通过所述端子连接,所述端子定义所述控制程序步在运行的所述人机交互界面的输入输出格式。
作为优选,所述仪表驱动组由多个工具驱动代码组成,所述工具驱动代码分为功能代码和面板代码,所述面板代码实现图形化设置工具面板,所述功能代码为实现工具功能的工具参数。
作为优选,每组所述测试程序均对应一组测试系统和测试系统注册表,所述测试系统注册表用于定义测试程序运行系统的仪表组成。
作为优选,所述驱动系统、所述测试程序、所述仪表驱动组内包含的驱动程序、工具和端子均设置有对应且特定的身份标识。
有益效果在于:本发明通过对程序体各层次数据结构的定义、程序开发和使用环境的实现,配合对数据结构使用方法的设计,实现了基于数据结构的测试程序的定义和应用,从而使通过图形化的截面和数据填表的方式,调用特定的工具程序段,从而使程序的自动开发成为可能,降低程序的开发难度,提高程序的开发效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的图形化人机界面(GUI)类的Run()过程调用各个层次的类的方法过程流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
参见图1所示,本发明提供了一种基于数据结构的测试程序的定义和应用方法,包括测试程序的通用开发环境、测试程序执行管理模块、人机交互界面模块和仪表驱动组;
测试程序即实现特定的测试任务的一段结构化的数据,该结构化的数据可以被程序执行环境的程序所使用,从而完成测试任务。测试程序的功能是通过一个个不同的工具来完成的,工具是指测试功能的基本单元,其对应于测试仪表或算法的一项测试执行动作或者一段测试算法的代码,工具数据结构包括工具识别号(ID)和工具的参数组成,工具ID用来唯一地标识工具,其也是仪表驱动调用相应的功能代码,执行测试功能的依据,工具参数是测试功能执行所需的参数设置;
通用开发环境运行于上位机上,用于实现产生、编辑、调试和发布测试程序,通用开发环境是指测试程序的生成和运行环境有测试程序通用开发环境(UTDE),程序执行管理模块,人机交互界面模块和支持上述三个模块的仪表的驱动所组成,人机交互界面模块通常运行于上位机PC上,程序执行管理模块可以和人机交互界面模块运行于同一PC,也可以运行于目标系统;
通用程序开发环境是一个图形化的开发工具,可以实现产生,编辑,调试及发布测试程序的功能;人机交互界面模块用于测试程序运行结果的显示和人机交互输入参数和控制程序执行的启停及执行方式;程序执行管理模块则使用程序数据并调用仪表的驱动代码完成测试步功能的实现;仪表的驱动是代码和数据结构的集合,其以仪表的ID被唯一标识,包括了仪表所有工具的驱动代码,工具的驱动代码分为面板代码和功能代码,功能代码根据工具的参数设置来执行测试功能,面板代码则是一个图形化编辑界面,用于设置工具的参数,使用者可以以数据填表的方式来设置工具的参数;工具的功能代码和面板都是通过工具的身份识别ID被唯一的调用;
通用测试程序开发环境主要是一个图形化的编辑调试界面,在程序编辑调试界面中,每个程序步被显示为一个图标,程序步可以被剪切,复制和粘贴,每生成一个新的程序步,引导对话框会要求用户选择仪表及对应的工具的ID,在测试步的工具ID确定后,可以编辑工具的哪些参数被引出作为端子引出以及端子属性,也可以由工具ID通过调用工具驱动的面板代码来设置工具的参数;
测试程序执行管理模块用于使用程序数据,并通过程序数据调用对应的仪表驱动代码进行测试工作,具体的测试程序执行管理模块执行环境使用的方法为是指:所有的概念实体如测试系统,仪表,工具,程序,程序步,端子等都被用身份识别ID唯一的标识,并以身份识别ID作为引用和调用其资源的唯一的依据;人机交互界面模块对每个程序步的端子数据结构进行处理,依据端子结构中对于GUI输入输出的定义在GUI上输入参数或者显示结果,由于每个端子都关联到工具的一个参数,因而人机交互界面模块对端子的处理实际上完成了工具参数的输入和工具执行结果的显示;程序执行管理模块则读取程序中每个测试步的工具ID,并依据工具ID去调用仪表驱动中相应的功能执行代码,并将工具数据结构中的参数传递给执行代码来完成测试任务,在测试程序运行的目标系统中,存在仪器注册表定义了该系统有哪些仪表,也就定义了目标系统上有哪些驱动;对于每一个仪表的驱动,都有一个工具注册表,通过工具注册表,可以获得工具的ID和相应面板及功能驱动代码的入口地址;通用测试程序开发环境主要就是一个图形化的编辑调试界面,在程序编辑调试界面中,每个程序步被显示为一个图标,程序步可以被剪切,复制和粘贴,每生成一个新的程序步,引导对话框会要求用户选择仪表及对应的工具的ID,在功能测试步的工具ID确定后,可以由工具ID通过调用工具驱动的面板代码来设置工具的参数,同时也可以编辑工具的哪些参数被引出作为端子引出以及端子属性;
执行管理模块读取程序中每个测试步的工具ID,并依据工具ID去调用仪表驱动中相应的功能执行代码,并将工具数据结构中的参数传递给执行代码来完成测试任务;
人机交互界面模块用于测试程序运行结果的显示和人机交互输入参数和控制程序执行的启停和选择控制程序的执行方式,人机交互界面模块对每个程序步的端子数据结构进行处理,依据端子结构中对于图形化人机交互界面GUI输入输出的定义在GUI上输入参数或者显示结果,由于每个端子都关联到工具的一个参数,因而人机交互界面模块对端子的处理实际上完成了工具参数的输入和工具执行结果的显示;
仪表驱动组为驱动代码和数据结构的集合,驱动代码由面板代码和功能代码组成,功能代码用于根据工具的参数执行测试功能,面板代码为图形化的编辑界面,面板代码用于设置工具的参数,使用者可以以数据填表的方式来设置工具的参数;工具的功能代码和面板都是通过工具的ID被唯一的调用;
工具由工具身份识别号和工具参数组成,工具身份识别号为工具的标识,工具参数为测试功能执行所需的参数设置。
作为可选的实施方式,测试程序由一个程序头数据结构和多个程序步数据结构组成;
程序头数据结构中定义了测试程序所需要测试系统配置和程序中测试步的数量,测试系统配置中定义了对应仪表驱动组的仪表资源;
程序步分为控制程序步和测试功能步,控制程序步用于定义程序执行流程的控制,测试功能步用于执行具体的测试功能。
测试功能步包括工具的数据结构和端子的数据结构,端子为工具参数的引出和封装,工具数据结构为核心的分层数据结构的定义的方法,是指测试程序数据结构由程序头,程序步,和工具三层数据结构,每层的实体都有相应的身份识别号(ID)来识别;每个程序都是由程序头结构和多个测试步数据结构组成,程序头数据结构中定义了测试程序所需要测试系统配置和程序中测试步的数量,测试系统配置中定义了仪表资源,每个仪表都以仪表ID来标识;程序步分为控制程序步和测试功能步,控制程序步用于定义程序执行流程的控制,比如有条件循环或者跳转,每个测试功能步都包含着一个工具的数据结构和端子的数据结构,端子是对工具的参数的引出和封装,对于每个端子,需要指定其关联到工具的哪一个参数,可以定义不同程序步间端子的关联关系以实现程序步间数据的传递,可以定义端子的输入输出方式以实现从图形化人机界面(GUI)获取端子所关联参数的数值或者将端子关联的参数输出到GUI中;;
控制程序步之间通过端子连接,端子定义控制程序步在运行的人机交互界面的输入输出格式;
仪表驱动组由多个工具驱动代码组成,工具驱动代码分为功能代码和面板代码,面板代码实现图形化设置工具面板,功能代码为实现工具功能的工具参数;
每组测试程序均对应一组测试系统和测试系统注册表,测试系统注册表用于定义测试程序运行系统的仪表组成;
驱动系统、测试程序、仪表驱动组内包含的驱动程序、工具和端子均设置有对应且特定的身份标识。
实施例一:
如图1所示,通用测试程序生成系统(UTDE)对本发明的实施例作进一步描述,下面描述中对于数据结构的描述采用了C++语言的描述方法:
1:通用测试程序生成系统概述
基于数据的测试程序生成系统包括下面模块
1)主界面窗口和系统管理,主程序的产生,调试管理模块;
2)主程序和测试步产生的编辑,维护模块;
3)工具编辑,维护模块;
4)程序发布模块;
5)目标系统运行支持模块;
6)系统配置管理模块。
对于测试程序,其生命周期包括程序的产生,编辑,调试,运行和维护,由于测试程序是基于数据的,因此可以采用面向对象的程序设计方法,将程序的数据和其产生,使用和维护的方法封装在一起成为各种不同的类。测试程序由测试步组成,测试步中封装了工具,因此系统可分为两个层次,一个是测试步相关的数据和方法,另外一个则是工具相关的数据和方法。UTDE主要是完成和测试步相关的功能,既1,2,4模块。3,5模块,既工具的编辑维护和以及目标系统的运行支持模块则和目标系统相关,目标系统可以是运行Widows的PC系统,也可以是运行Linix的嵌入式系统。
无论是PC系统还是嵌入式系统,目标系统运行支持模块都包括两个部分
1)运行过程管理模块,读取并解析数据化的测试程序,调用仪表驱动中的工具的执行函数,控制程序执行的流程,如果运行在嵌入式系统上,并同上位机通信上报测试结果,或如果是运行在PC端,则将测试结果报告给实时运行的GUI。
2)仪表驱动程序,负责驱动具体的硬件实现具体的测试功能。仪表驱动分为工具包模块和硬件接口模块,工具包模块是对于硬件支持的功能进行组合,以成为完成特定任务的工具,同时完成和硬件相关的输入输出数据的缓冲,处理和运算,参数的解析等。硬件接口则完成对于硬件寄存器的读写操作。对于一个FI系统,无论是基于PC的系统,还是基于Z7000Linix的系统,当系统硬件配置改变后,对于某一特定仪表的寄存器的访问,由于其寄存器的地址空间可能发生改变,因此存在寄存器寻址重定位的问题,需要使用一张表来建立寄存器实际物理地址和逻辑地址之间的映射关系。该表由系统配置管理模块产生,并在系统初始化时,由目标系统运行支持模块读取该表并对相应的逻辑指针予以赋值,以使其指向实际的物料地址。
在系统软件设计时,对于系统中用到的资源,从测试步,工具到硬件的寄存器都使用一个逻辑ID或者名称来唯一的进行标识,此标识是资源在不同模块中被使用的标识依据。当系统创建了一个资源时,也就在ID空间占用了一个ID。需要使用ID来标识软硬件资源有:
1)软件系统模块;
2)某一测试程序,子程序;
3)测试步;
4)某一测试系统配置;
5)某一测试仪表驱动;
6)工具;
7)寄存器等硬件资源;
8)系统变量,用户定义的变量。
资源的ID在该资源被创建时被唯一的分配后,就作为资源的唯一标识使用,利用这唯一的标识,可以实现不同层次,层级之间资源的相互关联,比如某一测试系统配置了什么样的仪表,某一类型的测试仪表提供了多少工具,而这些工具在执行是需要访问什么寄存器等。这些资源间的关联关系都可以使用资源ID的关联表来表示。
在开发时,面向对象的类的构建也可以按照资源类型和资源ID来构建,比如测试步可以构建一个测试步类,而不同ID的工具则构建不同的工具类。
由于测试程序是基于数据的,在使用了资源ID后,目标系统中的运行管理程序就可以根据ID来方便的调用相应的模块,使用相应的资源。比如在某一测试步,使用某一工具来完成相应的测试,在程序执行时则根据ID来调用相应仪表的驱动中的相应程序段。程序段则根据寄存器ID去寻址真真的物理地址。
测试程序数据在调试模式时以松散的方式来存在的,既测试程序表现为多个文件的形式,以方便于调试系统模块软件的开发,而在程序发布后测试程序则是以紧凑的方式来存在,以提高运行效率。
2:程序的主要数据结构
当一个程序被打开后,在内存中各个类的骨干结构如下
2.1测试主程序类(PC内存中,UTDE环境下)
2.2测试步类
3:目标系统运行管理
在UDTE下开发的程序的测试步,或者运行于PC或者嵌入式的目标系统上,运行于PC上时,虚拟面板运行显示模块判定该测试步是否是运行于PC,如果是运行于嵌入式的目标系统上,则由虚拟面板运行显示模块和目标系统运行管理模块一起会话交互完成程序步的执行。
目标运行管理模块运行于目标系统的Linix系统上,完成以下任务
1)和主机系统的会话管理,会话类型有配置任务会话,执行任务会话
2)配置任务会话需要完成的功能有
a.接收并解析上位机的配置任务指令
b.接收系统硬件配置数据(FPGA配置数据)
c.调用系统硬件配置程序执行配置
d.接收并安装仪表驱动,或更新驱动
e.接收并安装测试程序,或者更新测试程序
f. 根据指令删除测试程序
3)执行任务会话需要完成的任务有
a.接收上位机的指令及指令数据
b.根据指令执行单步程序步或者程序块
c.更具程序报告程序步执行的结果
4)系统的开机管理
UTDE和上位机和目标系统之间通过下面两类数据结构进行交互:
3.1运行命令类
在系统调试或者运行时,主机和目标系统之间组成了一个主从机系统,主机和目标系统之间通过串行通信端口进行交互;
4:虚拟面板运行显示
虚拟面板运行显示模块的作用是提供程序的GUI给用户,对于某一特定的测试系统,用户可以通过编辑资源面板的方式编辑自己喜爱的虚拟面板。用户也可以利用UTDE下的系统函数使用C++来开发自己的更为客户化的虚拟面板程序;虚拟面板运行显示模块可以是单独执行的EXE,也可以是能被其他程序调用的Dll。虚拟面板运行显示模块被调用是带参数的,参数既程序名。
5:仪表驱动
仪表驱动
仪表驱动包括三个部分
1)工具注册表,用于注册仪表的工具,包括工具的ID,功能描述,工具的参数描述,工具的过程函数调用入口等信息。
2)工具的参数处理,包括用于编辑和用于执行的两部分,编辑部分用于在UTDE下编辑设置参数,执行部分用于在可执行的代码和基于数据的程序步之间的接口,完成测试步数据和执行代码函数参数之间的相互转换工作。
3)执行代码部分,用于实现工具的功能。
如果仪表是嵌入式系统,则仪表的驱动分为两个部分,一块是运行于PC之上,用于支持UTDE下的工具面板功能。另一部分则是运行于嵌入式的系统之上,执行硬件动作,完成功能。
4)硬件资源描述表和再入表及再入程序,驱动程序中的硬件资源的索引都是逻辑地址,在目标系统上的仪表组合不同时,其实际物理地址可能会变化,因此需要在仪表的驱动程序调入内存时执行再入代码,将逻辑地址和实际的物理地址关联起来。
6:系统各模块功能和主要实现方法描述:
基于柔性仪表和UTDE搭建的测试系统,系统的功能模块有:
UTDE端
1)UTDE主框架模块,包括主菜单和程序调试结果显示窗口
2)测试程序编辑器模块
3)仪表驱动PC端模块
4)测试程序管理模块,包括测试程序的创建,保存,打开及发布
5)程序运行显示虚拟面板模块
6)会话和通道管理模块
7)测试系统配置管理模块
目标系统端
1)VI接口模块
2)运行管理模块
3)仪表驱动目标系统端
4)系统配置管理模块
5)会话管理模块
6.1:UTDE主框架模块
UTDE主框架模块,包括主菜单和程序调试结果显示窗口,UTDE的主框架使用MFC类来构建,包括一个主菜单框架和一个View类的窗口;View类的窗口用于显示程序在调试运行时的结果。菜单框架有文件管理菜单,系统管理菜单,通道管理菜单,目标系统配置菜单。
系统管理菜单用于设置UTDE的运行属性和环境,如用户权限,是否脱机运行,调试时显示窗口。如果系统设置为非脱机运行,则UTDE在启动时,需要调用通道检测模块,报告通道状态。
文件管理菜单调用文件管理模块中的各种方法以完成测试程序的创建,打开,保存和发布的功能。在创建一个新的测试程序时,有一个引导对话框来让用户来选择测试系统,一个测试程序只能基于某一特定的测试系统来构建。
在用户新建一个程序时,系统会打开一个测试系统配置注册文件让用户来选择程序开发所基于的测试系统
6.2:测试程序编辑器模块
测试器编辑器由一个工具栏和一个编辑窗口组成。
工具栏的工具有
New:生成一个新的程序步或变量,当按下new时,启动一个引导的Wizard,先从仪表列表中选择仪表,仪表列表来自测试系统配置中,仪表列表的前两项是变量选项,在选择了仪表后或变量后,再选择工具,则生成一个新的测试步兵在当前选择的测试步后方自动显示其图标。
CUT:删除当前选中的测试步
Copy:复制当前选中的测试步到粘贴板
Paste:将粘贴板中的测试步复制到当前选中测试步的后方
EDIT:编辑当前测试步,首先选择测试步,在按下EDITButton后,弹出对画框选择是addTerminal,deleteterminal,或者是Editproperty。如果选择EditProperty,则引导到工具的编辑面板。如果是选择AddTerminal,则引导到工具的参数列表,在选择了参数后,则继续选择端子的属性,如是输入端子,输出端子,还是或者端子关联到变量。
BreakPoint:将当前测试步设置为断点,如果已经是断点,则取消断点。
当鼠标的光标在程序编辑窗口区时,上述的功能可以从鼠标右键功能中唤起。鼠标右键还有BlockStart和BlockEnd,用于设置调试块执行的起点和终点。
STEP:调试时单步执行
EXCUTE:调试连续执行,可以选择执行标记的块,可以设置连续执行的次数,可以设置执行的起始和终止的测试步;
在编辑窗口区域内,程序测试步和显示端子以图标的方式从上到下顺序显示,端子之间的链接关系用不带箭头的连线来表示,输入和输出端子自带箭头表示其方向。程序执行的跳转关系用带箭头的粗线来表示。
当鼠标滑动到测试步或者其端子的显示区域时,自动显示端子或者测试步的相关信息。
可以通过按住鼠标左键来拖动测试步图标的方式来移动测试步在程序中的位置,同时表示端子间链接关系的连线自动跟随变动。如果该程序步是控制程序步,则表示跳转关系的连线也跟着变动,如果该程序步是控制程序步的目标步,该程序步被移动后,则目标步变为移动前其后面的一步。
6.3仪表驱动PC端模块
在测试系统的PC端,有一张系统仪表驱动注册表,仪表驱动注册表列出了在PC端安装的所有的驱动。对于每个仪表的驱动其包括仪表工具注册表和DLL两部分。
工具注册表以包括下面内容
如果目标系统是嵌入式系统,则在PC端的驱动中不包括RUN()的方法,在运行时由STEP类或者Program的方法调用Tool的INPUT_TERMINAl或者OUTPUT_TERMINAL的方法进行数据过滤打包,然后发送到目标系统。
一个测试系统的构成可以包括按照FI架构构建的仪表,也可以有传统的台式仪表,以及NI的板卡或者PXI仪表,对于传统的台式仪表或者VI,有三种处理方法,第一种办法是对每一个仪表开发基于FI的驱动,第二种方法则是基于VISA的应用,第三种则是直接调用。
如果对于一个传统仪表或者VI仪表,由于其基于PC的驱动已经存在,因此只需要对于仪表原来的驱动的DLL来进行封装就可以构建一个FI的驱动,封装需要进行的工作有:
1)对原有仪表的功能进行分析,将仪表的功能分隔为多个工具,定义每个工具的功能和参数。
2)为每个工具开发面板函数;端子处理函数;
3)为每个工具开发执行函数,执行函数直接调用原来驱动DLL中的函数。
4)为仪表驱动开发调用入口处理函数。
由于存量的仪表数量很多,如果对于每一款仪表都开发驱动,则工作量很大。由于绝大部分传统仪表都支持VISA机制,作为一种通用方法,可以将VISA机制封装成FI下的驱动,将VISA的每一种命令格式都封装成一种工具,对于VISA机制,其执行的FI的通道号为0。
如果测试程序已经开发好,则可以利用COM机制,直接调用已开发好其他类型程序,如基于LabView的VI程序。
6.4测试程序管理模块
测试程序管理模块,包括测试程序的创建,保存,打开及发布;测试程序的创建,打开和保存都是在MFC的Document类下的服务程序中实现
程序发布是将基于数据的程序拆分为在PC上运行的和在目标系统上运行的几部分,有几个目标系统,则在目标系统运行的程序就有几份。系统规定,基于FI构建的目标系统的通道号从1000开始。1000以下的通道号用于在PC上运行的仪表。
6.5程序运行显示虚拟面板模块
程序运行和显示虚拟面板模块是一个相对独立的模块,其可以作为一个EXE程序独立运行,或者作为一个DLL被其他程序调用。具体见前节的描述。
在程序运行时,GUI类的Run()过程调用各个层次的类的方法过程如图1所示。
在程序运行时,打开了一个程序运行会话,由于在传输给目标系统的数据结构中包含了目标系统中需要返回的信息,则目标系统在执行完一个程序步后即返回了结果。
6.6会话和通道管理模块
会话和通道管理模块执行下面几项功能
1)通道资源配置,PC检测可用的通道资源,并以列表方式显示,用户需要为使用的通道分配通道号。通道是个虚拟的概念,对于每个通道都对应着一个具体的PC的IO资源,是PC比如是串口或者是网口,对于每个通道,有PC层的驱动来实现数据的收发,因此需要通道驱动程序将对于通道的操作映射为对于PC的IO的具体操作。比如通道3如果是网口,则要调用网口的socket操作,如果是串口,则要调用COM口的读写操作。当系统在执行通道的读写操作时,需要查询通道配置表,将操作引导到具体的物理通道。
2)会话管理
在通道概念的基础上,就可以构建会话,每个会话都有建立,保持以及解除的三个过程。会话有三种类型程序运行会话,目标系统检查会话,以及目标系统配置会话。
6.7测试系统配置管理模块
系统配置模块实现下面的功能
1)生成,管理系统配置表
这一功能通过Test_System_Reg类来实现
2)依据系统配置表,管理系统驱动资源
这一功能通过Instrument_Reg类来实现
3)执行系统配置会话
系统配置会话包括三个步骤,一是发命令给目标系统,使得目标系统进入到配置状态。二是传送配置数据给目标系统,三是要在发命令给目标系统执行配置的过程。
4)以仪表驱动的硬件描述表和硬件IP开发工具的输出描述为输入,生成驱动的硬件资源再入表。
对于每一个仪表,都有一个目标系统的IP,这些IP需要在目标系统专用的开发工具中重新编辑,生成新的配置数据文件。如果是新开发的仪表,同时需要开发新的仪表的驱动,同时要编辑新的目标系统的仪表列表。对于已有的仪表驱动,虽然仪表设计相同,但是在重编译后,仪表的硬件寄存器的地址可能已经变化,因此需要重新生成该仪表的硬件资源重入表。
6.8程序发布模块
UTDE的产生的程序中含有大量的程序调试和运行时显示面板的信息,而这些信息是目标系统所不需要的,需要程序发布模块对其进行简化。
在UTDE环境下,完成了程序调试后,需要利用程序发布模块对程序进行发布,程序发布模块一方面产生基于数据的运行于目标系统上面的程序,同时也生成程序的虚拟面板模块显示程序执行结果格式化数据以及运行于PC的主程序。
运行于目标系统上的程序的数据结构,与运行于PC上的数据结构相兼容,这样可以做到在目标系统上存储开销最小化,代码也可重用。目标系统上的程序是由一个一个程序块组成。
6.9虚拟仪表VI接口模块
VI接口模块的作用是提供FI仪表系统和NI公司的虚拟仪表系统之间的兼容性,其实现方法是将目标系统的仪表驱动再次打包形成一个新的接口,此接口的驱动和NI的LabView系统兼容,可以被上级PC的NILabView系统使用,接口收到上级系统的命令后,则根据命令的数据结构调用相应工具的run过程,实现仪表的功能。上级VI系统传递给目标系统的命令的数据格式为SCPI格式的命令,也可以为非SCPI格式的,对于非SCPI格式:
因此为了减少工作量,FI仪表的工具在命令和参数格式上,应该尽量做到和SCPI格式的兼容。
6.10运行管理模块
嵌入式的目标系统上电后,自动进入到等待命令的状态,此时系统可以接收VI格式的命令,此时需要上位机发送命令给目标系统,建立起FI的一个会话过程,系统才进入到FI工作模式。如果建立的会话过程是运行会话,则调用运行管理模块运行本地存储程序或者运行上位机传递来的程序块。
在运行时,运行管理模块首先对上位机传递来的数据进行解析,根据程序块头中的标准判断目标系统是运行在调试模式下还是在运行模式下,如果是在运行模式下则将本地程序与上位机传来的入口端子数据结合,依次调用工具的Input_Terminal,Run和Output_Terminal的过程,完成执行。如果是在调试模式下执行,则程序完全使用上位机传递来的程序块数据,调用RUN过程来完成,在调试模式下,所有控制程序步都是由上位机来完成,但是可以一次传递一个程序块的数据。在运行模式下,控制程序步可以由本地来执行。
如果上位机是在运行模式下,则上位机打开一个程序时,会通知下位机做一个简单的目标系统的故障诊断,以确保目标系统是在一个良好的状态,如果下位目标系统状态良好,则打开相应的测试程序,既将测试程序从SD或硬盘中调入到内存中。
6.11仪表驱动目标系统端
在目标系统中,有一个系统仪表注册表,既目标系统上有多少种仪表设置,对于每一个仪表都有一个工具注册表,这个工具注册表和在PC端的是类似的。当系统开机后,会根据系统仪表注册表将驱动调入到内存中。驱动包括了工具的Input_Terminal,Output_Terminal和Run的过程,和PC端的驱动一样,也有入口映射调用函数。
6.12系统配置维护管理模块
在上位机发送了配置会话或者维护会话指令,目标系统和上位机之间建立了维护会话或者配置会话的过程。维护会话是根据系统的仪表配置去调用每个仪表的自检程序,去确认每个仪表的工作状态。配置会话则是接受上位机的配置数据和驱动,调用系统的配置程序执行配置,然后自启动。
6.13会话管理模块
嵌入式的目标系统上电后,自动进入到等待命令的状态,此时系统可以接收VI格式的命令,此时需要上位机发送命令给目标系统,建立起FI的一个会话过程,系统才进入到FI工作模式。
通过对程序体各层次数据结构的定义、程序开发和使用环境的实现,配合对数据结构使用方法的设计,实现了基于数据结构的测试程序的定义和应用,从而使通过图形化的截面和数据填表的方式,调用特定的工具程序段,从而使程序的自动开发成为可能,降低程序的开发难度,提高程序的开发效率。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (9)
1.一种基于数据结构的测试程序的定义和应用方法,其特征在于:包括测试程序的通用开发环境、测试程序执行管理模块、人机交互界面模块和仪表驱动组;
所述通用开发环境运行于上位机上,用于实现产生、编辑、调试和发布测试程序;
所述测试程序执行管理模块用于使用程序数据,并通过程序数据调用对应的仪表驱动代码进行测试工作;
所述人机交互界面模块用于测试程序运行结果的显示和人机交互输入参数和控制程序执行的启停和选择控制程序的执行方式;
所述仪表驱动组为驱动代码和数据结构的集合,所述驱动代码由面板代码和功能代码组成,所述功能代码用于根据工具的参数执行测试功能,所述面板代码为图形化的编辑界面,所述面板代码用于设置工具的参数;
所述工具由工具身份识别号和工具参数组成,所述工具身份识别号为工具的标识,所述工具参数为测试功能执行所需的参数设置。
2.根据权利要求1所述一种基于数据结构的测试程序的定义和应用方法,其特征在于:所述测试程序由一个程序头数据结构和多个程序步数据结构组成。
3.根据权利要求2所述一种基于数据结构的测试程序的定义和应用方法,其特征在于:所述程序头数据结构中定义了测试程序所需要测试系统配置和程序中测试步的数量,所述测试系统配置中定义了对应所述仪表驱动组的仪表资源。
4.根据权利要求3所述一种基于数据结构的测试程序的定义和应用方法,其特征在于:所述程序步分为控制程序步和测试功能步,所述控制程序步用于定义程序执行流程的控制,所述测试功能步用于执行具体的测试功能。
5.根据权利要求4所述一种基于数据结构的测试程序的定义和应用方法,其特征在于:所述测试功能步包括所述工具的数据结构和端子的数据结构,所述端子为所述工具参数的引出和封装。
6.根据权利要求5所述一种基于数据结构的测试程序的定义和应用方法,其特征在于:所述控制程序步之间通过所述端子连接,所述端子定义所述控制程序步在运行的所述人机交互界面的输入输出格式。
7.根据权利要求1所述一种基于数据结构的测试程序的定义和应用方法,其特征在于:所述仪表驱动组由多个工具驱动代码组成,所述工具驱动代码分为功能代码和面板代码,所述面板代码实现图形化设置工具面板,所述功能代码为实现工具功能的工具参数。
8.根据权利要求1所述一种基于数据结构的测试程序的定义和应用方法,其特征在于:每组所述测试程序均对应一组测试系统和测试系统注册表,所述测试系统注册表用于定义测试程序运行系统的仪表组成。
9.根据权利要求1所述一种基于数据结构的测试程序的定义和应用方法,其特征在于:所述驱动系统、所述测试程序、所述仪表驱动组内包含的驱动程序、工具和端子均设置有对应且特定的身份标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810759397.0A CN108959094B (zh) | 2018-07-11 | 2018-07-11 | 一种基于数据结构的测试程序的定义和应用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810759397.0A CN108959094B (zh) | 2018-07-11 | 2018-07-11 | 一种基于数据结构的测试程序的定义和应用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108959094A true CN108959094A (zh) | 2018-12-07 |
CN108959094B CN108959094B (zh) | 2022-04-12 |
Family
ID=64483825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810759397.0A Active CN108959094B (zh) | 2018-07-11 | 2018-07-11 | 一种基于数据结构的测试程序的定义和应用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108959094B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112367234A (zh) * | 2020-10-27 | 2021-02-12 | 深圳力维智联技术有限公司 | 模拟数据生成方法、终端设备及计算机可读存储介质 |
CN114398102A (zh) * | 2022-01-18 | 2022-04-26 | 杭州米络星科技(集团)有限公司 | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 |
CN114911474A (zh) * | 2022-07-18 | 2022-08-16 | 中国空气动力研究与发展中心低速空气动力研究所 | 一种基于计算模块的数据处理方法、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609341A (zh) * | 2011-07-08 | 2012-07-25 | 李康 | 硬件设备自动化测试系统及其测试方法 |
CN103109275A (zh) * | 2010-09-07 | 2013-05-15 | 爱德万测试(新加坡)私人有限公司 | 在半导体测试环境中使用虚拟仪器的系统、方法和设备 |
CN106598601A (zh) * | 2016-12-15 | 2017-04-26 | 太仓市同维电子有限公司 | 一种基于无线测试平台的仪器模块程序编写方法 |
-
2018
- 2018-07-11 CN CN201810759397.0A patent/CN108959094B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103109275A (zh) * | 2010-09-07 | 2013-05-15 | 爱德万测试(新加坡)私人有限公司 | 在半导体测试环境中使用虚拟仪器的系统、方法和设备 |
CN102609341A (zh) * | 2011-07-08 | 2012-07-25 | 李康 | 硬件设备自动化测试系统及其测试方法 |
CN106598601A (zh) * | 2016-12-15 | 2017-04-26 | 太仓市同维电子有限公司 | 一种基于无线测试平台的仪器模块程序编写方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112367234A (zh) * | 2020-10-27 | 2021-02-12 | 深圳力维智联技术有限公司 | 模拟数据生成方法、终端设备及计算机可读存储介质 |
CN112367234B (zh) * | 2020-10-27 | 2022-04-29 | 深圳力维智联技术有限公司 | 模拟数据生成方法、终端设备及计算机可读存储介质 |
CN114398102A (zh) * | 2022-01-18 | 2022-04-26 | 杭州米络星科技(集团)有限公司 | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 |
CN114398102B (zh) * | 2022-01-18 | 2023-08-08 | 杭州米络星科技(集团)有限公司 | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 |
CN114911474A (zh) * | 2022-07-18 | 2022-08-16 | 中国空气动力研究与发展中心低速空气动力研究所 | 一种基于计算模块的数据处理方法、设备及存储介质 |
CN114911474B (zh) * | 2022-07-18 | 2022-10-25 | 中国空气动力研究与发展中心低速空气动力研究所 | 一种基于计算模块的数据处理方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108959094B (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107807878B (zh) | 基于关键字的通用测试资源驱动与执行管理方法 | |
Navarre et al. | A tool suite for integrating task and system models through scenarios | |
US5784275A (en) | System and method for performing interface independent virtual instrumentation functions in a graphical data flow program | |
CN101521899B (zh) | 用于移动应用程序的机上测试系统和方法 | |
US5847953A (en) | System and method for performing class checking of objects in a graphical data flow program | |
CN105608258B (zh) | 一种基于模型的系统设计及信息流可视化仿真系统及方法 | |
CN106569801A (zh) | 一种基于复杂参数的组态化显控系统 | |
US5905649A (en) | System and method for performing type checking and class propagation of attributes in a graphical data flow program | |
CN108959094A (zh) | 一种基于数据结构的测试程序的定义和应用方法 | |
CN110362490B (zh) | 融合iOS与Android移动应用的自动化测试方法及系统 | |
US20060020931A1 (en) | Method and apparatus for managing complex processes | |
CN104915297B (zh) | 一种android设备的APP耗电量的自动化测试方法 | |
CN102916848B (zh) | 一种基于脚本技术的以太网接口设备的自动测试方法 | |
CN111190598A (zh) | 基于控件库拖拽式开发的燃机监控软件画面组态方法 | |
CN100555219C (zh) | 原子操作封装装置和方法 | |
CN100437513C (zh) | 实现自动测试的方法与系统 | |
CN115756424A (zh) | 一种生成mvp代码的方法、装置及设备 | |
EP1171774A2 (en) | Interface independent test system | |
CN107577521A (zh) | 一种虚拟资源管理方法及装置 | |
CN113505054B (zh) | 一种无人机控制站的网络数据静态测试系统和测试方法 | |
CN114020273A (zh) | 一种复杂系统软件集成方法 | |
US20010041972A1 (en) | Transaction class | |
CN115391174A (zh) | 一种自动化软件测试平台 | |
CN110764479B (zh) | 基于dds的多智能体中间平台系统及其控制方法 | |
CN114189534A (zh) | 一种物联网系统中设备交互软件仿真程序的设计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |