CN109189663A - 一种插件调试方法、测试方法及微内核架构系统 - Google Patents
一种插件调试方法、测试方法及微内核架构系统 Download PDFInfo
- Publication number
- CN109189663A CN109189663A CN201810765468.8A CN201810765468A CN109189663A CN 109189663 A CN109189663 A CN 109189663A CN 201810765468 A CN201810765468 A CN 201810765468A CN 109189663 A CN109189663 A CN 109189663A
- Authority
- CN
- China
- Prior art keywords
- script
- plug
- code
- unit
- interface
- 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/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种插件调试方法、测试方法及微内核架构系统,该测试方法包括以下步骤:S1:生成插件开发语言向脚本语言的脚本绑定代码;S2:加载插件并调用所述脚本绑定代码将插件功能代码实现的类或接口注册到脚本环境中的脚本类或接口;S3:编写测试用例脚本;S4:执行所述测试用例脚本以调用注册进来的脚本绑定代码来触发所述脚本绑定代码对应的插件功能代码的类或接口,实现插件功能代码的测试;本发明采用与框架融合的脚本技术对插件本身进行自动化绑定,形成一个与框架本身的脚本环境相融合的调试驱动或测试驱动环境,摆脱了调试驱动或测试对第三方框架的依赖,提高了插件调试、测试的效率和可靠性。
Description
技术领域
本发明属于软件架构及方案设计技术领域,更具体地,涉及一种插件调试方法、测试方法及微内核架构系统。
背景技术
微内核架构有时也被称为插件架构模式(plug-in architecture pattern),其结构如图1所示,它是一种通用的软件架构模式,与所使用的软件开发语言没有强制关联关系。微内核架构包含两部分组件:核心系统(core system)和插件模块(plug-in modules)。应用逻辑被分割为独立的插件模块和核心系统,提供了可扩展性、灵活性、功能隔离和自定义处理逻辑的特性。微内核架构的使用范围很广泛,比较著名的插件架构产品为Eclipse和Firefox。
微内核架构由于其插件间彼此隔离的特点,可对系统中的插件独立测试,也可在系统中通过使用模拟插件为正在开发测试的插件打桩,因而在可测试性方面也有较好的表现。但是在实际插件开发过程中代码调试的业务驱动以及单元测试或集成测试均需要依赖于第三方框架进行,比如针对C++语言的Cxxtest、Googletest等,针对java语言的jUnit等。采用第三方框架进行插件测试具有以下缺点:第一,由于测试框架众多,在实际使用中往往需要针对多种类型的框架进行技术选型,技术选型是一项极度依赖测试人员工作经验的工作,如果选择的测试框架的特性与待调/测试的插件不匹配,则无法对插件代码的正确性进行可靠测试,需要重新选型并进行调/测试工作,插件测试效率低下,造成工作量的巨大浪费;第二,测试环境属于第三方框架环境,插件的开发环境和测试环境分属于两个不同的运行环境,需要代码开发人员和测试用例开发人员在两个运行环境之间切换,学习成本的提高和环境切换带来的工作效率损失不可避免;第三,正是由于开发和测试环境不是同一个运行环境,因而测试可能并不能完全验证在开发环境下的代码行为正确性与可靠性。
发明内容
针对现有技术的至少一个缺陷或改进需求,本发明提供了一种插件调试方法、测试方法及微内核架构系统,其目的在于解决现有的插件测试方法依赖第三方测试框架导致的测试效率低下、开发和调试、测试环境不是同一个运行环境、插件测试的正确性和可靠性低的问题。
为实现上述目的,按照本发明的一个方面,提供了一种插件调试方法,包括以下步骤:
S1:生成插件开发语言向脚本语言的脚本绑定代码;
S2:加载插件并调用所述脚本绑定代码将插件功能代码实现的类或接口注册到脚本环境中;并按照一定的命名规则对注册的插件中的类及接口在脚本环境中对应的脚本类或接口进行命名;
S3:根据所述命名规则编写调试驱动脚本;
S4:执行所述调试驱动脚本以调用脚本绑定代码来触发所述脚本绑定代码对应的插件功能代码实现的类或接口,实现插件功能代码的调试驱动。
优选的,上述插件调试方法,其步骤S4中的调用过程具体包括以下子步骤:
S41:调用插件功能代码实现的类或接口对应的脚本类或接口;
S42:脚本绑定代码将步骤S41中的脚本调用事件传递到插件功能代码;
S43:根据所述脚本调用事件调用插件功能代码中的对应类或接口。
优选的,上述插件调试方法,其步骤S4之后还包括以下步骤:
S5:调试完成后,卸载插件以及所述插件所注册的脚本环境中的脚本类或接口。
优选的,上述插件调试方法,其步骤S1中脚本绑定代码的生成过程具体包括:
解析插件功能代码以检测出插件开发语言,根据所述插件开发语言和脚本语言自动生成脚本绑定代码。
优选的,上述插件调试方法,其步骤S1之前还包括以下步骤:
S0:编写插件功能代码并按照插件规则制定可调用脚本绑定代码的初始化接口。
按照本发明的另一个方面,提供了一种插件测试方法,包括以下步骤:
S1:生成插件开发语言向脚本语言的脚本绑定代码;
S2:加载插件并调用所述脚本绑定代码将插件功能代码实现的类或接口注册到脚本环境中;并按照一定的命名规则对注册的插件中的类及接口在脚本环境中对应的脚本类或接口进行命名;
S3:根据所述命名规则编写测试用例脚本;
S4:执行所述测试用例脚本以调用脚本绑定代码来触发所述脚本绑定代码对应的插件功能代码实现的类或接口,实现插件功能代码的测试。
优选的,上述插件测试方法,其步骤S4中的调用过程具体包括以下子步骤:
S41:调用插件功能代码实现的类或接口对应的脚本类或接口;
S42:脚本绑定代码将步骤S41中的脚本调用事件传递到插件功能代码;
S43:根据所述脚本调用事件调用插件功能代码中的对应类或接口。
优选的,上述插件测试方法,其步骤S4之后还包括以下步骤:
S5:测试完成后,卸载插件以及所述插件所注册的脚本环境中的脚本类或接口。
优选的,上述插件测试方法,其步骤S1中脚本绑定代码的生成过程具体包括:
解析插件功能代码以检测出插件开发语言,根据所述插件开发语言和脚本语言自动生成脚本绑定代码。
优选的,上述插件测试方法,其步骤S1之前还包括以下步骤:
S0:编写插件功能代码并按照插件规则制定可调用脚本绑定代码的初始化接口。
按照本发明的另一个方面,提供了一种微内核架构系统,包括核心系统和插件模块,还包括脚本绑定工具、脚本开发集成开发环境(Integrated DevelopmentEnvironment,IDE)工具和脚本解释器;
所述脚本绑定工具用于生成插件开发语言向脚本语言的脚本绑定代码;
所述核心系统用于加载插件并调用所述脚本绑定代码将插件功能代码实现的类或接口注册到脚本解释器中的脚本类或接口;并按照一定的命名规则对注册进来的插件中的类及接口在脚本解释器中对应的脚本类或接口进行命名;
所述脚本开发IDE工具用于根据所述命名规则编写调试驱动脚本或测试用例脚本;
所述脚本解释器用于执行所述调试驱动脚本或测试用例脚本以调用注册进来的脚本绑定代码来触发所述脚本绑定代码对应的插件功能代码实现的类或接口,实现插件功能代码的调试驱动或测试。
优选的,上述微内核架构系统,其核心系统还用于在调试或测试完成后卸载插件以及所述插件所注册的脚本解释器中的脚本类或接口。
优选的,上述微内核架构系统,其脚本解释器的调用过程包括:调用插件功能代码实现的类或接口对应的脚本类或接口;脚本绑定代码将脚本调用事件传递到插件功能代码后,脚本解释器调用插件功能代码中的对应类或接口。
优选的,上述微内核架构系统,其脚本开发IDE工具集成在核心系统中或者作为一个独立的公共插件存在于架构系统中。
优选的,上述微内核架构系统,其脚本绑定工具通过解析插件功能代码以检测出插件开发语言,并根据所述插件开发语言和脚本语言自动生成脚本绑定代码。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明提供的插件调试方法、测试方法及微内核架构系统,采用与框架融合的脚本技术对插件本身进行自动化绑定,并随插件在框架中的加载和卸载过程完成插件中的类或接口在脚本环境中的注册与反注册,形成了一个与微内核框架本身的脚本环境相融合的调试驱动或测试驱动环境,通过编写脚本的方式即可在同一个框架环境内完成对插件的调试和测试的驱动触发,从而摆脱了调试驱动或测试对第三方框架的依赖,提高了插件调试、测试的效率和可靠性;将插件加载到核心系统的过程与插件中的类或接口注册到脚本环境的过程统一,核心系统卸载插件的过程与插件中的类或接口的反注册过程统一,在遵循微内核框架插件动态加载、卸载的技术思想的基础上,无破坏性地对微内核框架进行了增强;
(2)本发明提供的插件调试方法、测试方法及微内核架构系统,通过将脚本绑定技术与插件开发过程结合,将测试环境和实际运行环境统一,避免了测试环境和运行环境在物理上的分离,保证被测试的场景就是实际运行的场景;
(3)本发明提供的插件调试方法、测试方法及微内核架构系统,脚本绑定工具能够通过解析插件功能代码来检测出插件开发语言,并根据插件开发语言和脚本语言生成脚本绑定代码,由于脚本绑定工具实现了脚本绑定代码的自动生成,节省了手动添加脚本绑定代码的过程,提高了测试效率;
(4)本发明提供的插件调试方法、测试方法及微内核架构系统,脚本开发IDE工具集成在核心系统中或者作为一个独立的公共插件存在于框架内,能够更好地与框架融合,框架本身就是调试或测试所进行的环境,脚本开发IDE工具和框架形成一个相互支撑的开发、调试、测试联合体,无需再选择第三方框架或工具来构造插件的调试驱动和测试环境;且脚本开发IDE工具可随框架在不同的应用中完整地复制和迁移,从而在多种应用条件和场景中使用脚本开发IDE工具和框架共同构建的开发、调试、测试联合体;
(5)本发明提供的插件调试方法、测试方法及微内核架构系统,在满足插件开发语言具备和脚本开发语言之间的互操作能力的前提下,其并无开发语言限制,例如核心系统及插件的开发语言可以为C#、Java等,相应的脚本坏境也可以为Lua或Python等,因此具有更好的通用性与普适性。
附图说明
图1是现有技术中的微内核架构系统的结构示意图;
图2是本发明实施例提供的插件调试方法、测试方法的流程图;
图3是本发明实施例提供的脚本到功能代码的调用传递过程;
图4是本发明的一个实施例提供的微内核架构系统的结构示意图;
图5是本发明的另一个实施例提供的微内核架构系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明利用与微内核架构融合的脚本技术对插件本身进行自动化绑定,并随插件在微内核架构中的加载和卸载过程完成插件的脚本绑定接口在脚本环境中的注册与反注册,以形成一个运行于微内核架构环境本身的脚本环境,并通过编写脚本的方式在同一个微内核架构环境内完成插件调试或测试的驱动触发,避免对第三方框架的依赖,同时保证调试或测试环境与实际运行环境的同一性。本实施例通过在C++开发语言环境下实现的微内核架构为例来阐述如何通过本发明来增强插件的可调试与可测试性;
图2是本发明实施例提供的插件调试/测试方法的流程图;如图2所示,本实施例所提供的一种插件调试/测试方法,包括以下步骤:
S1:编写插件功能代码并按照插件规则制定插件的加载接口、卸载接口;
微内核架构中的插件模块的代码编写是微内核插件框架的常规开发工作,插件功能代码即为本方法的调试或测试的对象;微内核架构的插件开发需要遵循微内核架构所制定的插件规则,比如按统一固定的形式实现加载或卸载接口、业务逻辑接口等,这些规则是选择或实现插件与脚本自动化绑定的决定因素。
S2:生成可将插件功能代码实现的类或接口注册到脚本语言环境的脚本绑定代码;
通过C++开发语言向Lua脚本语言的脚本绑定工具,生成能将基于C++语言编写的插件功能代码实现的类或接口注册到Lua解释器的绑定代码,这样可在Lua脚本中使用插件功能代码实现的类或接口。如果需要调试或测试的功能类或接口有多个,则脚本绑定工具需要遍历插件的功能类或接口,为每一个需要调试的类或接口生成对应的脚本绑定代码。
S3:编译插件功能代码,生成插件模块;编译脚本绑定代码,生成可被核心系统调用的注册接口;
脚本绑定代码和插件功能代码可以一起编译,也可以作为两个项目分别进行编译,用户根据需求自行选择;插件功能代码编译后生成微内核架构的核心系统可识别的插件模块,脚本绑定代码编译后生成可被插件的初始化接口调用的注册接口,插件初始化过程中,插件的初始化接口被核心系统调用的同时该注册接口也被调用;
S4:启动微内核框架核心系统,核心系统通过插件的加载接口加载编译出的插件模块,并通过注册接口调用脚本绑定代码将插件中的类或接口注册到脚本环境中,脚本环境中存在与插件的类或接口对应的脚本类或接口(Lua语言能识别的类或接口);
微内核框架既可以作为其他软件结构的一部分,也可以作为一个软件的主体框架,但无论以哪种模式存在,框架的核心系统都相对稳定、独立且先于插件运行,以便实现动态的插件加载与卸载,实现功能的动态扩展和裁剪。
核心系统启动后,通过预先制定的加载接口加载插件,并通过调用接口调用脚本绑定代码将插件中的类及接口注册到框架内部提供的脚本语言环境中,供后续流程使用;并按照一定的命名规则对注册进来的插件中的类及接口在脚本环境中对应的脚本类或接口进行命名,例如:插件中的类或接口为A,对应的脚本类或接口可仍然命名为A,也可以统一添加后缀如A_Script,这个对应关系对所有类或接口是一致的。如果需要调试或测试的功能类或接口有多个,则核心系统需要将待调试的每一个功能类或接口通过其对应的脚本绑定代码注册到脚本环境中。
S5:在脚本语言环境中编写调试驱动脚本或测试用例脚本;
运行脚本开发IDE工具,脚本开发IDE工具按照步骤S4中的命名规则编写对应类或接口的调试驱动脚本或测试用例脚本;
S6:执行调试驱动脚本或测试用例脚本,该脚本调用注册进来的插件功能代码实现的类或接口的脚本绑定代码,该脚本绑定代码对应的类或接口即会被触发,实现插件功能代码的调试驱动或测试。
调试过程中,直接以调试模式运行调试驱动脚本即可对脚本下断点、单步运行等;待调试的插件功能代码需要以调试模式运行,调试过程中在插件功能代码中插入断点,当调试驱动脚本被执行时,该脚本将调用注册进来的插件功能代码中的类或接口的脚本绑定代码,该脚本绑定代码对应的类或接口即会被触发,实现插件功能代码的调试驱动;图3是本发明实施例提供的脚本到功能代码的调用传递过程;如图3所示,调试驱动脚本到功能代码的调用过程包括以下步骤:
S61:调试驱动脚本调用插件功能代码实现的类或接口在注册到脚本环境时对应的脚本类或接口;
S62:脚本绑定代码将步骤S61中的脚本调用事件传递到插件功能代码;
S63:根据脚本调用事件调用插件功能代码中的对应类或接口;
测试过程中,插件代码编辑器不需要以调试模式运行,也不需要代码编辑器的参与。整个微内核框架的核心系统和插件模块均以正常工作模式运行,通过执行测试用例,脚本中类或接口的调用被传递到插件功能代码,通过判断给定输入时的输出是否满足设置值来判断插件功能代码是否被正确设计、开发,功能是否正常。测试覆盖是否全面、测试的用例是否丰富、测试用例以哪种流程执行等等均由测试用例脚本的编写来决定,即测试用例的开发可以充分利用脚本语言所具备的语法、流控、脚本功能库等能力。
S7:调试或测试完成,停止框架卸载插件及其注册的脚本中的类或接口。
当框架的核心系统停止时,会执行已加载插件的清理工作,在调用插件的卸载接口同时也会从脚本环境中卸载插件中的类或接口所绑定的脚本类或接口,并清除脚本环境。
将插件加载到核心系统的过程与插件中的类或接口注册到脚本环境的过程统一,核心系统卸载插件的过程与插件中的类或接口的反注册过程统一,在遵循微内核框架插件动态加载、卸载的技术思想的基础上,无破坏性地对微内核框架进行了增强。
此方法作为一种调试或测试增强的思路,其并无开发语言限制,例如核心系统及插件的开发语言可以为C#、Java等,相应的脚本坏境也可以为Lua或Python等,选择的原则是满足插件开发语言具备和脚本开发语言之间的互操作能力即可。
本实施例还提供了一种能够增强插件调试及测试友好性的微内核架构系统,如图4、5所示,包括核心系统、插件模块、插件代码编辑器和编译器,还包括脚本解释器、脚本绑定工具和脚本开发IDE工具;
插件代码编辑器用于为插件模块编写功能代码并按照插件规则制定插件的加载接口、卸载接口,该功能代码即为本方法的调试或测试的对象;
脚本绑定工具用于生成脚本绑定代码以实现将插件功能代码(C++开发语言)中的类或接口注册到Lua脚本语言环境,这样可在Lua脚本语言中调用插件功能代码实现的类或接口;脚本绑定工具可采用用于Lua脚本语言和C++开发语言之间交互绑定的Luabind、tolua++绑定器或其它现有的绑定工具,或者自行编写代码实现绑定工具;本实施例中的脚本绑定工具为自行开发且能够按照插件规则解析插件功能代码,检测出插件开发语言,并根据插件开发语言和脚本语言自动生成脚本绑定代码;现有的脚本绑定工具在使用过程中需要测试人员手动添加脚本绑定代码,给测试过程带来不便,本实施例提供的脚本绑定工具能够通过解析插件功能代码自动生成脚本绑定代码,节省了手动添加的过程,提高了测试效率。
编译器用于对插件功能代码和脚本绑定代码进行编译,分别生成待调试的插件模块及其注册接口;
核心系统用于通过插件中的加载接口加载编译出的插件模块,并通过调用接口调用脚本绑定代码通过注册接口将插件中的类及接口注册到脚本解释器中;加载接口、调用接口和卸载接口均为在插件功能代码的编写过程中依据插件规则制定的接口。
脚本开发IDE工具用于编写调试驱动或测试用例脚本;脚本解释器用于运行调试驱动或测试用例脚本,以在Lua脚本语言环境中调用使用插件功能代码实现的类或接口;
脚本开发IDE工具可采用现有的脚本语言常用的开发调试工具Zerobrane studio或其它常用工具,也可以自行开发;为了较好地与框架融合,本实施例选择自行开发IDE工具并集成在核心系统中(图4)或者作为一个独立的公共插件存在(图5),支持脚本编辑和在线调试;框架本身就是调试或测试所进行的环境,脚本开发IDE工具和框架形成一个相互支撑的开发、调试、测试联合体,无需再选择第三方框架或工具来构造插件的调试驱动和测试环境;且脚本开发IDE工具可随框架在不同的应用中完整地复制和迁移,从而在多种应用条件和场景中使用脚本开发IDE工具和框架共同构建的开发、调试、测试联合体,扩展了框架系统的功能并丰富了其应用场景。
脚本解释器需支持与开发语言(C++)之间的交互,可选用常用的Lua、Python解释器或自定义脚本语言解释器;需要注意的是,不管使用第三方IDE工具还是自行开发IDE工具,脚本开发IDE工具所使用的脚本解释器必须为插件的功能类或接口所注册的宿主脚本解释器,这样才能在脚本环境中调用插件的功能代码所实现的类或接口。插件中的类或接口在注册到脚本环境时遵循了一定的命名规则,脚本开发IDE工具根据命名规则编写相应类或接口的调试驱动脚本代码或测试用例脚本代码。
本实施例提供的微内核架构系统除了能大幅度提升插件调试和测试的友好性之外,也可以满足使用脚本进行业务逻辑开发的要求,当框架中所有插件的类或接口都被绑定并注册到脚本环境之后,理论上可以通过脚本调用所有插件所提供的功能,这样完全通过脚本进行业务功能开发是可以实现的。
本发明提供的插件调试方法、测试方法及微内核架构系统,采用与框架融合的脚本技术对插件本身进行自动化绑定,并随插件在框架中的加载和卸载过程完成插件中的类或接口在脚本环境中的注册与反注册,形成了一个与微内核框架本身的脚本环境相融合的调试驱动或测试驱动环境,通过编写脚本的方式即可在同一个框架环境内完成对插件的调试和测试的驱动触发,从而摆脱了调试驱动或测试对第三方框架的依赖,提高了插件调试、测试的效率和可靠性;将插件加载到核心系统的过程与插件中的类或接口注册到脚本环境的过程统一,核心系统卸载插件的过程与插件中的类或接口的反注册过程统一,在遵循微内核框架插件动态加载、卸载的技术思想的基础上,无破坏性地对微内核框架进行了增强。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种插件调试方法,其特征在于,包括以下步骤:
S1:生成插件开发语言向脚本语言的脚本绑定代码;
S2:加载插件并调用所述脚本绑定代码将插件功能代码实现的类或接口注册到脚本环境中;并按照一定的命名规则对注册的插件中的类及接口在脚本环境中对应的脚本类或接口进行命名;
S3:根据所述命名规则编写调试驱动脚本;
S4:执行所述调试驱动脚本以调用脚本绑定代码来触发所述脚本绑定代码对应的插件功能代码实现的类或接口,实现插件功能代码的调试驱动。
2.如权利要求1所述的插件调试方法,其特征在于,步骤S4中的调用过程具体包括以下子步骤:
S41:调用插件功能代码实现的类或接口对应的脚本类或接口;
S42:脚本绑定代码将步骤S41中的脚本调用事件传递到插件功能代码;
S43:根据所述脚本调用事件调用插件功能代码中的对应类或接口。
3.如权利要求1或2所述的插件调试方法,其特征在于,步骤S4之后还包括以下步骤:
S5:调试完成后,卸载插件以及所述插件所注册的脚本环境中的脚本类或接口。
4.如权利要求1或2所述的插件调试方法,其特征在于,步骤S1中脚本绑定代码的生成过程具体包括:
解析插件功能代码以检测出插件开发语言,根据所述插件开发语言和脚本语言自动生成脚本绑定代码。
5.一种插件测试方法,其特征在于,包括以下步骤:
S1:生成插件开发语言向脚本语言的脚本绑定代码;
S2:加载插件并调用所述脚本绑定代码将插件功能代码实现的类或接口注册到脚本环境中;并按照一定的命名规则对注册的插件中的类及接口在脚本环境中对应的脚本类或接口进行命名;
S3:根据所述命名规则编写测试用例脚本;
S4:执行所述测试用例脚本以调用脚本绑定代码来触发所述脚本绑定代码对应的插件功能代码实现的类或接口,实现插件功能代码的测试。
6.如权利要求5所述的插件测试方法,其特征在于,步骤S4中的调用过程具体包括以下子步骤:
S41:调用插件功能代码实现的类或接口对应的脚本类或接口;
S42:脚本绑定代码将步骤S41中的脚本调用事件传递到插件功能代码;
S43:根据所述脚本调用事件调用插件功能代码中的对应类或接口。
7.如权利要求5或6所述的插件测试方法,其特征在于,步骤S4之后还包括以下步骤:
S5:测试完成后,卸载插件以及所述插件所注册的脚本环境中的脚本类或接口。
8.如权利要求5或6所述的插件测试方法,其特征在于,步骤S1中脚本绑定代码的生成过程具体包括:
解析插件功能代码以检测出插件开发语言,根据所述插件开发语言和脚本语言自动生成脚本绑定代码。
9.一种微内核架构系统,包括核心系统和插件模块,其特征在于,还包括脚本绑定工具、脚本开发IDE工具和脚本解释器;
所述脚本绑定工具用于生成插件开发语言向脚本语言的脚本绑定代码;
所述核心系统用于加载插件并调用所述脚本绑定代码将插件功能代码实现的类或接口注册到脚本解释器中;并按照一定的命名规则对注册进来的插件中的类及接口在脚本环境中对应的脚本类或接口进行命名;
所述脚本开发IDE工具用于根据所述命名规则编写调试驱动脚本或测试用例脚本;
所述脚本解释器用于执行所述测试脚本以调用注册进来的脚本绑定代码来触发所述脚本绑定代码对应的插件功能代码实现的类或接口,实现插件功能代码的调试驱动或测试。
10.如权利要求9所述的微内核架构系统,其特征在于,所述核心系统还用于在调试或测试完成后卸载插件以及所述插件所注册的脚本解释器中的脚本类或接口。
11.如权利要求9或10所述的微内核架构系统,其特征在于,所述脚本解释器调用过程包括:调用插件功能代码实现的类或接口对应的脚本类或接口;脚本绑定代码将脚本调用事件传递到插件功能代码后,脚本解释器调用插件功能代码中的对应类或接口。
12.如权利要求9或10所述的微内核架构系统,其特征在于,所述脚本开发IDE工具集成在核心系统中或者作为一个独立的公共插件存在于架构系统中。
13.如权利要求9或10所述的微内核架构系统,其特征在于,所述脚本绑定工具通过解析插件功能代码以检测出插件开发语言,并根据所述插件开发语言和脚本语言自动生成脚本绑定代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810765468.8A CN109189663B (zh) | 2018-07-12 | 2018-07-12 | 一种插件调试方法、测试方法及微内核架构系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810765468.8A CN109189663B (zh) | 2018-07-12 | 2018-07-12 | 一种插件调试方法、测试方法及微内核架构系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109189663A true CN109189663A (zh) | 2019-01-11 |
CN109189663B CN109189663B (zh) | 2021-10-29 |
Family
ID=64936042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810765468.8A Active CN109189663B (zh) | 2018-07-12 | 2018-07-12 | 一种插件调试方法、测试方法及微内核架构系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109189663B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828796A (zh) * | 2019-01-17 | 2019-05-31 | 武汉精立电子技术有限公司 | 一种基于微内核架构的插件调用方法及装置 |
CN110162477A (zh) * | 2019-05-28 | 2019-08-23 | 山东财经大学 | 一种第三方库版本升级的异常自动调试系统及方法 |
CN110659870A (zh) * | 2019-08-14 | 2020-01-07 | 平安普惠企业管理有限公司 | 业务审核测试方法、装置、设备及存储介质 |
CN111552524A (zh) * | 2020-05-06 | 2020-08-18 | Oppo(重庆)智能科技有限公司 | 一种插件加载方法、装置及计算机可读存储介质 |
CN112612712A (zh) * | 2020-12-29 | 2021-04-06 | 厦门市美亚柏科信息股份有限公司 | 一种基于扩展脚本的软件断点调试方法、装置 |
CN113076247A (zh) * | 2021-04-06 | 2021-07-06 | 成都安恒信息技术有限公司 | 一个管理与运行测试脚本的方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030149801A1 (en) * | 2001-12-12 | 2003-08-07 | Kushnirskiy Igor Davidovich | Scriptable plug-in application programming interface |
CN101071372A (zh) * | 2007-03-30 | 2007-11-14 | 腾讯科技(深圳)有限公司 | 一种脚本内核管理方法及系统 |
CN101414935A (zh) * | 2008-07-09 | 2009-04-22 | 北京星网锐捷网络技术有限公司 | 测试用例生成方法及系统 |
CN102105874A (zh) * | 2008-07-28 | 2011-06-22 | 微软公司 | 带有定制的计算机应用程序包 |
KR20110108143A (ko) * | 2010-03-26 | 2011-10-05 | (주)이지위드 | 스크립트 프로그래밍 언어 기반의 임베디드 시스템 및 그 구동 방법 |
CN103257919A (zh) * | 2012-02-21 | 2013-08-21 | 腾讯科技(深圳)有限公司 | 脚本程序检查方法和装置 |
CN106528405A (zh) * | 2016-10-09 | 2017-03-22 | 深圳震有科技股份有限公司 | 基于OSGi构建软件运行中进行调试实现方法及系统 |
CN107688529A (zh) * | 2017-02-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 组件调试方法和装置 |
CN107729238A (zh) * | 2017-10-09 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种插件调试方法、系统、装置及计算机可读存储介质 |
-
2018
- 2018-07-12 CN CN201810765468.8A patent/CN109189663B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030149801A1 (en) * | 2001-12-12 | 2003-08-07 | Kushnirskiy Igor Davidovich | Scriptable plug-in application programming interface |
CN101071372A (zh) * | 2007-03-30 | 2007-11-14 | 腾讯科技(深圳)有限公司 | 一种脚本内核管理方法及系统 |
CN101414935A (zh) * | 2008-07-09 | 2009-04-22 | 北京星网锐捷网络技术有限公司 | 测试用例生成方法及系统 |
CN102105874A (zh) * | 2008-07-28 | 2011-06-22 | 微软公司 | 带有定制的计算机应用程序包 |
KR20110108143A (ko) * | 2010-03-26 | 2011-10-05 | (주)이지위드 | 스크립트 프로그래밍 언어 기반의 임베디드 시스템 및 그 구동 방법 |
CN103257919A (zh) * | 2012-02-21 | 2013-08-21 | 腾讯科技(深圳)有限公司 | 脚本程序检查方法和装置 |
CN106528405A (zh) * | 2016-10-09 | 2017-03-22 | 深圳震有科技股份有限公司 | 基于OSGi构建软件运行中进行调试实现方法及系统 |
CN107688529A (zh) * | 2017-02-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 组件调试方法和装置 |
CN107729238A (zh) * | 2017-10-09 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种插件调试方法、系统、装置及计算机可读存储介质 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828796A (zh) * | 2019-01-17 | 2019-05-31 | 武汉精立电子技术有限公司 | 一种基于微内核架构的插件调用方法及装置 |
CN109828796B (zh) * | 2019-01-17 | 2022-04-15 | 武汉精立电子技术有限公司 | 一种基于微内核架构的插件调用方法及装置 |
CN110162477A (zh) * | 2019-05-28 | 2019-08-23 | 山东财经大学 | 一种第三方库版本升级的异常自动调试系统及方法 |
CN110659870A (zh) * | 2019-08-14 | 2020-01-07 | 平安普惠企业管理有限公司 | 业务审核测试方法、装置、设备及存储介质 |
CN111552524A (zh) * | 2020-05-06 | 2020-08-18 | Oppo(重庆)智能科技有限公司 | 一种插件加载方法、装置及计算机可读存储介质 |
CN111552524B (zh) * | 2020-05-06 | 2023-10-13 | Oppo(重庆)智能科技有限公司 | 一种插件加载方法、装置及计算机可读存储介质 |
CN112612712A (zh) * | 2020-12-29 | 2021-04-06 | 厦门市美亚柏科信息股份有限公司 | 一种基于扩展脚本的软件断点调试方法、装置 |
CN113076247A (zh) * | 2021-04-06 | 2021-07-06 | 成都安恒信息技术有限公司 | 一个管理与运行测试脚本的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109189663B (zh) | 2021-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189663A (zh) | 一种插件调试方法、测试方法及微内核架构系统 | |
US20190004932A1 (en) | Unit test and automation framework (utaf) system and method | |
US7954091B2 (en) | Method and apparatus for testing of business processes for web services | |
CN101401333B (zh) | 一种基于模型驱动进行电信级业务开发的调试方法及装置 | |
JP6280126B2 (ja) | ドメイン固有言語をデバッグするためのシステムおよび方法 | |
EP1089172A2 (en) | Compiler and method for compiling specification language into implementation language | |
EP1926021A1 (en) | Software test case generation | |
JP2015146179A (ja) | テストダブルの生成 | |
CN103412817A (zh) | 自动化测试脚本脱机调试方法及系统 | |
CN102486749A (zh) | 数据驱动测试方法及系统 | |
Nakagawa et al. | Towards a Reference Architecture for Software Testing Tools. | |
Zhang et al. | Automated unit testing intelligent agents in PDT | |
CN109144849A (zh) | 一种嵌入式软件调测方法 | |
Barnett et al. | Using abstract state machines at Microsoft: A case study | |
Lee et al. | A New Integrated Software Development Environment Based on SDL, MSC, and CHILL for Large‐scale Switching Systems | |
US9646118B1 (en) | Linking of simulators into a circuit design tool | |
Baker et al. | Testing UML2. 0 models using TTCN-3 and the UML2. 0 testing profile | |
Massicotte et al. | Generating aspects-classes integration testing sequences a collaboration diagram based strategy | |
Hargassner et al. | A script-based testbed for mobile software frameworks | |
CN112131101A (zh) | 一种自动化测试的方法、测试终端和存储介质 | |
CN101251824B (zh) | 测试公共对象请求代理结构的方法和测试工具 | |
JP2005174045A (ja) | ソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体 | |
Baker et al. | Early UML model testing using TTCN-3 and the UML testing profile | |
Durr et al. | Applying aop in an industrial context | |
CN112527680B (zh) | 一种基于Fitnesse框架的项目API级全链路自动化测试方法及系统 |
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 |