侯高雷+李志鹏+孙强+李志华
摘 要: 为满足电能表系列产品的测试需要,减少功能测试软件的开发周期,提升公司产品功能测试能力,特提出电能表功能测试软件开发平台的设计概念。本设计旨在建立一套统一的功能测试软件开发平台,通过分层、模块化、高度抽象的设计理念,逐步将介质库、协议库、功能库、语言库、界面库等成熟技术集成到该平台上,并通过预留接口的方式保留对平台的二次开发功能,从而实现测试软件的快速设计能力,保证功能测试的开发需求。
关键词: 功能测试; 测试软件开发平台; 智能电能表; 开发平台
中图分类号: TN964?34 文献标识码: A 文章编号: 1004?373X(2014)04?0090?03
Design for development platform of function testing system
HOU Gao?Lei, LI Zhi?Peng, SUN?Qiang, LI Zhi?Hua
(Xuji Metering Limited Company, Xuchang 461000, China)
Abstract: In order to meet the testing needs of electrical energy meter series products, reduce the development cycle of functional testing software and improve the functional testing capability of the product, the design concept of functional testing software development platform is proposed. This design aims to establish a development platform for unified functional testing software, and gradually integrates the media library, a protocol library, function library, interface libraryand other mature technologies into the platform according to the hierarchical, modular and high abstract design concept. In addition, the secondary development function of the platform is retained by the reserved interface, so as to realize the rapid design of the testing software and satisfy the development requirement of function testing.
Keywords: function testing;testing software development platform;intelligent electric energy meter;development platform
0 引 言
伴随坚强智能电网的不断发展[1],电能计量及采集产品的功能需求也在不断增加,产品的可靠性要求也在不断提高,给产品设计及测试工作带来了极大的挑战。目前国内电能计量行业产品的可靠性设计[2]和管理工作刚刚起步,因此产品的质量保证工作大部分就落到了测试环节,即研发测试和生产测试,极大地增加了测试部门的工作压力和工作强度,同时对测试人员的需求也大大提高。为了改变这一现象,河南许继仪表有限公司一直致力于自动化测试装置和测试系统的研发设计工作,在保证测试质量的同时,逐步减少对测试人员的依赖。功能测试系统开发平台正是为了解决功能测试软件开发过程周期长、效率低、质量差、人员依赖度高的问题而提出来的。该平台通过分层、模块化、高度抽象的设计理念[3],逐步将介质库、协议库、功能库、语言库、界面库等成熟技术集成在一起,并通过预留接口的方式保留对平台的二次开发功能,从而实现测试软件的快速设计能力。
1 开发平台系统分析
1.1 需求分析
为了更好地满足各种功能测试系统软件开发的需要,通过对近年来各种产品功能测试过程中的功能测试需求、测试人员的使用要求、测试管理要求、测试软件的使用范围、软件应用经验、软件功能开发经验等信息进行收集整理,经过长时间地分析讨论总结,并最终形成了初步的需求方案。首先开发平台必须是一个大而全的函数库,必须能满足常用的开发功能函数级的需要,如支持多种通信方式,多种通信协议,多种语言,多种文件操作,多种数据库操作,多线程操作,线程池管理[4]等,其次开发平台必须是一个应用功能集合,要能支持常用的功能模块,如报表打印、数据导入、数据导出、用户权限管理、系统日志管理、系统自动升级等;最后开发平台还必须是一个开发工具包[5],能被其他人很方便地利用起来进行二次开发工作。
1.2 平台逻辑框图
基于以上需求分析,形成了开发平台的逻辑框架图,如图1所示,下面针对开发平台的逻辑架构框图进行简要说明:
(1) 应用模块层:该层主要提供了成熟的基于用户常用的功能模块集合,主要包括系统管理,用户权限管理,数据报表管理,功能扩展管理等成熟的功能应用,为测试系统应用级功能的二次开发提供应用基础;
(2) 业务驱动层:业务驱动顾名思义就是驱动业务功能实现,该层和应用层不同的是他集成的对象是功能实现函数级集合,而应用层主要是功能实现的应用模块集合,他主要为二次开发提供成熟稳定的功能实现函数;
(3) 介质驱动层:介质驱动层封装了驱动物理介质需要的底层驱动库,保证物理介质能正常的工作;
(4) 介质层[6]:介质层主要包含本平台封装的各种介质,主要包括存储介质和通信介质,该层封装介质的多少直接决定了平台对通信、存储等功能实现的支持能力。
图1 系统逻辑框图
1.3 主要业务功能模块
由于该开发平台主要是为了减少测试软件二次开发的时间周期的,因此他的主要亮点就在于二次开发人员能在该平台基础上,利用应用模块层成熟的应用模块功能和业务驱动层量多而成熟的功能函数经过各种自由组合后能快速开发出各种满足业务需要的系统软件来,因此要想利用好该平台,就必须对应用模块层和业务驱动层进行详细的学习和了解。下面就针对这两个层主要的业务模块进行简单的介绍。
(1) 系统管理:该功能主要是常用的系统管理功能模块,主要功能包括系统权限管理、系统数据库配置管理、系统通信配置管理、系统日志操作管理等。
(2) 档案管理:该功能主要是公司产品测试时需要的档案管理和维护功能,主要功能包括测试项目档案管理、被测产品档案管理、测试设备档案管理等。
(3) 报表管理:该功能主要是常用的报表管理模块,主要功能包括测试报告管理、测试数据管理、测试记录管理等。
(4) 数据接口:该功能主要是数据导入/导出功能管理模块,主要功能包括数据导入管理、数据导出管理、数据实时交互接口管理等。
(5) 升级管理:该功能主要是对应用程序的自动升级功能管理模块,主要功能包括软件更新配置管理、更新服务管理等。
(6) 扩展管理:该功能主要是为了以后扩展该平台功能实现模块使用的,主要功能包括功能模块导入管理,功能模块维护管理等。
(7) 数据库功能操作库:为了使二次开发人员在开发测试系统的时候能灵活方便地进行数据库操作设计,故专门制作了数据库功能操作库,他主要是将常用的可靠的数据库操作函数集合整理在一起,方便开发人员灵活使用。
(8) 语言库功能操作库:该功能主要是将操作语言类的功能函数结合到一起,方便开发人员在设计支持多国语言测试系统时直接调用。目前该语言库已经封装了全球最常用的语言包,能支持全球绝大部分语言应用。
(9) 规约库功能操作库:该功能主要是将公司所有使用到的通信规约操作函数进行了封装,方便开发人员在兼容各种通信规约时直接使用,提高模块的重用性,减少了系统开发周期。
(10) 通信功能操作库:该功能主要是将公司所有使用到的通信类型的操作函数进行了封装,比如TCP通信操作、串口操作、UDP操作、FTP操作等,方便开发人员在使用各种通信方式操作时可以直接调用该类函数,提高开发效率和质量。
1.4 平台开发环境
为了使开发平台具有高效、易用及面向组件的特点,同时结合公司测试软件开发的实际情况,最终将C#最为开发平台的编程语言。C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言[7]。
2 关键技术及实现
2.1 插件[8]管理技术
为了使开发平台中功能模块部分能够灵活地进行功能扩展,而不需要对平台主程序进行重新编译和发布,因此在开发平台上就专门应用了插件管理技术。我们将常用的成熟的功能模块(如用户权限管理模块、数据报表模块等)按照约定的协议接口做成动态库的形式封装起来,然后通过将这些动态库调用到程序框架中来完成功能模块的加载,这样就完成了功能模块的灵活集成,从而保证平台功能集合的可管理性和可扩展性。
2.2 非可视化功能管理技术
平台中集成了很多成熟的功能模块,但是由于这些功能模块有的具有可视化界面,有点没有可视化界面,没有统一的格式,因此如何将这些功能模块灵活的管理起来将是该平台急需解决的一个问题。Windows操作系统的消息处理机制[9]可以解决系统级消息或者用户自定义的消息处理,但是对于无窗体句柄[10]的非可视化功能则无法通过消息处理来进行管理,因此为了解决这个问题,平台在功能设计的时候,首先将各种非可视化功能集合到一起,然后通过对这个功能增加设置隐藏窗口的方式,使这些功能同时都具备了窗体句柄,从而通过消息处理的机制来完成对这些非可视化功能模块的管理。
2.3 消息处理机制
由于该平台封装了较多的功能和函数集,为了保证平台在二次开发过程中能更好地被开发者统一管理起来,在平台框架设计过程中,就集成了便于开发者进行协调管理的消息处理机制,该消息机制在Windows消息处理机制的基础上进行了扩展,将自定义消息处理模式通过平台消息配置文件来对平台内部自定义消息进行管理和维护,保证他们在平台开发应用过程中能对各种集成功能进行准确的管理和灵活的操控。
3 结 论
功能测试系统开发平台自开发成功之后已陆续应用于公司多款功能自动化测试系统的应用开发中,在开发过程中节省了大量的人员和开发时间,极大提高了开发效率,目前这些测试系统运行稳定,且仍在近期送样测试过程中发挥着重大作用。随着行业技术的发展,一些新的需求也在不断增加,从标准、规约、实现手段等方面都在不要增加新的需求,因此开发平台仍需要在现在的基础上通过不断的优化和完善,才能更好地服务于公司产品的测试工作。
参考文献
[1] 曾平良,许晓慧.坚强智能电网的规划与发展[J].国家电网,2013(1):82?85.
[2] 汤胜林.航天电子产品可靠性设计[J].中国科技博览,2011(7):116?117.
[3] 宋三明,姚鸿勋.Potts网络的模块化Latching动力模型[J].智能计算机与应用,2013(4):42?46.
[4] 程澜,罗建.基于优先级区间连接策略的抢占式线程池模型[J].航空计算技术,2013(1):131?134.
[5] 胡龙跃,史峥,刘得金,等.高效率集成电路测试芯片设计方法 [J].计算机工程及应用,2013(11):54?57.
[6] 王靖欧.用多样化的通信介质传输水电厂SCADA系统信息[J].水电能源科学,2006(4):89?91.
[7] Microsoft. C# [EB/OL]. [2012?12?29]. http://wenku.baidu.com/link.
[8] 李哲青,贺倩.异构数据集成系统中插件技术的应用[J].信息系统工程,2013(8):90?92.
[9] 陆平,钱煜明,朱科支.一种分布式复杂消息处理引擎的设计与实现[J].中兴通迅技术,2013(4):58?62.
[10] Liuke_blue. Ring3下通过查询GDI句柄表来检测进程[J].黑客防线,2010(7):274?276.
(3) 介质驱动层:介质驱动层封装了驱动物理介质需要的底层驱动库,保证物理介质能正常的工作;
(4) 介质层[6]:介质层主要包含本平台封装的各种介质,主要包括存储介质和通信介质,该层封装介质的多少直接决定了平台对通信、存储等功能实现的支持能力。
图1 系统逻辑框图
1.3 主要业务功能模块
由于该开发平台主要是为了减少测试软件二次开发的时间周期的,因此他的主要亮点就在于二次开发人员能在该平台基础上,利用应用模块层成熟的应用模块功能和业务驱动层量多而成熟的功能函数经过各种自由组合后能快速开发出各种满足业务需要的系统软件来,因此要想利用好该平台,就必须对应用模块层和业务驱动层进行详细的学习和了解。下面就针对这两个层主要的业务模块进行简单的介绍。
(1) 系统管理:该功能主要是常用的系统管理功能模块,主要功能包括系统权限管理、系统数据库配置管理、系统通信配置管理、系统日志操作管理等。
(2) 档案管理:该功能主要是公司产品测试时需要的档案管理和维护功能,主要功能包括测试项目档案管理、被测产品档案管理、测试设备档案管理等。
(3) 报表管理:该功能主要是常用的报表管理模块,主要功能包括测试报告管理、测试数据管理、测试记录管理等。
(4) 数据接口:该功能主要是数据导入/导出功能管理模块,主要功能包括数据导入管理、数据导出管理、数据实时交互接口管理等。
(5) 升级管理:该功能主要是对应用程序的自动升级功能管理模块,主要功能包括软件更新配置管理、更新服务管理等。
(6) 扩展管理:该功能主要是为了以后扩展该平台功能实现模块使用的,主要功能包括功能模块导入管理,功能模块维护管理等。
(7) 数据库功能操作库:为了使二次开发人员在开发测试系统的时候能灵活方便地进行数据库操作设计,故专门制作了数据库功能操作库,他主要是将常用的可靠的数据库操作函数集合整理在一起,方便开发人员灵活使用。
(8) 语言库功能操作库:该功能主要是将操作语言类的功能函数结合到一起,方便开发人员在设计支持多国语言测试系统时直接调用。目前该语言库已经封装了全球最常用的语言包,能支持全球绝大部分语言应用。
(9) 规约库功能操作库:该功能主要是将公司所有使用到的通信规约操作函数进行了封装,方便开发人员在兼容各种通信规约时直接使用,提高模块的重用性,减少了系统开发周期。
(10) 通信功能操作库:该功能主要是将公司所有使用到的通信类型的操作函数进行了封装,比如TCP通信操作、串口操作、UDP操作、FTP操作等,方便开发人员在使用各种通信方式操作时可以直接调用该类函数,提高开发效率和质量。
1.4 平台开发环境
为了使开发平台具有高效、易用及面向组件的特点,同时结合公司测试软件开发的实际情况,最终将C#最为开发平台的编程语言。C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言[7]。
2 关键技术及实现
2.1 插件[8]管理技术
为了使开发平台中功能模块部分能够灵活地进行功能扩展,而不需要对平台主程序进行重新编译和发布,因此在开发平台上就专门应用了插件管理技术。我们将常用的成熟的功能模块(如用户权限管理模块、数据报表模块等)按照约定的协议接口做成动态库的形式封装起来,然后通过将这些动态库调用到程序框架中来完成功能模块的加载,这样就完成了功能模块的灵活集成,从而保证平台功能集合的可管理性和可扩展性。
2.2 非可视化功能管理技术
平台中集成了很多成熟的功能模块,但是由于这些功能模块有的具有可视化界面,有点没有可视化界面,没有统一的格式,因此如何将这些功能模块灵活的管理起来将是该平台急需解决的一个问题。Windows操作系统的消息处理机制[9]可以解决系统级消息或者用户自定义的消息处理,但是对于无窗体句柄[10]的非可视化功能则无法通过消息处理来进行管理,因此为了解决这个问题,平台在功能设计的时候,首先将各种非可视化功能集合到一起,然后通过对这个功能增加设置隐藏窗口的方式,使这些功能同时都具备了窗体句柄,从而通过消息处理的机制来完成对这些非可视化功能模块的管理。
2.3 消息处理机制
由于该平台封装了较多的功能和函数集,为了保证平台在二次开发过程中能更好地被开发者统一管理起来,在平台框架设计过程中,就集成了便于开发者进行协调管理的消息处理机制,该消息机制在Windows消息处理机制的基础上进行了扩展,将自定义消息处理模式通过平台消息配置文件来对平台内部自定义消息进行管理和维护,保证他们在平台开发应用过程中能对各种集成功能进行准确的管理和灵活的操控。
3 结 论
功能测试系统开发平台自开发成功之后已陆续应用于公司多款功能自动化测试系统的应用开发中,在开发过程中节省了大量的人员和开发时间,极大提高了开发效率,目前这些测试系统运行稳定,且仍在近期送样测试过程中发挥着重大作用。随着行业技术的发展,一些新的需求也在不断增加,从标准、规约、实现手段等方面都在不要增加新的需求,因此开发平台仍需要在现在的基础上通过不断的优化和完善,才能更好地服务于公司产品的测试工作。
参考文献
[1] 曾平良,许晓慧.坚强智能电网的规划与发展[J].国家电网,2013(1):82?85.
[2] 汤胜林.航天电子产品可靠性设计[J].中国科技博览,2011(7):116?117.
[3] 宋三明,姚鸿勋.Potts网络的模块化Latching动力模型[J].智能计算机与应用,2013(4):42?46.
[4] 程澜,罗建.基于优先级区间连接策略的抢占式线程池模型[J].航空计算技术,2013(1):131?134.
[5] 胡龙跃,史峥,刘得金,等.高效率集成电路测试芯片设计方法 [J].计算机工程及应用,2013(11):54?57.
[6] 王靖欧.用多样化的通信介质传输水电厂SCADA系统信息[J].水电能源科学,2006(4):89?91.
[7] Microsoft. C# [EB/OL]. [2012?12?29]. http://wenku.baidu.com/link.
[8] 李哲青,贺倩.异构数据集成系统中插件技术的应用[J].信息系统工程,2013(8):90?92.
[9] 陆平,钱煜明,朱科支.一种分布式复杂消息处理引擎的设计与实现[J].中兴通迅技术,2013(4):58?62.
[10] Liuke_blue. Ring3下通过查询GDI句柄表来检测进程[J].黑客防线,2010(7):274?276.
(3) 介质驱动层:介质驱动层封装了驱动物理介质需要的底层驱动库,保证物理介质能正常的工作;
(4) 介质层[6]:介质层主要包含本平台封装的各种介质,主要包括存储介质和通信介质,该层封装介质的多少直接决定了平台对通信、存储等功能实现的支持能力。
图1 系统逻辑框图
1.3 主要业务功能模块
由于该开发平台主要是为了减少测试软件二次开发的时间周期的,因此他的主要亮点就在于二次开发人员能在该平台基础上,利用应用模块层成熟的应用模块功能和业务驱动层量多而成熟的功能函数经过各种自由组合后能快速开发出各种满足业务需要的系统软件来,因此要想利用好该平台,就必须对应用模块层和业务驱动层进行详细的学习和了解。下面就针对这两个层主要的业务模块进行简单的介绍。
(1) 系统管理:该功能主要是常用的系统管理功能模块,主要功能包括系统权限管理、系统数据库配置管理、系统通信配置管理、系统日志操作管理等。
(2) 档案管理:该功能主要是公司产品测试时需要的档案管理和维护功能,主要功能包括测试项目档案管理、被测产品档案管理、测试设备档案管理等。
(3) 报表管理:该功能主要是常用的报表管理模块,主要功能包括测试报告管理、测试数据管理、测试记录管理等。
(4) 数据接口:该功能主要是数据导入/导出功能管理模块,主要功能包括数据导入管理、数据导出管理、数据实时交互接口管理等。
(5) 升级管理:该功能主要是对应用程序的自动升级功能管理模块,主要功能包括软件更新配置管理、更新服务管理等。
(6) 扩展管理:该功能主要是为了以后扩展该平台功能实现模块使用的,主要功能包括功能模块导入管理,功能模块维护管理等。
(7) 数据库功能操作库:为了使二次开发人员在开发测试系统的时候能灵活方便地进行数据库操作设计,故专门制作了数据库功能操作库,他主要是将常用的可靠的数据库操作函数集合整理在一起,方便开发人员灵活使用。
(8) 语言库功能操作库:该功能主要是将操作语言类的功能函数结合到一起,方便开发人员在设计支持多国语言测试系统时直接调用。目前该语言库已经封装了全球最常用的语言包,能支持全球绝大部分语言应用。
(9) 规约库功能操作库:该功能主要是将公司所有使用到的通信规约操作函数进行了封装,方便开发人员在兼容各种通信规约时直接使用,提高模块的重用性,减少了系统开发周期。
(10) 通信功能操作库:该功能主要是将公司所有使用到的通信类型的操作函数进行了封装,比如TCP通信操作、串口操作、UDP操作、FTP操作等,方便开发人员在使用各种通信方式操作时可以直接调用该类函数,提高开发效率和质量。
1.4 平台开发环境
为了使开发平台具有高效、易用及面向组件的特点,同时结合公司测试软件开发的实际情况,最终将C#最为开发平台的编程语言。C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言[7]。
2 关键技术及实现
2.1 插件[8]管理技术
为了使开发平台中功能模块部分能够灵活地进行功能扩展,而不需要对平台主程序进行重新编译和发布,因此在开发平台上就专门应用了插件管理技术。我们将常用的成熟的功能模块(如用户权限管理模块、数据报表模块等)按照约定的协议接口做成动态库的形式封装起来,然后通过将这些动态库调用到程序框架中来完成功能模块的加载,这样就完成了功能模块的灵活集成,从而保证平台功能集合的可管理性和可扩展性。
2.2 非可视化功能管理技术
平台中集成了很多成熟的功能模块,但是由于这些功能模块有的具有可视化界面,有点没有可视化界面,没有统一的格式,因此如何将这些功能模块灵活的管理起来将是该平台急需解决的一个问题。Windows操作系统的消息处理机制[9]可以解决系统级消息或者用户自定义的消息处理,但是对于无窗体句柄[10]的非可视化功能则无法通过消息处理来进行管理,因此为了解决这个问题,平台在功能设计的时候,首先将各种非可视化功能集合到一起,然后通过对这个功能增加设置隐藏窗口的方式,使这些功能同时都具备了窗体句柄,从而通过消息处理的机制来完成对这些非可视化功能模块的管理。
2.3 消息处理机制
由于该平台封装了较多的功能和函数集,为了保证平台在二次开发过程中能更好地被开发者统一管理起来,在平台框架设计过程中,就集成了便于开发者进行协调管理的消息处理机制,该消息机制在Windows消息处理机制的基础上进行了扩展,将自定义消息处理模式通过平台消息配置文件来对平台内部自定义消息进行管理和维护,保证他们在平台开发应用过程中能对各种集成功能进行准确的管理和灵活的操控。
3 结 论
功能测试系统开发平台自开发成功之后已陆续应用于公司多款功能自动化测试系统的应用开发中,在开发过程中节省了大量的人员和开发时间,极大提高了开发效率,目前这些测试系统运行稳定,且仍在近期送样测试过程中发挥着重大作用。随着行业技术的发展,一些新的需求也在不断增加,从标准、规约、实现手段等方面都在不要增加新的需求,因此开发平台仍需要在现在的基础上通过不断的优化和完善,才能更好地服务于公司产品的测试工作。
参考文献
[1] 曾平良,许晓慧.坚强智能电网的规划与发展[J].国家电网,2013(1):82?85.
[2] 汤胜林.航天电子产品可靠性设计[J].中国科技博览,2011(7):116?117.
[3] 宋三明,姚鸿勋.Potts网络的模块化Latching动力模型[J].智能计算机与应用,2013(4):42?46.
[4] 程澜,罗建.基于优先级区间连接策略的抢占式线程池模型[J].航空计算技术,2013(1):131?134.
[5] 胡龙跃,史峥,刘得金,等.高效率集成电路测试芯片设计方法 [J].计算机工程及应用,2013(11):54?57.
[6] 王靖欧.用多样化的通信介质传输水电厂SCADA系统信息[J].水电能源科学,2006(4):89?91.
[7] Microsoft. C# [EB/OL]. [2012?12?29]. http://wenku.baidu.com/link.
[8] 李哲青,贺倩.异构数据集成系统中插件技术的应用[J].信息系统工程,2013(8):90?92.
[9] 陆平,钱煜明,朱科支.一种分布式复杂消息处理引擎的设计与实现[J].中兴通迅技术,2013(4):58?62.
[10] Liuke_blue. Ring3下通过查询GDI句柄表来检测进程[J].黑客防线,2010(7):274?276.