本发明涉及测试领域,更具体地说,涉及一种终端测试装置、终端测试设备及变量维护方法。
背景技术:
当前无线终端测试工具,一般使用C/C++开发,由于其开发语言本身的特性,在软件开发过程中都会或多或少使用全局变量,特别是对于开发规模越大(上百万行代码)的开发项目,几乎不可避免地会使用全局变量。而当其所开发的工具软件用在无线终端测试环境中时,其所面向的又涉及到各种的测试设备和终端,如给仪器发送命令的GPIB指令的设备句柄,终端端口的操作接口指针,特定平台的各封装库的接口对象等全局变量。全局变量效率高效,但是对于全局变量繁多且没有统一有效的管理时,在不同开发者中使用的时候,很容易出现某些全局变量被无意篡改或被重复定义,导致全局变量调用出错,因而现实情况中由于全局变量使用不正确而导致软件Bug甚至测试失败的情况屡见不鲜。
技术实现要素:
本发明要解决的技术问题在于:解决现有全局变量调用容易出错的问题,针对该技术问题,提供一种终端测试装置、终端测试设备及变量维护方法。
为解决上述技术问题,本发明提供一种终端测试装置,包括:
变量设置模块,用于接收到设置变量请求时,获取请求设置的全局变量的变量标识、变量类型以及变量内容,根据所述变量类型从转换函数库中匹配出对应的设置转换函数,通过所述设置转换函数将所述变量内容转换成预设的目标格式后,调用预设变量设置接口,将转换后的变量内容与所述变量标识绑定存储到变量数据库中;
变量清单管理模块,用于接收设置的全局变量的变量名和变量标识并写入变量声明头文件中,所述变量声明头文件中各全局变量的变量名和变量标识各不相同。
可选地,终端测试装置还包括:
变量导出模块,用于接收到变量导出请求时,获取请求导出的全局变量的变量标识和变量类型,将所述变量标识作为索引在所述变量数据库中查找对应的变量内容,并根据所述变量类型从所述转换函数库中匹配出对应的导出转换函数,调用所述导出转换函数将所述变量内容由所述目标格式转换为所述变量类型对应的原格式后,调用预设变量输出接口将得到的变量内容输出。
可选地,所述目标格式包括字符串和字节串,所述变量设置模块包括:
设置信息获取单元,用于设置变量请求时,获取请求设置的全局变量的变量标识、变量类型以及变量内容;
设置类型判断单元,用于判断所述变量类型包含的类型种数是否小于等于预设N值,所述N大于等于1;
设置转换控制单元,用于在所述判断结果为是时,从所述转换函数库中调用与所述变量类型匹配的字符串设置转换函数,将所述变量内容转换成字符串;否则,从所述转换函数库中调用字节串设置转换函数,将所述变量内容转换成字节串。
可选地,所述变量导出模块包括:
导出信息获取单元,用于根据所述变量导出请求获取请求导出的全局变量的变量标识和变量类型;
导出类型判断单元,用于判断所述变量类型包含的类型种数是否小于等于所述N值;
导出转换控制单元,用于在所述判断结果为是时,从所述转换函数库中调用与所述变量类型匹配的字符串导出转换函数,将所述变量内容由字符串格式转换为所述变量类型对应的原格式;否则,从所述转换函数库中调用字节串导出转换函数,将所述变量内容由字节串格式转换为所述变量类型对应的原格式。
可选地,还包括变量移除模块,用于接收到变量移除请求时,获取请求移除的全局变量的变量标识,根据所述变量标识在所述变量数据库中查找对应的变量内容,将查找到的所述变量内容删除;
所述变量清单管理模块还用于将所述变量声明头文件中待移除的全局变量的变量名和变量标识删除。
可选地,本发明还提供一种终端测试设备,包括如上所述的终端测试装置。
可选地,本发明还提供一种变量维护方法,包括:
接收到设置变量请求,获取请求设置的全局变量的变量标识、变量类型以及变量内容;
根据所述变量类型从转换函数库中匹配出对应的设置转换函数;
通过所述设置转换函数将所述变量内容转换成预设的目标格式后,调用预设变量设置接口,将转换后的变量内容与所述变量标识绑定存储到变量数据库中;
以及还包括将设置的全局变量的变量名和变量标识并写入变量声明头文件中,所述变量声明头文件中各全局变量的变量名和变量标识各不相同。
可选地,所述方法还包括:
接收变量导出请求,获取请求导出的全局变量的变量标识和变量类型;
将所述变量标识作为索引在所述变量数据库中查找对应的变量内容,并根据所述变量类型从所述转换函数库中匹配出对应的导出转换函数;
调用所述导出转换函数将所述变量内容由所述目标格式转换为所述变量类型对应的原格式后,调用预设变量输出接口将得到的变量内容输出。
可选地,所述方法还包括:
接收变量移除请求,获取请求移除的全局变量的变量标识;
调动变量移除接口将所述变量标识作为索引在所述变量数据库中查找对应的变量内容,将查找到的所述变量内容删除;
以及还包括将所述变量声明头文件中所述请求移除的全局变量的变量名和变量标识删除。
可选地,所述变量声明头文件中的全局变量包含用于硬件控制的硬件全局变量和用于软件控制的软件全局变量。
有益效果
本发明提供的终端测试装置、终端测试设备及变量维护方法,变量维护方法,在对全局变量进行管理时,当有新全局变量需要设置加入时,根据该全局变量的变量类型从预设的转换函数库中匹配出对应的设置转换函数,进而通过该设置转换函数将该全局变量的变量内容转换成预设的目标格式后,调用预设的变量设置接口,将转换后的变量内容以该全局变量的变量标识为索引进行存储,并将该全局变量的变量名和变量标识并写入一份变量声明头文件中,且本发明变量声明头文件中各全局变量的变量名和变量标识各不相同。本发明将各全局变量转换成预设目标格式通过统一的设置接口以变量标识为索引进行统一存储。这样使用者在使用全局变量时只需从变量声明头文件查找到与变量标识具有一一对应关系的变量名输入,即可索引到对应的变量标识进而索引到对应的变量内容,而并不需要关心具体的变量类型,对于统一变量也就不要去对齐进行修改或重新定义,能尽可能避免全局变量调用出错,进而降低在对终端测试过程中,由于全局变量使用不正确而导致软件Bug甚至测试失败的情况发生,提升用户体验的满意度。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为实现本发明各个实施例一个可选的计算机的结构示意图;
图2为本发明实施例一提供的全局变量设置过程流程示意图;
图3为本发明实施例一提供的全局变量设置时的转换过程流程示意图;
图4为本发明实施例二提供的全局变量获取过程流程示意图;
图5为本发明实施例二提供的全局变量获取时的转换过程流程示意图;
图6为本发明实施例二提供的全局变量移除过程流程示意图;
图7为本发明实施例三提供的终端测试设备结构示意图;
图8为本发明实施例三提供的终端测试装置结构示意图;
图9为图8中变量设置模块的结构示意图;
图10为本发明实施例三提供的另一终端测试装置结构示意图;
图11为图10中变量导出模块的结构示意图;
图12为本发明实施例三提供的含变量移除功能的终端测试装置结构示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。
如图1所示,为实现本发明各个实施例一个可选的计算机的结构示意图,该计算机至少在不同的应用场景可以作为服务器、测试设备使用,参见图1所示,包括:输入输出(IO)总线11、处理器12、存储器13、内存14、通信装置15。其中,
输入输出(IO)总线11分别与自身所属的计算机的其它部件(处理器12、存储器13、内存14和通信装置15)连接,并且为其它部件提供传送线路。
处理器12通常控制自身所属的计算机的总体操作。例如,处理器12执行计算和确认等操作。其中,处理器12可以是中央处理器(CPU)。
存储器13存储处理器可读、处理器可执行的软件代码,其包含用于控制处理器12执行本文描述的功能的指令(即软件执行功能)。
其中,本发明提供的消息订阅管理装置中,实现接收模块、第一确定模块、第二确定模块、存储模块、生成模块、查找子模块、创建模块、监控模块和删除模块的功能的软件代码可存储在存储器13中,并由处理器12执行或编译后执行。
内存14,一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE),RAM是其中最重要的存储器。内存14是计算机中重要的部件之一,它是与CPU12进行沟通的桥梁,计算机中所有程序的运行都是在内存中进行的,其作用是用于暂时存放CPU12中的运算数据,以及与硬盘等外部存储器交换的数据,只要计算机在运行中,CPU12就会把需要运算的数据调到内存中进行运算,当运算完成后CPU12再将结果传送出来。
通信装置15,通常包括一个或多个组件,其允许自身所属的计算机与无线通信系统或网络之间的无线电通信。
以下通过具体实施例进行详细说明。
第一实施例
本实施例中,对于各全局变量的设置、获取以及移除等操作都可以通过设置的统一的接口实现,且在全局变量设置时,将其通过对应的设置转换函数转换成预设的目标格式,并有变量标识为索引进行统一存储,并在声明文件中对各变量进行唯一声明,以便于后续使用过程中的查找和调用。通过本实施例提供的统一设置、获取等维护管理,可以尽可能避免在全局变量类型繁多的情况下,全局变量使用出错的问题。为了更好的理解本发明,本实施例分别对全局变量的设置进行示例说明。
参见图2所示,图2所示为本发明第一实施例提供的全局变量设置过程流程示意图,包括:
S201:接收设置变量请求,获取该设置变量请求所请求设置的全局变量的变量标识、变量类型以及变量内容;
S202:根据获取的变量类型从转换函数库中匹配出对应的设置转换函数;
S203:通过匹配到的设置转换函数将变量内容转换成预设的目标格式;
S204:调用预设的变量设置接口,将转换后的变量内容以变量标识为索引存储到变量数据库中。
在变量设置过程中,还包括将设置的全局变量的变量名和变量标识并写入变量声明头文件中。该步骤可以在上述步骤中的任意步骤之前、之后或同时执行。
本实施例中的变量声明头文件中各全局变量的变量名和变量标识各不相同,也即本实施例中的各全局变量在声明文件中的变量名和变量标识一一对应。本实施例中的变量名可以携带变量类型,也可以不携带。且本实施例中的变量名中可以体现全局变量的用途,以便于后续维护、查询或调用。在本实施例中的变量声明头文件中,不允许出现相同的变量名或变量标识。
传统的C/C++代码实现时,是在某个.h头文件中进行变量声明,然后在某个然后在某个.cpp文件中进行定义实现。本发明实施例在进行全局变量声明是,在一个独立的头文件中,定义一个全局变量的枚举类型,当需要一个时,也即需要设置一个全局变量时,就添加一个,也即添加该全局变量对应的变量名+变量标识。本实施例中的全局变量的声明可以不必关注变量的实际类型。例如,全局变量的枚举名字可以自行定义格式,如<前缀>+<变量用途>+<实际类型(可选)>+变量标识。
本实施例中各全局变量的变量标识只要可以唯一识别各全局变量即可,对于各变量标识的具体值可以自定义,也可以按照测试设备给出的一些既定规则(例如依次递增规则)按序设置。
另外,在终端测试环境所具有的变量类型与纯软件所面对的变量类型相比,会多出许多终端测试相关的硬件设备类型,如测试仪器,连接卡,无线终端,辅助测试电子设备等。此时本实施例中的全局变量就包含用于硬件控制的硬件全局变量和用于软件控制的软件全局变量。在本实施例中,不管是硬件全局变量,还是软件全局变量,在声明文件中全部按照上述规则进行统一的抽象和归类,实现统一管理,提升管理效率以及提升资源利用效率。基于上述抽象和分类,测试设备在运行测试工具软件时,就可以根据实际测试需求揉合各种的硬件设备变量类型和软件变量类型,协调进行相互通讯和调用,实现对应功能的测试。
本实施例中,可以是测试人员或编译人员发起变量设置请求,且在一个变量设置请求中,可以对一个全局变量进行设置,也可以同时对两个以上的全局变量进行设置。
本实施例中设置的全局变量可以是各种内置类型,例如C#语言、C/C++语言、VB语言、JAVA语言等语言的内置类型,也可以是测试人员或编译人员自定义类型。
本实施例中,转换函数库中的设置转换函数可以预先设置好,也可以在使用过程中动态添加更新。设置转换函数的作用是将对应的变量内容统一转换为预设的目标格式,以便后续统一存储、管理。本实施例中,对于各中类型的全局变量的设置转换函数的设置可以根据全局变量的实际类型灵活设置。例如,对于当前自身系统支持的各种变量类型,可以直接采用系统默认的转换方式转换成对应的目标格式。对于当前系统自身并不支持的变量类型,则需要进行偏特化处理,也即需要设置对应的设置转换函数,例如对于变量类型为str ing的全局变量,则可专门设置一个设置转换函数对这类变量设置进行转换。又例如对于byte类型也可以对齐设置一个转换函数进行格式转换,转换成目标格式。应当理解的得是,本实施例中偏特化处理的设置转换函数的设置,可以是一个转换函数对应一种变量类型,也可以是一个转换函数对应多种变量类型。
另外,应当理解的是,本实施例中的目标格式可以仅包含一种格式,也可以根据具体应用场景需求等因素灵活设置为包含多种格式。例如,本实施例中的目标格式可以包含字符串和字节串(也即二进制码)。其中字符串主要是针对全局变量结构中包含的类型种数较少的全局变量,这部分全局变量一般是内置全局变量。而字节串主要是针对全局变量结构中包含的类型种数较多的全局变量,这部分全局变量一般那些有固定大小的自定义的结构类型的全局变量。当然,应当理解的是,除了上述示例的两种目标格式外,本实施例中的目标格式的数量还可以根据实际需求进行灵活增加、删减,目标格式的类型也可以灵活的替换。下面以目标格式包括字符串和字节串为示例,对所述变量设置的转换过程进行示例说明,参见图3所示,包括:
S301:获取待设置的全局变量的变量标识、变量类型以及变量内容;
S302:判断变量类型包含的类型种数是否小于等于预设N值,N大于等于1;本实施例中可以设置N=1,或者等于2;如是,转至S303;否则,转至S304;
S303:从转换函数库中调用与变量类型匹配的字符串设置转换函数,将变量内容转换成字符串。
S304:从转换函数库中调用字节串设置转换函数,将变量内容转换成字节串。
本实施例中,对于转换后得到的字符串变量内容或字节串变量内容,通过变量设置接口调用相应的字符保存容器或字节保存容器进行存储,且将变量标识作为索引,以便以后续调用或更新。在存储时,对于转换得到的字符串和字节串,都严格按照转换时的顺序依次存储。
本实施例在设置全局变量时,根据该全局变量的变量类型从预设的转换函数库中匹配出对应的设置转换函数,将该全局变量的变量内容转换成预设的目标格式后,通过变量设置接口将转换后的变量内容以该变量标识为索引进行存储,并将该全局变量的变量名和变量标识并写入变量声明头文件中。通过将全局变量转换成预设目标格式通过统一的设置接口以变量标识为索引进行统一存储。使用者在使用全局变量时只需从变量声明头文件查找到与变量标识具有一一对应关系的变量名输入即可索引到变量内容,能尽可能避免全局变量调用出错,提升用户体验的满意度。本实施例提供的上述方案至少具备以下优点:
1、对应在终端测试的环境中所碰到的分硬件、软件变量类型,进行了统一的抽象和归类;
2、统一了全局变量的设置接口;
3、使用语言特性强制开发者添加删减全局变量的声明定义在一个相同地方(相同文件);
4、可支持各种语言(C/C++、VB、JAVA等)的所有内置类型,也可以通过自行扩展支持自定义类型;
5、使用变量时只需关注或包含自身所使用到类型,而无需额外包含其他的全局变量类型的定义。
通过上面所述,可以使在终端测试环境中各种全局变量的使用能集中管理,便于使用和修改,提高开发效率和代码质量。
第二实施例
本实施例在第一实施例的基础上,对全局变量的获取过程以及移除更新过程进行示例说明。
参见图4所示,本实施例中在第一实施例的基础上,获取一个全局变量的过程包括:
S401:接收变量导出请求,获取请求导出的全局变量的变量标识和变量类型;对于变量标识以及对应的变量类型测试设备可以根据变量名通过内部的对应转换关系得到对应的变量标识,在变量导出请求中也可以直接包含该变量标识;
S402:将得到的变量标识为索引在变量数据库中查找对应的变量内容;
S403:根据得到的变量类型从所述转换函数库中匹配出对应的导出转换函数;应当理解的是,该导出转换函数进行的转换与设置该全局变量时使用的设置转换函数所做的转换相反;
S404:调用匹配到的导出转换函数将变量内容由目标格式转换为变量类型对应的原格式后,调用预设变量输出接口将得到的变量内容输出。本实施例中对于各全局变量的获取都统一使用该变量输出接口进行输出。
对应第一实施例的设置全局变量时示例的目标格式,本实施例仍以目标格式包含字符串和字节串两种格式,对全局变量的具体获取过程进行示例说明。参见图5所示,包括:
S501:根据变量导出请求获取请求导出的全局变量的变量标识和变量类型;
S502:以得到的变量标识作为索引在变量数据库中查找对应的变量内容;
S503:判断变量类型包含的类型种数是否小于等于N值,如是,转至S504,否则,转至S505;
S504:从转换函数库中调用与变量类型匹配的字符串导出转换函数,将变量内容由字符串格式转换为变量类型对应的原格式,这部分主要针对内置全局变量的情况。
S505:从转换函数库中调用字节串导出转换函数,将变量内容由字节串格式转换为变量类型对应的原格式。这部分主要针对具有固定大小的自定义的结构类型的全局变量的情况。
本实施例中,在对字节串和字符串进行转换时,按照设置变量时的转换顺序依次转换。调用变量输出接口输出转换后的内容也是依次输出。
本实施例中,除了可以设置和获取全局变量外,还可以对全局变量进行删除更新。该过程参见图6所示,包括:
S601:接收变量移除请求,获取请求移除的全局变量的变量标识;
S602:根据获取的变量标识在变量数据库中查找对应的变量内容,调用变量移除接口将查找到的变量内容删除,当然,作为索引存储的变量标识也就被一并删除;
S603:将变量声明头文件中请求移除的全局变量的变量名和变量标识删除。
应当理解的是,上述S603可以在S601和S602的任意步骤之前或之后或同时执行。
本实施例中,对于测试设备的上述变量设置接口、变量输出接口以及变量移除接口的调用可以通过统一的接口进入执行。
本实施例在第一实施例的基础上,实现了全局变量的统一获取以及删除更新,使得在测试过程中,可以对对应在终端测试的环境中所碰到的分硬件、软件变量类型进行很好的揉合使用。统一了全局变量的获取接口以及移除接口,同时支持各种语言(C/C++、VB、JAVA等)的所有内置类型,也支持通过自行扩展支持自定义类型;同时使得使用变量时只需关注或包含自身所使用到类型,而无需额外包含其他的全局变量类型的定义。可以使在终端测试环境中各种全局变量的使用能集中管理,便于使用和修改,提高开发效率和代码质量。
第三实施例
参见图7所示,该图所示为本发明第三实施例提供的终端测试设备,包含终端测试装置,该终端测试设备具有各种编译器的功能,且具体可采用图1所示的计算机硬件结构。但应当理解的是,本实施例中的终端测试设备并不限于是计算机,也可以其他任意能实现编译、测试的设备。本实施例中的终端测试设备可以对无线终端(例如各种移动终端)或者其他有线通信类型终端或设备进行测试。
参见图8所示,本实施例中的终端测试装置包括:
变量设置模块81,用于接收到设置变量请求时,获取请求设置的全局变量的变量标识、变量类型以及变量内容,根据变量类型从转换函数库中匹配出对应的设置转换函数,通过设置转换函数将变量内容转换成预设的目标格式后,调用预设变量设置接口,将转换后的变量内容以变量标识为索引存储到变量数据库中;
变量清单管理模块82,用于接收设置的全局变量的变量名和变量标识并写入变量声明头文件中,变量声明头文件中各全局变量的变量名和变量标识各不相同,也即本实施例中的各全局变量在声明文件中的变量名和变量标识一一对应。本实施例中的变量名可以携带变量类型,也可以不携带。且本实施例中的变量名中可以体现全局变量的用途,以便于后续维护、查询或调用。在本实施例中的变量声明头文件中,不允许出现相同的变量名或变量标识。
本实施例中各全局变量的变量标识只要可以唯一识别各全局变量即可,对于各变量标识的具体值可以自定义,也可以按照终端测试设备给出的一些既定规则(例如依次递增规则)按序设置。
在终端测试环境所具有的变量类型与纯软件所面对的变量类型相比,会多出用于硬件控制的硬件全局变量。在本实施例中,不管是硬件全局变量,还是软件全局变量,变量清单管理模块82在声明文件中全部按照上述规则进行统一的抽象和归类,实现统一管理,提升管理效率以及提升资源利用效率。基于上述抽象和分类,测试设备在运行测试工具软件时,就可以根据实际测试需求揉合各种的硬件设备变量类型和软件变量类型,协调进行相互通讯和调用,实现对应功能的测试。
本实施例中设置的全局变量可以是各种内置类型,例如C#语言、C/C++语言、VB语言、JAVA语言等语言的内置类型,也可以是测试人员或编译人员自定义类型。转换函数库中的设置转换函数可以预先设置好,也可以在使用过程中动态添加更新。设置转换函数的作用是将对应的变量内容统一转换为预设的目标格式,以便后续统一存储、管理。应当理解的得是,本实施例中偏特化处理的设置转换函数的设置,可以是一个转换函数对应一种变量类型,也可以是一个转换函数对应多种变量类型。
另外,应当理解的是,本实施例中的目标格式可以仅包含一种格式,也可以根据具体应用场景需求等因素灵活设置为包含多种格式。例如,本实施例中的目标格式可以包含字符串和字节串(也即二进制码)。其中字符串主要是针对全局变量结构中包含的类型种数较少的全局变量,这部分全局变量一般是内置全局变量。而字节串主要是针对全局变量结构中包含的类型种数较多的全局变量,这部分全局变量一般那些有固定大小的自定义的结构类型的全局变量。当然,应当理解的是,除了上述示例的两种目标格式外,本实施例中的目标格式的数量还可以根据实际需求进行灵活增加、删减,目标格式的类型也可以灵活的替换。下面以目标格式包括字符串和字节串为示例,对所述变量设置的转换过程进行示例说明。
参见图9所示,变量设置模块81包括:
设置信息获取单元811,用于设置变量请求时,获取请求设置的全局变量的变量标识、变量类型以及变量内容;
设置类型判断单元812,用于判断获取的变量类型包含的类型种数是否小于等于预设N值,N大于等于1;本实施例中设置N等于2。
设置转换控制单元813,用于在设置类型判断单元812的判断结果为是时,从转换函数库中调用与变量类型匹配的字符串设置转换函数,将变量内容转换成字符串;否则,从转换函数库中调用字节串设置转换函数,将变量内容转换成字节串。
对于转换后得到的字符串变量内容或字节串变量内容,通过变量设置接口调用相应的字符保存容器或字节保存容器进行存储,且将变量标识作为索引,以便以后续调用或更新。在存储时,对于转换得到的字符串和字节串,都严格按照转换时的顺序依次存储。
参见图10所示,本实施例中的终端测试装置还包括:
变量导出模块83,用于接收到变量导出请求时,获取请求导出的全局变量的变量标识和变量类型,将变量标识作为索引在所述变量数据库中查找对应的变量内容,并根据变量类型从转换函数库中匹配出对应的导出转换函数(应当理解的是,该导出转换函数进行的转换与设置该全局变量时使用的设置转换函数所做的转换相反),调用导出转换函数将变量内容由所述目标格式转换为变量类型对应的原格式后,调用预设变量输出接口将得到的变量内容输出。
具体的,参见图11所示,变量导出模块83包括:
导出信息获取单元831,用于根据变量导出请求获取请求导出的全局变量的变量标识和变量类型;
查找单元832,用于将变量标识作为索引在变量数据库中查找对应的变量内容;
导出类型判断单元833,用于判断变量类型包含的类型种数是否小于等于所述N值;
导出转换控制单元834,用于在导出类型判断单元833判断结果为是时,从转换函数库中调用与变量类型匹配的字符串导出转换函数,将变量内容由字符串格式转换为变量类型对应的原格式;否则,从转换函数库中调用字节串导出转换函数,将变量内容由字节串格式转换为变量类型对应的原格式。本实施例中,在对字节串和字符串进行转换时,按照设置变量时的转换顺序依次转换。调用变量输出接口输出转换后的内容也是依次输出。
本实施例中,除了可以设置和获取全局变量外,还可以对全局变量进行删除更新。参见图12所示,本实施例中的终端测试装置还包括:
变量移除模块84,用于接收到变量移除请求时,获取请求移除的全局变量的变量标识,根据变量标识在变量数据库中查找对应的变量内容,将查找到的变量内容删除,当然,作为索引存储的变量标识也就被一并删除;
变量清单管理模块82还用于将变量声明头文件中待移除的全局变量的变量名和变量标识删除。
本实施例中,对于测试设备的上述变量设置接口、变量输出接口以及变量移除接口的调用可以通过统一的接口进入执行。且应当理解的是,本实施例中的变量设置模块81、变量清单管理模块82、变量导出模块83以及变量移除模块84的功能可以由终端测试设备内的处理器实现,各模块可以构造于处理器内,也可以单独的构造于处理器之外。
本实施例提供的终端测试装置可以对在终端测试的环境中所碰到的分硬件、软件变量类型,进行统一的抽象和归类,并统一了全局变量的设置接口,获取接口以及移除接口,使用语言特性强制开发者添加删减全局变量的声明定义在一个相同地方(相同文件);同时支持各种语言(C/C++、VB、JAVA等)的所有内置类型,也支持开发者通过自行扩展支持自定义类型。使用变量时只需关注或包含自身所使用到类型,而无需额外包含其他的全局变量类型的定义,可以使在终端测试环境中各种全局变量的使用能集中管理,便于使用和修改,提高开发效率和代码质量。
第四实施例
为了更好的理解本发明,下面以终端测试设备使用C/C++语言,对无线终端进行测试过程的全局变量的管理过程这一具体应用场景为示例,对本发明做进一步示例说明。
本实施例所涉及的内容主要包括:无线终端测试环境所具有的变量类型,即硬件全局变量和软件全局变量,无线终端测试的全局变量声明,无线终端测试的全局变量访问接口(包含设置、获取以及移除)类定义,无线终端测试的接口内部的实际全局变量值(全局变量内容转换前的内容)与保存值(全局变量内容转换后的内容)的转换(通过设置转换函数以及对应的导出转换函数实现)。
对于无线终端测试环境所具有的变量类型与全局变量声明。无线终端测试环境所具有的变量类型与纯软件所面对的变量类型相比,其会多出许多无线终端测试相关的硬件设备类型,如测试仪器,连接卡,无线终端,辅助测试电子设备等。无线终端测试工具软件,需要揉合各种的硬件全局变量类型和软全局变量类型,协调进行相互通讯和调用。另外,传统的C/C++代码实现是在某个.h头文件中进行变量的声明,然后在某个.cpp文件中进行定义实现。而本实施例全局变量声明方法做了改进。具体方法是在一个独立的头文件中,定义一个全局变量的枚举类型,当需要一个,就添加一个,在这里全局变量的声明可以无需关注变量的实际类型。将硬件全局变量和软件全局变量进行统一的抽象和归类。例如,对于每一全局变量在声明文件中的定义包括:<前缀>+<实际类型(可选,如整型INT,字符串STR,指针PTR等)>+<变量用途>+变量标识,其中前缀+实际类型+变量用途可以组成变量名。如下面的声明示例,“=”左边为变量名,右边为变量标识。
无线终端测试的全局变量访问接口类定义。本实施例一基于运行于同一进程的内部的全局变量管理来进行说明。全局变量访问接口类定义如下,即GetVarsString(变量输出接口,用于获取变量所对应的字符串或字节传值),SetVarsString(变量设置接口,用于设置变量所对应的字符串或字节串值)和RemoveVar(变量移除接口,用于在接口内部移除变量),本实施例中的上述接口定义为纯虚函数类。
对于转换函数,都是自定义的模板函数或是模板特化(偏特化)函数(模板函数和模板函数特化是C++模板编程中的术语,表示对所有类型或某一特定类型的值特定函数处理)。模板函数是开发者根据当前开发编译环境,全局变量所涉及到数值类型进行自定义处理的。模板函数通过对特定类型转换后,调用基础接口进行值的保存或读出。
设置转换函数将全局变量由原格式转换为字符串格式或字节串格式的原理如下:
对于内置类型全局变量,由于其结构体包含的类型种数一般很少,这类全局变量的数值(内容)都是可以用字符串来表示和保存。因为整型和浮点数可以,做格式化输出就可以了,而对应个设备仪器的操作指针,芯片平台的基础库的操作对象接口或测试终端的端口操作指针等全局变量,其本质也就是一个整型数。所以设置对应的特化模板函数也即转换函数(包括设置方向的转换和导出方向的转换)即可实现上述工作。而基础接口内部实现,是使用一个保存字符的容器来保存变量。例如m_GlobalVars是一个C++的STL类型容器map,其以上面定义变量枚举名对应的变量标识来做索引。
针对这类全局变量,基于上述函数定义进行全局变量的设置和获取的过程,以使示例的程序代码如下:
应当理解的是,上述程序代码中所示的几个具体的导出转换函数以及设置转换函数都仅仅是一种便于理解的示例,本实施例中的转换函数远不限于上述示例的几种。
存储时,以m_GlobalVars作为C++的STL类型容器map进行存储时,其以上面定义变量枚举名对应的变量标识来做索引:
结合上述基础接口的实现为:
导出时,可以利用导出函数GetInst接口,返回是一个单体(或叫单件,C++术语),如下:
本实施例其内部通过静态变量的技术来实现一个进程内只存一个全局的接口类实体,保证全局变量的唯一性。另外两个基础接口实现如下:
对于那些有固定大小的自定义的结构类型的全局变量,这类变量结构体中包含的类型种数一般比较多,因此可以则可以通过另外的接口(也即另外的转换函数),保存到map_BytesContainer,其原理是将这类全局变量的结构按照顺序的字节串行地保存到C++的STL容器:vector<BYTE>容器中,然后再将这个vector容器保存到最终的大容器:map_BytesContainer中。读取时则根据名字先从map_BytesContainer容器中将对应的vector<BYTE>子容器中的所有BYTE全部读取,再根据结构大小直接通过内存拷贝到对应结构类型的变量的首地址即可,其一种示例的实现代码片段如下:
设置过程(也即保存过程):
获取过程(也即读取过程):
这个全局变量管理接口,可以DLL导出接口形式来实现,如下:
基于上述方案,对于进程内的其他模块,简单如下基本即可实现全局变量的设置和获取(也即读值):
本发明实施例提供的全局变量管理方案可以对无线终端测试环境中各开发子工程里面(执行时为同一进程)使用到的全局变量进行统一的管理,无需在各模块中各自声明,定义。使全局变量代码清晰,便于维护。同时,自定义的接口偏特化的方法使接口可以适应各种变量类型,使用便捷。也即本发明可以有效提高无线终端测试环境中对全局变量的使用的便捷性,减少全局变量重复定义或隐藏定义,并可以做统一的访问控制,减少代码冗余,提高代码的健壮性,实现对无线终端测试环境中软件和硬件各全局变量的无缝揉合,协调提高对软硬件的相互通讯和调用,提高无线终端测试工具的开发速度和实际的执行效率。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。