发明内容
本发明的主要目的在于提供一种基于数据处理的本地测试方法、设备、存储介质及装置,旨在解决现有技术中Native App的功能测试效率低的技术问题。
为实现上述目的,本发明提供一种基于数据处理的本地测试方法,所述基于数据处理的本地测试方法包括以下步骤:
获取目标扩展的安装包,将所述目标扩展的安装包安装至原始浏览器,获得扩展浏览器;
获取预设功能代码,通过所述扩展浏览器跳过所述预设功能代码中的原生方法代码;
通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试。
优选地,所述获取目标扩展的安装包,将所述目标扩展的安装包安装至原始浏览器,获得扩展浏览器之前,所述基于数据处理的本地测试方法还包括:
将预设测试要求添加至目标扩展的安装包中;
所述通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试,包括:
通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试,获得与所述预设测试要求对应的测试结果。
优选地,所述通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试,获得与所述预设测试要求对应的测试结果之后,所述基于数据处理的本地测试方法还包括:
获取预设应用程序代码,将所述预设功能代码与所述预设应用程序代码进行集成,获得集成应用程序代码,其中,所述预设功能代码为HTML5代码,所述预设应用程序代码为与所述预设功能代码对应的APP代码;
对所述集成应用程序代码进行兼容性测试和/或集成测试。
优选地,所述将预设测试要求添加至目标扩展的安装包中之前,所述基于数据处理的本地测试方法还包括:
通过面向切面编程给原生方法代码增加环绕通知,生成目标扩展的安装包。
优选地,所述获取预设功能代码,通过所述扩展浏览器跳过所述预设功能代码中的原生方法代码,包括:
获取预设功能代码,通过所述扩展浏览器检测所述预设功能代码中是否存在原生方法代码;
当检测到所述原生方法代码时,跳过所述原生方法代码。
优选地,所述获取预设功能代码,通过所述扩展浏览器检测所述预设功能代码中是否存在原生方法代码,包括:
获取预设功能代码,通过所述扩展浏览器对所述预设功能代码中的代码名称进行遍历;
将遍历到的所述代码名称与预设函数名称进行匹配,若匹配成功,则认定遍历到的所述代码名称为原生方法代码。
优选地,所述获取预设功能代码,通过所述扩展浏览器检测所述预设功能代码中是否存在原生方法代码之后,所述基于数据处理的本地测试方法还包括:
将遍历到的所述代码名称与预设正则表达式进行匹配,若匹配成功,则认定遍历到的所述代码名称为原生方法代码。
此外,为实现上述目的,本发明还提出一种基于数据处理的本地测试设备,所述基于数据处理的本地测试设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于数据处理的本地测试程序,所述基于数据处理的本地测试程序配置为实现如上文所述的基于数据处理的本地测试方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有基于数据处理的本地测试程序,所述基于数据处理的本地测试程序被处理器执行时实现如上文所述的基于数据处理的本地测试方法的步骤。
此外,为实现上述目的,本发明还提出一种基于数据处理的本地测试装置,所述基于数据处理的本地测试装置包括:安装模块、跳过模块和测试模块;
所述安装模块,用于获取目标扩展的安装包,将所述目标扩展的安装包安装至原始浏览器,获得扩展浏览器;
所述跳过模块,用于获取预设功能代码,通过所述扩展浏览器跳过所述预设功能代码中的原生方法代码;
所述测试模块,用于通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试。
本发明中,获取目标扩展的安装包,将所述目标扩展的安装包安装至原始浏览器,获得扩展浏览器,获取预设功能代码,通过所述扩展浏览器跳过所述预设功能代码中的原生方法代码,从而达到直接、方便和快捷地绕过原生方法代码进行回调逻辑的功能测试;通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试,前期测试不依赖原生方法代码,且无需对预设功能代码做任何更改,测试效率提升,减少问题的产生。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的基于数据处理的本地测试设备结构示意图。
如图1所示,该基于数据处理的本地测试设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、客户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。客户接口1003可以包括显示屏(Display),可选客户接口1003还可以包括标准的有线接口、无线接口,对于客户接口1003的有线接口在本发明中可为USB接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(Random Access Memory,RAM)存储器,也可以是稳定的存储器(Non-volatileMemory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对基于数据处理的本地测试设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,认定为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、客户接口模块以及基于数据处理的本地测试程序。
在图1所示的基于数据处理的本地测试设备中,网络接口1004主要用于连接后台服务器,与所述后台服务器进行数据通信;客户接口1003主要用于连接电脑端;所述基于数据处理的本地测试设备通过处理器1001调用存储器1005中存储的基于数据处理的本地测试程序,并执行本发明实施例提供的基于数据处理的本地测试方法。
基于上述硬件结构,提出本发明基于数据处理的本地测试方法的实施例。
参照图2,图2为本发明基于数据处理的本地测试方法第一实施例的流程示意图,提出本发明基于数据处理的本地测试方法第一实施例。
在第一实施例中,所述基于数据处理的本地测试方法包括以下步骤:
步骤S10:获取目标扩展的安装包,将所述目标扩展的安装包安装至原始浏览器,获得扩展浏览器。
应理解的是,本实施例的执行主体是基于数据处理的本地测试设备,其中,所述基于数据处理的本地测试设备可为移动终端、电脑端或服务器等电子设备。所述原始浏览器可以是谷歌浏览器(Google Chrome),将所述目标扩展的安装包安装至原始chrome浏览器,使得获得的扩展chrome浏览器在进行基于数据处理的本地测试时,会自动检测Native,并跳过Native直接执行HTML5回调的测试。
在具体实现中,所述目标扩展的安装包的开发步骤具体为:
首先,创建清单文件(manifest file),所述manifest文件是JavaScript对象简谱(JavaScript Object Notation,简称JSON)格式的元数据文件,其中包括扩展名、扩展的说明和版本号等属性。同时也将通过所述manifest文件向Chrome浏览器声明所述目标扩展的安装包对应的目标扩展程序将要执行的操作,以及执行这些操作需要的权限。基础信息配置包括:扩展的版本、扩展的名字、扩展的简介及扩展的图标;权限配置包括:授权访问标签扩展开发文档(chrome.tabs)、视窗扩展文档(chrome.windows)API和授权匹配本地主机(localhost)的正则;扩展图标展示配置:可以在浏览器的工具栏或地址栏右侧展示。通过安装了所述目标扩展的安装包的所述扩展浏览器进行测试时,可通过点击扩展图标来实现所述目标扩展程序的使用;扩展常驻后台配置:自动生成一个背景页,设置监听到对应域名则调用所述目标扩展程序;配置要注入的脚本代码;配置显示声明访问所述目标扩展程序中的资源。通过创建manifest文件,使得所述目标扩展程序能够与chrome浏览器进行集成,是核心功能脚本集成到chrome浏览器的前提。
其次,开发注入脚本的代码,所述开发注入脚本的代码的原理为:在当前页面文档对象模型(Document Object Model,简称DOM)添加脚本(Script)标签,直接引入扩展的Javascript(简称JS)代码。Javascript是一种脚本语言,主要目的是为了解决服务器终端语言遗留的速度问题,并提供了数据验证的基本功能。所述注入脚本的代码要实现的核心功能为自动检测Native,并跳过Native,以使得安装所述目标扩展的安装包的扩展chrome浏览器能够在基于数据处理的本地测试过程中,绕过Native实现HTML5逻辑的测试,所述核心功能通过核心脚本来实现。
最后,核心脚本的功能开发,所述核心脚本的功能开发的原理为:通过面向切面编程(Aspect Oriented Programming,简称AOP)拦截并绕过所述原始方法(C.Native.),给C.Native对象增加环绕通知(AOP Native.addAround)。
步骤S20:获取预设功能代码,通过所述扩展浏览器跳过所述预设功能代码中的原生方法代码。
可理解的是,所述预设功能代码为HTML5代码,根据开发需求测试相应的功能。由于所述扩展浏览器中已安装所述目标扩展的安装包,可通过所述扩展浏览器的所述目标扩展的安装包对应的所述目标扩展程序,实现跳过所述预设功能代码中的原生方法代码,无需手动注释依赖APP的功能代码,即可继续测试后续纯HTML5代码的功能。所述扩展浏览器对述预设功能代码中的原生方法代码进行检测,若检测到所述预设功能代码中存在需绕过的Native方法,则自动跳过所述需绕过的Native方法,则实现屏蔽对原生APP的功能依赖,直接测试纯HTML5代码逻辑及对应功能。
步骤S30:通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试。
需要说明的是,通过所述扩展浏览器实现了跳过所述预设功能代码中的原生方法代码,解决了混合框架APP在开发前期的基于数据处理的本地测试阶段,使用浏览器访问本地代码,如遇到依赖原生APP的功能(如拍照或语音等),浏览器无法支持,代码阻塞的问题,可直接执行传给Native方法的入参回调函数,实现基于数据处理的本地测试,提升测试效率,从而提升开发效率。
在第一实施例中,获取目标扩展的安装包,将所述目标扩展的安装包安装至原始浏览器,获得扩展浏览器,获取预设功能代码,通过所述扩展浏览器跳过所述预设功能代码中的原生方法代码,从而达到直接、方便和快捷地绕过原生方法代码进行回调逻辑的功能测试;通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试,前期测试不依赖原生方法代码,且无需对预设功能代码做任何更改,测试效率提升,减少问题的产生。
参照图3,图3为本发明基于数据处理的本地测试方法第二实施例的流程示意图,基于上述图2所示的第一实施例,提出本发明基于数据处理的本地测试方法的第二实施例。
在第二实施例中,所述步骤S10之前,还包括:
步骤S01:将预设测试要求添加至目标扩展的安装包中。
可理解的是,在对所述HTML5代码的所述回调逻辑进行测试时,可将需要测试的逻辑结果直接写在所述目标扩展程序中,即添加至所述目标扩展的安装包中,例如拍照,拍照功能的逻辑结果包括:拍照成功和拍照失败,若想测试拍照成功的逻辑功能,则可所述预设测试要求设置为拍照成功,将所述拍照成功写在所述目标扩展程序中,则对HTML5代码的逻辑进行测试时,会直接测试拍照成功的功能。
相应地,所述步骤S30,包括:
步骤S301:通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试,获得与所述预设测试要求对应的测试结果。
需要说明的是,比如拍照,拍照功能的逻辑结果包括:拍照成功和拍照失败,若想测试拍照失败的逻辑功能,则可所述预设测试要求设置为拍照失败,将所述拍照失败写在所述目标扩展程序中,则对HTML5代码的逻辑进行测试时,会直接测试拍照失败的功能,获得拍照失败情况下的测试结果。
在第二实施例中,所述步骤S301之后,还包括:
步骤S302:获取预设应用程序代码,将所述预设功能代码与所述预设应用程序代码进行集成,获得集成应用程序代码,其中,所述预设功能代码为HTML5代码,所述预设应用程序代码为与所述预设功能代码对应的APP代码。
应理解的是,预设应用程序代码是与预设功能代码对应的APP代码。由于所述预设功能代码中各种HTML5逻辑功能已完成了本地功能测试,将所述预设功能代码与所述APP代码集成,集成之后无需偏重HTML5功能测试,只需继续兼容性测试和/或集成测试作为新的测试重点,从而降低了测试周期。
步骤S303:对所述集成应用程序代码进行兼容性测试和/或集成测试。
在具体实现中,兼容测试(Compatibility Test Suite)简称CTS,指对所述集成应用程序代码与硬件、软件之间的兼容性的测试。分为浏览器兼容测试和分辨率兼容测试两类。测试所述集成应用程序代码是否能在不同的操作系统平台上兼容,或测试所述集成应用程序代码是否能在同一操作平台的不同版本上兼容;所述集成应用程序代码本身能否向前或向后兼容;测试所述集成应用程序代码能否与其他相关的软件兼容;数据兼容性测试,主要是指数据能否共享等。所述集成测试,也叫组装测试或联合测试,在所述预设功能代码测试和所述预设应用程序代码测试的基础上,按照设计要求使用通过所述预设功能代码测试和所述预设应用程序代码的构件来构造程序结构,包括:功能性测试,可使用黑盒测试技术针对被测的所述预设功能代码和所述预设应用程序代码的接口规格说明进行测试;非功能性测试,对所述预设功能代码和所述预设应用程序代码的性能或可靠性进行测试。
在第二实施例中,所述步骤S01之前,还包括:
步骤S00:通过面向切面编程给原生方法代码增加环绕通知,生成目标扩展的安装包。
可理解的是,所述通过面向切面编程给原生方法代码增加环绕通知的方式有三个入参,参数一是字符串表示对象名称,所述对象名称为C.Native,表示APP提供给HTML5代码的对象,需要绕过的Native方法均属于该对象的属性。参数二是匹配方式,可以是字符串格式,则表示严格匹配一个函数名称;也可以是正则表达式,统一匹配符合该正则表达式的所有Native函数;还可以是一个函数,在函数中指定返回一个字符串A,表示所有的Native方法代码将会被方式A替代,在所述核心脚本执行期间绕过的Native方法将统一使用方式A的回调结果。参数三是一个函数,该函数内部的主要功能是对绕过的Native方法代码给一个回调结果,按照用户的实际需要,可以给出成功或失败等各种情况的预设测试要求,则测试完成会给出与所述预设测试要求对应的测试结果,通过面向切面编程给原生方法代码增加环绕通知,生成所述目标扩展的安装包,使得所述目标扩展的安装包对应的所述目标扩展程序能够实现跳过原生方法代码的功能。
本实施例中,将预设测试要求添加至目标扩展的安装包中,通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试,获得与所述预设测试要求对应的测试结果,能够实现用户需求的对应结果的测试,提高测试精准度;获取预设应用程序代码,将所述预设功能代码与所述预设应用程序代码进行集成,获得集成应用程序代码,其中,所述预设功能代码为HTML5代码,所述预设应用程序代码为与所述预设功能代码对应的APP代码,对所述集成应用程序代码进行兼容性测试和/或集成测试,集成之后无需偏重HTML5功能测试,只需继续兼容性测试和/或集成测试作为新的测试重点,从而降低了测试周期。
参照图4,图4为本发明基于数据处理的本地测试方法第三实施例的流程示意图,基于上述图3所示的第二实施例,提出本发明基于数据处理的本地测试方法的第三实施例。
在第三实施例中,所述步骤S20,包括:
步骤S201:获取预设功能代码,通过所述扩展浏览器检测所述预设功能代码中是否存在原生方法代码。
应理解的是,所述扩展浏览器中的所述目标扩展安装包对应的所述目标扩展程序能够对所述预设功能代码中是否存在原生方法代码进行检测。支持三种规则,包括:严格匹配、正则匹配或函数过滤匹配。通过上述三种匹配规则判断需要测试的所述预设功能代码中是否存在C.Native.,若匹配成功,说明所述预设功能代码中存在C.Native.,则对匹配上的C.Native.通过环绕通知AOPNative.addAround对C.Native.实现跳过。
在具体实现中,所述目标扩展安装包对应的所述目标扩展程序还具有可扩展性:AOPNative.addAround的回调函数可以按需修改,即调用Native方法时,回调函数所需要的响应的参数,往c++的集成编译环境(CodeBlocks,简称cb)([响应参数])塞值就可以。如果想要细化,比如需要区分页面的功能,可以通过计算机语言window.location.href拿到当前的统一资源定位符(Uniform Resource Locator,简称URL),就可以更细粒度地匹配到该页面下所调用的Native方法。
进一步地,所述步骤S201,包括:
获取预设功能代码,通过所述扩展浏览器对所述预设功能代码中的代码名称进行遍历;
将遍历到的所述代码名称与预设函数名称进行匹配,若匹配成功,则认定遍历到的所述代码名称为原生方法代码。
可理解的是,所述严格匹配是指所述参数二为字符串的情况,只有和字符串完全相同的Native方法名才会被处理,否则会被忽略。通过所述扩展浏览器对所述预设功能代码中的代码名称进行遍历,将遍历到的所述代码名称与预设函数名称进行匹配,所述预设函数名称为:C.Native.,若遍历到的所述代码名称与所述预设函数名称一致,则认为匹配成功,将遍历到的所述代码名称认定为原生方法代码,则跳过所述原生方法代码。
进一步地,所述获取预设功能代码,通过所述扩展浏览器对所述预设功能代码中的代码名称进行遍历之后,还包括:
将遍历到的所述代码名称与预设正则表达式进行匹配,若匹配成功,则认定遍历到的所述代码名称为原生方法代码。
需要说明的是,所述正则匹配是指所述参数二为所述预设正则表达式的情况,只有通过了所述预设正则表达式校验的Native函数名才会被处理,否则会被忽略。通过所述扩展浏览器对所述预设功能代码中的代码名称进行遍历,将遍历到的所述代码名称与预设正则表达式进行匹配,若满足所述预设正则表达式,则认为匹配成功,将遍历到的所述代码名称认定为原生方法代码,则跳过所述原生方法代码。
进一步地,还可通过函数过滤匹配检测所述预设功能代码中是否存在原生方法代码,所述函数过滤匹配主要是对所述严格匹配和所述正则匹配的一种功能增强。通过函数编程,可实现定制化,且更细粒度地拦截所述原生方法,例子:AOPNative.addAround(C.Native,function(method){
if(location.pathname==='account.html'){
return method==='getUserInfo'
}
},function(argv){})
可以细化到拦截预设页面预设方法,返回特定的数据,如上述例子中如果当前为account页面,则对于Native方法全部返回getUserInfo这个方法名,那么只需要在所述参数三中指定getUserInfo的回调结果为success,则当前页面的所有Native自动绕过取getUserInfo的回调结果,最终结果为成功。通过函数编程同样适用于其他一些较复杂的业务场景。
步骤S202:当检测到所述原生方法代码时,跳过所述原生方法代码。
应理解的是,若检测到所述预设功能代码中存在需绕过的Native方法,则自动跳过所述需绕过的Native方法,实现屏蔽对原生APP的功能依赖,直接测试纯HTML5代码逻辑及对应功能。
在第三实施例中,获取预设功能代码,通过所述扩展浏览器检测所述预设功能代码中是否存在原生方法代码,当检测到所述原生方法代码时,跳过所述原生方法代码,实现屏蔽对原生APP的功能依赖,直接测试纯HTML5代码逻辑及对应功能,前期测试不依赖原生方法代码,且无需对预设功能代码做任何更改,提升测试效率。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有基于数据处理的本地测试程序,所述基于数据处理的本地测试程序被处理器执行时实现如上文所述的基于数据处理的本地测试方法的步骤。
此外,参照图5,本发明实施例还提出一种基于数据处理的本地测试装置,所述基于数据处理的本地测试装置包括:安装模块10、跳过模块20和测试模块30;
所述安装模块10,用于获取目标扩展的安装包,将所述目标扩展的安装包安装至原始浏览器,获得扩展浏览器;
所述跳过模块20,用于获取预设功能代码,通过所述扩展浏览器跳过所述预设功能代码中的原生方法代码;
所述测试模块30,用于通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试。
在一实施例中,所述基于数据处理的本地测试装置还包括:添加模块;
所述添加模块,用于将预设测试要求添加至目标扩展的安装包中;
所述测试模块30,还用于通过所述扩展浏览器对所述预设功能代码中的回调逻辑进行测试,获得与所述预设测试要求对应的测试结果。
在一实施例中,所述基于数据处理的本地测试装置还包括:集成模块;
所述集成模块,用于获取预设应用程序代码,将所述预设功能代码与所述预设应用程序代码进行集成,获得集成应用程序代码,其中,所述预设功能代码为HTML5代码,所述预设应用程序代码为与所述预设功能代码对应的APP代码;
所述测试模块30,还用于对所述集成应用程序代码进行兼容性测试和/或集成测试。
在一实施例中,所述基于数据处理的本地测试装置还包括:生成模块;
所述生成模块,用于通过面向切面编程给原生方法代码增加环绕通知,生成目标扩展的安装包。
在一实施例中,所述基于数据处理的本地测试装置还包括:检测模块;
所述检测模块,用于获取预设功能代码,通过所述扩展浏览器检测所述预设功能代码中是否存在原生方法代码;
所述跳过模块20,还用于当检测到所述原生方法代码时,跳过所述原生方法代码。
在一实施例中,所述基于数据处理的本地测试装置还包括:遍历模块和匹配模块;
所述遍历模块,用于获取预设功能代码,通过所述扩展浏览器对所述预设功能代码中的代码名称进行遍历;
所述匹配模块,用于将遍历到的所述代码名称与预设函数名称进行匹配,若匹配成功,则认定遍历到的所述代码名称为原生方法代码。
在一实施例中,所述匹配模块,还用于将遍历到的所述代码名称与预设正则表达式进行匹配,若匹配成功,则认定遍历到的所述代码名称为原生方法代码。
本发明所述基于数据处理的本地测试装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。词语第一、第二、以及第三等的使用不表示任何顺序,可将这些词语解释为名称。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器镜像(Read Only Memory image,ROM)/随机存取存储器(Random AccessMemory,RAM)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。