本发明涉及终端技术领域,尤其涉及一种应用于动态开发的测试方法、装置、电子设备及存储介质。
背景技术
在移动应用开发环境中,版本更新速度越来越快,为减小版本更新的代价,在现有技术中,采用动态化测试框架对移动应用进行热更新。
为保证采用动态化测试框架对移动应用进行热更新的工作顺利进行,需要对动态化测试框架完成热更新的过程进行全面测试,以确定采用动态化测试框架对移动应用进行热更新的可行性。但是,在现有技术中,并没有相应的测试方案可以完成该项测试。
技术实现要素:
本发明的主要目的在于提出一种应用于动态开发的测试方法、装置、电子设备及存储介质,其克服了现有技术中无法依据预设更新测试组件对完成热更新的过程进行全面测试的问题。
根据本发明的第一个方面,提供了一种应用于动态开发的测试方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:获取来自服务端的更新测试数据包;基于预设更新测试组件,执行所述更新测试数据包,得到更新执行结果;通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
可选的,在所述获取来自服务端的更新测试数据包之后,所述方法还包括:基于预设安全机制对所述更新测试数据包是否合法进行安全校验;在校验通过的情况下,得到供执行的更新测试数据包。
可选的,在所述获取来自服务端的更新测试数据包之后,且在所述基于预设更新测试组件,执行所述更新测试数据包之前,所述方法包括:获取所述更新测试数据包的大小数值;依据所述更新测试数据包的大小数值与对应的原生更新所需数据包的大小数值之间的数值关系,确定是否执行所述更新测试数据包,其中,所述更新测试数据包及对应的所述原生更新所需数据包均是用于对相同版本的应用程序进行更新。
可选的,在基于预设更新测试组件,执行所述更新测试数据包时,所述方法还包括:通过预设性能测试工具获取所述更新测试数据包被执行过程中的性能数据;依据所述性能数据,确定所述应用程序在所述更新测试数据包被执行过程中的性能是否合格。
可选的,所述预设性能测试工具包括以下一种或多种:流量测试工具、cpu测试工具、流畅度测试工具、及内存测试工具。
可选的,所述基于预设更新测试组件,执行所述更新测试数据包的时机包括以下任意一种:当获取所述更新测试数据包时、及当所述应用程序下次被重启时。
可选的,在所述更新执行结果满足预设标准的情况下,得到所述预设更新测试组件具有更新功能的测试结果及所述更新测试数据包具有安全性。
可选的,所述更新测试数据包包括:异常代码;在所述更新执行结果满足预设标准时,所述测试结果中反映出所述预设更新测试组件具有异常代码处理功能,否则,得到所述测试结果中反映出所述预设更新测试组件不具有异常代码处理功能。
可选的,在所述更新执行结果不满足预设标准的情况下,所述方法还包括:获取新的更新测试数据包;基于预设更新测试组件,执行所述新的更新测试数据包,以对所述预设更新测试组件进行修补,并得到新的更新执行结果。
可选的,所述更新测试数据包包括:更新组件数据及通过第一脚本语言编写的业务逻辑数据;所述基于预设更新测试组件,执行所述更新测试数据包,包括:基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,所述第二脚本语言组件注册于原生系统;基于所述业务逻辑数据及所述更新组件数据,通过所述原生系统构建所述更新执行结果。
可选的,在所述获取来自服务端的更新测试数据包之后,所述方法还包括:将所述更新测试数据包进行存储,以供所述第一脚本语言组件将存储的所述业务逻辑数据发送至第二脚本语言组件。
可选的,所述基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,包括:通过所述第一脚本语言组件查找到所述业务逻辑数据,其中,所述第一脚本语言组件具体为:在混合开发模式下,与原生系统中用于构建所述更新执行结果的程序所实现的功能相对应的非原生组件;通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生系统可以执行的业务逻辑数据;将转换为所述原生系统可以执行的业务逻辑数据发送至所述第二脚本语言组件。
可选的,所述基于所述业务逻辑数据及所述更新组件数据,通过所述原生系统构建所述更新执行结果,包括:对查找到的所述更新组件数据进行解析,得到更新元素;基于所述更新元素,通过所述原生系统反射执行所述原生系统可以执行的业务逻辑数据,以完成所述更新执行结果的构建。
根据本发明的第二个方面,提供了一种应用于动态开发的测试装置,应用于基于混合开发模式所开发的应用程序,所述装置包括:获取模块,用于获取来自服务端的更新测试数据包;执行模块,用于基于预设更新测试组件,执行所述更新测试数据包,得到更新执行结果;测试结果得到模块,用于通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
可选的,所述装置还包括:校验模块,用于在所述获取来自服务端的更新测试数据包之后,基于预设安全机制对所述更新测试数据包是否合法进行安全校验;校验结果得到模块,用于在校验通过的情况下,得到供执行的更新测试数据包。
可选的,所述装置包括:数值获取模块,用于在所述获取来自服务端的更新测试数据包之后,且在所述基于预设更新测试组件,执行所述更新测试数据包之前,获取所述更新测试数据包的大小数值;数值比较模块,用于依据所述更新测试数据包的大小数值与对应的原生更新所需数据包的大小数值之间的数值关系,确定是否执行所述更新测试数据包,其中,所述更新测试数据包及对应的所述原生更新所需数据包均是用于对相同版本的应用程序进行更新。
可选的,所述装置还包括:性能数据获取模块,用于在基于预设更新测试组件,执行所述更新测试数据包时,通过预设性能测试工具获取所述更新测试数据包被执行过程中的性能数据;性能结果得到模块,用于依据所述性能数据,确定所述应用程序在所述更新测试数据包被执行过程中的性能是否合格。
可选的,所述预设性能测试工具包括以下一种或多种:流量测试工具、cpu测试工具、流畅度测试工具、及内存测试工具。
可选的,所述基于预设更新测试组件,执行所述更新测试数据包的时机包括以下任意一种:当获取所述更新测试数据包时、及当所述应用程序下次被重启时。
可选的,在所述更新执行结果满足预设标准的情况下,得到所述预设更新测试组件具有更新功能的测试结果及所述更新测试数据包具有安全性的测试结果。
可选的,所述更新测试数据包包括:异常代码;在所述更新执行结果满足预设标准时,所述测试结果中反映出所述预设更新测试组件具有异常代码处理功能,否则,得到所述测试结果中反映出所述预设更新测试组件不具有异常代码处理功能。
可选的,在所述更新执行结果不满足预设标准的情况下,所述装置还包括:
新数据包获取模块,用于获取新的更新测试数据包;修补模块,用于基于预设更新测试组件,执行所述新的更新测试数据包,以对所述预设更新测试组件进行修补,并得到新的更新执行结果。
可选的,所述更新测试数据包包括:更新组件数据及通过第一脚本语言编写的业务逻辑数据;所述执行模块包括:发送单元,用于基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,所述第二脚本语言组件注册于原生系统;构建单元,用于基于所述业务逻辑数据及所述更新组件数据,通过所述原生系统构建所述更新执行结果。
可选的,所述装置还包括:存储模块,用于在所述获取来自服务端的更新测试数据包之后,将所述更新测试数据包进行存储,以供所述第一脚本语言组件将存储的所述业务逻辑数据发送至第二脚本语言组件。
可选的,所述发送单元具体用于:通过所述第一脚本语言组件查找到所述业务逻辑数据,其中,所述第一脚本语言组件具体为:在混合开发模式下,与原生系统中用于构建所述更新执行结果的程序所实现的功能相对应的非原生组件;通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生系统可以执行的业务逻辑数据;将转换为所述原生系统可以执行的业务逻辑数据发送至所述第二脚本语言组件。
可选的,所述构建单元具体用于:对查找到的所述更新组件数据进行解析,得到更新元素;基于所述更新元素,通过所述原生系统反射执行所述原生系统可以执行的业务逻辑数据,以完成所述更新执行结果的构建。
根据本发明的第三个方面,提供了一种计算机设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种应用于动态开发的测试方法。
根据本发明的第四个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的一种应用于动态开发的测试方法。
本发明有益效果如下:应用程序通过从服务端获取更新测试数据包,并基于预设更新测试组件执行该更新测试数据包,以得到更新执行结果。再结合该更新执行结果与预设标准的关系,得到测试结果,从而实现了对预设更新测试组件完成应用程序的动态化更新的全面测试。
附图说明
图1为本发明第一实施例一种应用于动态开发的测试方法的流程框图;
图2为本发明第二实施例一种应用于动态开发的测试方法的流程框图;
图3为本发明第三实施例一种应用于动态开发的测试方法的流程框图;
图4为本发明第四实施例一种应用于动态开发的测试方法的流程框图;
图5为本发明第五实施例一种应用于动态开发的测试方法的流程框图;
图6为本发明第六实施例一种应用于动态开发的测试方法的流程框图;
图7为本发明第七实施例一种应用于动态开发的测试方法的流程框图;
图8为本发明第八实施例一种应用于动态开发的测试方法的流程框图;
图9为本发明第九实施例一种应用于动态开发的测试装置的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
为了便于理解本发明实施例,下面通过几个具体实施例对本发明的实施过程进行详细的阐述。
本发明第一实施例提供一种应用于动态开发的测试方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
获取来自服务端的更新测试数据包;基于预设更新测试组件,执行所述更新测试数据包,得到更新执行结果;通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
就此,应用程序通过从服务端获取更新测试数据包,并基于预设更新测试组件执行该更新测试数据包,以得到更新执行结果。再结合该更新执行结果与预设标准的关系,得到测试结果,从而实现了对预设更新测试组件完成应用程序的动态化更新的全面测试。
图1为本发明第一实施例一种应用于动态开发的测试方法的流程框图。根据图1所示,本发明第一实施例提供了一种应用于动态开发的测试方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
s11:获取来自服务端的更新测试数据包;
在该应用程序检测到服务端存在更新测试数据包时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新测试数据包至应用程序,以使得该应用程序获取到来自服务端的更新测试数据。
s12:基于预设更新测试组件,执行所述更新测试数据包,得到更新执行结果;
基于预设更新测试组件,应用程序执行获取到的更新测试数据包,以得到更新执行结果。可选的,应用程序通过预设更新测试组件执行获取到的更新测试数据包,以得到更新执行结果。
针对该预设更新测试组件,其包括:应用于对应用程序进行动态化更新的动态化测试框架。
可选的,该步骤s12的执行时机包括但不限于:当应用程序获取所述更新测试数据包时、及当所述应用程序下次被重启时。在本实施例中,并不对该执行时机进行限定,只需其满足本发明的要求即可。
s13:通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
在得到更新执行结果后,应用程序判断该更新执行结果是否满足预设标准,若该更新执行结果满足该预设标准,则得到表征为该更新执行结果满足预设标准的测试结果,否则,得到表征为该更新执行结果不满足预设标准的测试结果。
可选的,在所述更新执行结果不满足预设标准的情况下,本实施例还包括以下步骤:获取新的更新测试数据包;基于预设更新测试组件,执行所述新的更新测试数据包,以对所述预设更新测试组件进行修补,并得到新的更新执行结果。
可选的,若需要对预设更新测试组件是否进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述预设更新测试组件具有更新功能的测试结果。
可选的,若需要对从服务端获取的更新测试数据包是否合格进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述更新测试数据包合格。
其中,该对从服务端获取的更新测试数据包的测试内容包括但不限于:对更新测试数据包的安全性、完整性以及准确性进行测试,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。
可选的,在更新测试数据包包括异常代码的情况下,在所述更新执行结果满足预设标准时,所述测试结果中反映出所述预设更新测试组件具有异常代码处理功能,即:得到所述预设更新测试组件具有异常代码处理功能的测试结果;否则,得到所述测试结果中反映出所述预设更新测试组件不具有异常代码处理功能,即:所述预设更新测试组件不具有异常代码处理功能的测试结果。
就此,应用程序通过从服务端获取更新测试数据包,并基于预设更新测试组件执行该更新测试数据包,以得到更新执行结果。再结合该更新执行结果与预设标准的关系,得到测试结果,从而实现了对预设更新测试组件完成应用程序的动态化更新的全面测试。
图2为本发明第二实施例一种应用于动态开发的测试方法的流程框图。根据图2所示,本发明第二实施例提供了一种应用于动态开发的测试方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
s21:获取来自服务端的更新测试数据包;
在该应用程序检测到服务端存在更新测试数据包时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新测试数据包至应用程序,以使得该应用程序获取到来自服务端的更新测试数据。
s22:基于预设安全机制对所述更新测试数据包是否合法进行安全校验;在校验通过的情况下,得到供执行的更新测试数据包;
具体的,即:应用程序在从服务端成功下载更新测试数据包后,基于预设安全机制,应用程序对所述更新测试数据包是否合法进行安全校验,校验内容包括:对更新测试数据包的安全性、完整性以及准确性进行校验,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。
此外,在本实施例中,并不对校验内容作出限定,只需其可以满足本实施例的要求即可。
而且,在校验通过后,得到校验通过的更新测试数据包,该更新测试数据包即为:应用程序基于预设更新测试组件所执行的更新测试数据包。
可选的,若该更新测试数据包的校验未通过,删除该未通过校验的更新测试数据包。
s23:基于预设更新测试组件,执行所述更新测试数据包,得到更新执行结果;
基于预设更新测试组件,应用程序执行获取到的更新测试数据包,以得到更新执行结果。可选的,应用程序通过预设更新测试组件执行获取到的更新测试数据包,以得到更新执行结果。
针对该预设更新测试组件,其包括:应用于对应用程序进行动态化更新的动态化测试框架。
可选的,该步骤s23的执行时机包括但不限于:当应用程序获取所述更新测试数据包时、及当所述应用程序下次被重启时。在本实施例中,并不对该执行时机进行限定,只需其满足本发明的要求即可。
s24:通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
在得到更新执行结果后,应用程序判断该更新执行结果是否满足预设标准,若该更新执行结果满足该预设标准,则得到表征为该更新执行结果满足预设标准的测试结果,否则,得到表征为该更新执行结果不满足预设标准的测试结果。
可选的,在所述更新执行结果不满足预设标准的情况下,本实施例还包括以下步骤:获取新的更新测试数据包;基于预设更新测试组件,执行所述新的更新测试数据包,以对所述预设更新测试组件进行修补,并得到新的更新执行结果。
可选的,若需要对预设更新测试组件是否进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述预设更新测试组件具有更新功能的测试结果。
可选的,若需要对从服务端获取的更新测试数据包是否合格进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述更新测试数据包合格。
其中,该对从服务端获取的更新测试数据包的测试内容包括但不限于:对更新测试数据包的安全性、完整性以及准确性进行测试,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。该部分在上述步骤s22的基础上,进一步保证了更新测试数据包的安全性。
可选的,在更新测试数据包包括异常代码的情况下,在所述更新执行结果满足预设标准时,所述测试结果中反映出所述预设更新测试组件具有异常代码处理功能,即:得到所述预设更新测试组件具有异常代码处理功能的测试结果;否则,得到所述测试结果中反映出所述预设更新测试组件不具有异常代码处理功能,即:所述预设更新测试组件不具有异常代码处理功能的测试结果。
就此,应用程序通过从服务端获取更新测试数据包,并基于预设更新测试组件执行该更新测试数据包,以得到更新执行结果。再结合该更新执行结果与预设标准的关系,得到测试结果,从而实现了对预设更新测试组件完成应用程序的动态化更新的全面测试。
图3为本发明第三实施例一种应用于动态开发的测试方法的流程框图。根据图3所示,本发明第三实施例提供了一种应用于动态开发的测试方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
s31:获取来自服务端的更新测试数据包;
在该应用程序检测到服务端存在更新测试数据包时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新测试数据包至应用程序,以使得该应用程序获取到来自服务端的更新测试数据。
s32:获取所述更新测试数据包的大小数值;依据所述更新测试数据包的大小数值与对应的原生更新所需数据包的大小数值之间的数值关系,确定是否执行所述更新测试数据包,其中,所述更新测试数据包及对应的所述原生更新所需数据包均是用于对相同版本的应用程序进行更新;
具体的,应用程序在从服务端成功下载更新测试数据包后,获取所述更新测试数据包的大小数值。
然后,依据所述更新测试数据包的大小数值与对应的原生更新所需数据包的大小数值之间的数值关系,确定是否执行所述更新测试数据包,其中,所述更新测试数据包及对应的所述原生更新所需数据包均是用于对相同版本的应用程序进行更新。
如:待更新的应用程序的版本为13.0。更新测试数据包为应用程序从服务端获取的,且该应用程序基于该更新测试数据包进行动态化更新。而原生更新所需数据包用于:基于原生更新所需数据包,该应用程序的原生系统对该应用程序进行原生更新。
在本实施例中,针对更新测试数据包与对应的原生更新所需数据包之间的数值关系对是否执行该更新测试数据包的控制,进行以下举例说明:
在该更新测试数据包的大小数值不大于对应的原生更新所需数据包的大小数值的情况下,执行该更新测试数据包,否则,不执行该更新测试数据包;
或者,在该更新测试数据包的大小数值小于对应的原生更新所需数据包的大小数值的情况下,执行该更新测试数据包,否则,不执行该更新测试数据包;
或者,在该更新测试数据包的大小数值=对应的原生更新所需数据包的大小数值±n时,执行该更新测试数据包,其中,n为正数,否则,不执行该更新测试数据包。
可选的,该原生更新所需数据包的大小数值是预存在该应用程序的。当然,也可为:在应用程序获取更新测试数据包的同时,应用程序也从服务端获取该原生更新所需数据包的大小数值,在本实施例中,并不对该原生更新所需数据包的大小数值的来源做出限定,只需其满足本实施例的要求即可。
s33:基于预设更新测试组件,执行所述更新测试数据包,得到更新执行结果;
基于预设更新测试组件,应用程序执行获取到的更新测试数据包,以得到更新执行结果。可选的,应用程序通过预设更新测试组件执行获取到的更新测试数据包,以得到更新执行结果。
针对该预设更新测试组件,其包括:应用于对应用程序进行动态化更新的动态化测试框架。
可选的,该步骤s33的执行时机包括但不限于:当应用程序获取所述更新测试数据包时、及当所述应用程序下次被重启时。在本实施例中,并不对该执行时机进行限定,只需其满足本发明的要求即可。
s34:通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
在得到更新执行结果后,应用程序判断该更新执行结果是否满足预设标准,若该更新执行结果满足该预设标准,则得到表征为该更新执行结果满足预设标准的测试结果,否则,得到表征为该更新执行结果不满足预设标准的测试结果。
可选的,在所述更新执行结果不满足预设标准的情况下,本实施例还包括以下步骤:获取新的更新测试数据包;基于预设更新测试组件,执行所述新的更新测试数据包,以对所述预设更新测试组件进行修补,并得到新的更新执行结果。
可选的,若需要对预设更新测试组件是否进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述预设更新测试组件具有更新功能的测试结果。
可选的,若需要对从服务端获取的更新测试数据包是否合格进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述更新测试数据包合格。
其中,该对从服务端获取的更新测试数据包的测试内容包括但不限于:对更新测试数据包的安全性、完整性以及准确性进行测试,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。
可选的,在更新测试数据包包括异常代码的情况下,在所述更新执行结果满足预设标准时,所述测试结果中反映出所述预设更新测试组件具有异常代码处理功能,即:得到所述预设更新测试组件具有异常代码处理功能的测试结果;否则,得到所述测试结果中反映出所述预设更新测试组件不具有异常代码处理功能,即:所述预设更新测试组件不具有异常代码处理功能的测试结果。
就此,应用程序通过从服务端获取更新测试数据包,并基于预设更新测试组件执行该更新测试数据包,以得到更新执行结果。再结合该更新执行结果与预设标准的关系,得到测试结果,从而实现了对预设更新测试组件完成应用程序的动态化更新的全面测试。
图4为本发明第四实施例一种应用于动态开发的测试方法的流程框图。根据图4所示,本发明第四实施例提供了一种应用于动态开发的测试方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
s41:获取来自服务端的更新测试数据包;
在该应用程序检测到服务端存在更新测试数据包时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新测试数据包至应用程序,以使得该应用程序获取到来自服务端的更新测试数据。
s42:基于预设更新测试组件,执行所述更新测试数据包,得到更新执行结果;
基于预设更新测试组件,应用程序执行获取到的更新测试数据包,以得到更新执行结果。可选的,应用程序通过预设更新测试组件执行获取到的更新测试数据包,以得到更新执行结果。
针对该预设更新测试组件,其包括:应用于对应用程序进行动态化更新的动态化测试框架。
可选的,该步骤s42的执行时机包括但不限于:当应用程序获取所述更新测试数据包时、及当所述应用程序下次被重启时。在本实施例中,并不对该执行时机进行限定,只需其满足本发明的要求即可。
而且,在执行上述步骤s42的过程中,本实施例还执行以下步骤s43。
s43:通过预设性能测试工具获取所述更新测试数据包被执行过程中的性能数据;依据所述性能数据,确定所述应用程序在在所述更新测试数据包被执行过程中的性能是否合格;
具体的,在应用程序基于预设更新测试组件以执行所述更新测试数据包的过程中,通过上述的预设性能测试工具获取相应的性能数据。
针对该预设性能测试工具,其包括但不限于:流量测试工具、cpu测试工具、流畅度测试工具、及内存测试工具。
其中,流量测试工具包括但不限于fiddler、charles;cpu测试工具及流畅度测试工具均包括但不限于gt工具;内存测试工具包括但不限于安卓系统android的mat工具。
在本实施例中,若满足以下任一种情况,则可以确定该应用程序在更新测试数据包被执行过程中的性能合格:若通过流量测试工具获取的数据及流量测试工具在原生更新时获取的数据基本保持一致、若通过cpu测试工具及流畅度测试工具获取的数据与cpu测试工具及流畅度测试工具在原生更新时获取的gpu过度绘制数据和流畅度情况基本保持一致、通过cpu测试工具获取的内存数据略高于原生更新时的内存数据、或通过cpu测试工具获取的cpu占用率略高于原生更新时的cpu占用率。
s44:通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
在得到更新执行结果后,应用程序判断该更新执行结果是否满足预设标准,若该更新执行结果满足该预设标准,则得到表征为该更新执行结果满足预设标准的测试结果,否则,得到表征为该更新执行结果不满足预设标准的测试结果。
可选的,在所述更新执行结果不满足预设标准的情况下,本实施例还包括以下步骤:获取新的更新测试数据包;基于预设更新测试组件,执行所述新的更新测试数据包,以对所述预设更新测试组件进行修补,并得到新的更新执行结果。
可选的,若需要对预设更新测试组件是否进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述预设更新测试组件具有更新功能的测试结果。
可选的,若需要对从服务端获取的更新测试数据包是否合格进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述更新测试数据包合格。
其中,该对从服务端获取的更新测试数据包的测试内容包括但不限于:对更新测试数据包的安全性、完整性以及准确性进行测试,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。
可选的,在更新测试数据包包括异常代码的情况下,在所述更新执行结果满足预设标准时,所述测试结果中反映出所述预设更新测试组件具有异常代码处理功能,即:得到所述预设更新测试组件具有异常代码处理功能的测试结果;否则,得到所述测试结果中反映出所述预设更新测试组件不具有异常代码处理功能,即:所述预设更新测试组件不具有异常代码处理功能的测试结果。
就此,应用程序通过从服务端获取更新测试数据包,并基于预设更新测试组件执行该更新测试数据包,以得到更新执行结果。再结合该更新执行结果与预设标准的关系,得到测试结果,从而实现了对预设更新测试组件完成应用程序的动态化更新的全面测试。
图5为本发明第五实施例一种应用于动态开发的测试方法的流程框图。根据图5所示,本发明第五实施例提供了一种应用于动态开发的测试方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
s51:获取来自服务端的更新测试数据包;
在该应用程序检测到服务端存在更新测试数据包时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新测试数据包至应用程序,以使得该应用程序获取到来自服务端的更新测试数据。
s52:基于预设安全机制对所述更新测试数据包是否合法进行安全校验;在校验通过的情况下,得到供执行的更新测试数据包;
具体的,即:应用程序在从服务端成功下载更新测试数据包后,基于预设安全机制,应用程序对所述更新测试数据包是否合法进行安全校验,校验内容包括:对更新测试数据包的安全性、完整性以及准确性进行校验,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。
此外,在本实施例中,并不对校验内容作出限定,只需其可以满足本实施例的要求即可。
而且,在校验通过后,得到校验通过的更新测试数据包,该更新测试数据包即为:应用程序基于预设更新测试组件所执行的更新测试数据包。
可选的,若该更新测试数据包的校验未通过,删除该未通过校验的更新测试数据包。
s53:获取所述更新测试数据包的大小数值;依据所述更新测试数据包的大小数值与对应的原生更新所需数据包的大小数值之间的数值关系,确定是否执行所述更新测试数据包,其中,所述更新测试数据包及对应的所述原生更新所需数据包均是用于对相同版本的应用程序进行更新;
可选的,该原生更新所需数据包的大小数值是预存在该应用程序的。当然,也可为:在应用程序获取更新测试数据包的同时,应用程序也从服务端获取该原生更新所需数据包的大小数值,在本实施例中,并不对该原生更新所需数据包的大小数值的来源做出限定,只需其满足本实施例的要求即可。
s54:基于预设更新测试组件,执行所述更新测试数据包,得到更新执行结果;
基于预设更新测试组件,应用程序执行获取到的更新测试数据包,以得到更新执行结果。可选的,应用程序通过预设更新测试组件执行获取到的更新测试数据包,以得到更新执行结果。
针对该预设更新测试组件,其包括:应用于对应用程序进行动态化更新的动态化测试框架。
可选的,该步骤s54的执行时机包括但不限于:当应用程序获取所述更新测试数据包时、及当所述应用程序下次被重启时。在本实施例中,并不对该执行时机进行限定,只需其满足本发明的要求即可。
而且,在执行上述步骤s54的过程中,本实施例还执行以下步骤s55。
s55:通过预设性能测试工具获取所述更新测试数据包被执行过程中的性能数据;依据所述性能数据,确定所述应用程序在在所述更新测试数据包被执行过程中的性能是否合格;
具体的,在应用程序基于预设更新测试组件以执行所述更新测试数据包的过程中,通过上述的预设性能测试工具获取相应的性能数据。
针对该预设性能测试工具,其包括但不限于:流量测试工具、cpu测试工具、流畅度测试工具、及内存测试工具。
其中,流量测试工具包括但不限于fiddler、charles;cpu测试工具及流畅度测试工具均包括但不限于gt工具;内存测试工具包括但不限于安卓系统android的mat工具。
在本实施例中,若满足以下任一种情况,则可以确定该应用程序在更新测试数据包被执行过程中的性能合格:若通过流量测试工具获取的数据及流量测试工具在原生更新时获取的数据基本保持一致、若通过cpu测试工具及流畅度测试工具获取的数据与cpu测试工具及流畅度测试工具在原生更新时获取的gpu过度绘制数据和流畅度情况基本保持一致、通过cpu测试工具获取的内存数据略高于原生更新时的内存数据、或通过cpu测试工具获取的cpu占用率略高于原生更新时的cpu占用率。
s56:通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
在得到更新执行结果后,应用程序判断该更新执行结果是否满足预设标准,若该更新执行结果满足该预设标准,则得到表征为该更新执行结果满足预设标准的测试结果,否则,得到表征为该更新执行结果不满足预设标准的测试结果。
可选的,在所述更新执行结果不满足预设标准的情况下,本实施例还包括以下步骤:获取新的更新测试数据包;基于预设更新测试组件,执行所述新的更新测试数据包,以对所述预设更新测试组件进行修补,并得到新的更新执行结果。
可选的,若需要对预设更新测试组件是否进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述预设更新测试组件具有更新功能的测试结果。
可选的,若需要对从服务端获取的更新测试数据包是否合格进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述更新测试数据包合格。
其中,该对从服务端获取的更新测试数据包的测试内容包括但不限于:对更新测试数据包的安全性、完整性以及准确性进行测试,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。该部分在上述步骤s52的基础上,进一步保证了更新测试数据包的安全性。
可选的,在更新测试数据包包括异常代码的情况下,在所述更新执行结果满足预设标准时,所述测试结果中反映出所述预设更新测试组件具有异常代码处理功能,即:得到所述预设更新测试组件具有异常代码处理功能的测试结果;否则,得到所述测试结果中反映出所述预设更新测试组件不具有异常代码处理功能,即:所述预设更新测试组件不具有异常代码处理功能的测试结果。
就此,应用程序通过从服务端获取更新测试数据包,并基于预设更新测试组件执行该更新测试数据包,以得到更新执行结果。再结合该更新执行结果与预设标准的关系,得到测试结果,从而实现了对预设更新测试组件完成应用程序的动态化更新的全面测试。
图6为本发明第六实施例一种应用于动态开发的测试方法的流程框图。根据图6所示,本发明第六实施例提供了一种应用于动态开发的测试方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
s61:获取来自服务端的更新测试数据包;
在该应用程序检测到服务端存在更新测试数据包时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新测试数据包至应用程序,以使得该应用程序获取到来自服务端的更新测试数据。
s62:基于预设安全机制对所述更新测试数据包是否合法进行安全校验;在校验通过的情况下,得到供执行的更新测试数据包;
具体的,即:应用程序在从服务端成功下载更新测试数据包后,基于预设安全机制,应用程序对所述更新测试数据包是否合法进行安全校验,校验内容包括:对更新测试数据包的安全性、完整性以及准确性进行校验,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。
此外,在本实施例中,并不对校验内容作出限定,只需其可以满足本实施例的要求即可。
而且,在校验通过后,得到校验通过的更新测试数据包,该更新测试数据包即为:应用程序基于预设更新测试组件所执行的更新测试数据包。
可选的,若该更新测试数据包的校验未通过,删除该未通过校验的更新测试数据包。
s63:获取所述更新测试数据包的大小数值;依据所述更新测试数据包的大小数值与对应的原生更新所需数据包的大小数值之间的数值关系,确定是否执行所述更新测试数据包,其中,所述更新测试数据包及对应的所述原生更新所需数据包均是用于对相同版本的应用程序进行更新;
可选的,该原生更新所需数据包的大小数值是预存在该应用程序的。当然,也可为:在应用程序获取更新测试数据包的同时,应用程序也从服务端获取该原生更新所需数据包的大小数值,在本实施例中,并不对该原生更新所需数据包的大小数值的来源做出限定,只需其满足本实施例的要求即可。
s64:基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,所述第二脚本语言组件注册于原生系统,而且,更新组件数据及通过第一脚本语言编写的业务逻辑数据均包含于更新测试数据包;
其中,编写该业务逻辑数据的第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言javascript,而应用程序的原生语言为java。当然,该编写业务逻辑数据的第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为java。
其中,编写该更新组件数据的语言可为可扩展标记语言xml。
在本实施例中,并不对该编写更新组件数据及编写该业务逻辑数据的语言种类进行限定,只需其满足本实施例的要求即可。
通过第一脚本语言组件将该业务逻辑数据发送至第二脚本语言组件,而且,该业务逻辑数据是通过数据传输通道发送至第二脚本语言组件的,其中,脚本语言组件注册于应用程序的原生系统,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互。
可选的,在应用程序获取到该更新测试数据包后,应用程序将所述更新测试数据包进行存储,以供所述第一脚本语言组件将存储的所述业务逻辑数据发送至第二脚本语言组件。
s65:基于所述业务逻辑数据及所述更新组件数据,通过所述原生系统构建所述更新执行结果;
具体的,应用程序通过原生系统执行所述业务逻辑数据,以对更新组件数据拼接,从而完成更新执行结果的构建。
当然,在更新执行结果构建完成后,可以通过所述第二脚本语言组件对所述更新执行结果进行展示。
针对该预设更新测试组件,其包括:应用于对应用程序进行动态化更新的动态化测试框架。
可选的,上述步骤s64的执行时机包括但不限于:当应用程序获取所述更新测试数据包时、及当所述应用程序下次被重启时。在本实施例中,并不对该执行时机进行限定,只需其满足本发明的要求即可。
而且,在执行上述步骤s64至s65的过程中,本实施例还执行以下步骤s66。
s66:通过预设性能测试工具获取所述更新测试数据包被执行过程中的性能数据;依据所述性能数据,确定所述应用程序在在所述更新测试数据包被执行过程中的性能是否合格;
具体的,在应用程序基于预设更新测试组件以执行所述更新测试数据包的过程中,通过上述的预设性能测试工具获取相应的性能数据。
针对该预设性能测试工具,其包括但不限于:流量测试工具、cpu测试工具、流畅度测试工具、及内存测试工具。
其中,流量测试工具包括但不限于fiddler、charles;cpu测试工具及流畅度测试工具均包括但不限于gt工具;内存测试工具包括但不限于安卓系统android的mat工具。
在本实施例中,若满足以下任一种情况,则可以确定该应用程序在更新测试数据包被执行过程中的性能合格:若通过流量测试工具获取的数据及流量测试工具在原生更新时获取的数据基本保持一致、若通过cpu测试工具及流畅度测试工具获取的数据与cpu测试工具及流畅度测试工具在原生更新时获取的gpu过度绘制数据和流畅度情况基本保持一致、通过cpu测试工具获取的内存数据略高于原生更新时的内存数据、或通过cpu测试工具获取的cpu占用率略高于原生更新时的cpu占用率。
s67:通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
在得到更新执行结果后,应用程序判断该更新执行结果是否满足预设标准,若该更新执行结果满足该预设标准,则得到表征为该更新执行结果满足预设标准的测试结果,否则,得到表征为该更新执行结果不满足预设标准的测试结果。
可选的,在所述更新执行结果不满足预设标准的情况下,本实施例还包括以下步骤:获取新的更新测试数据包;基于预设更新测试组件,执行所述新的更新测试数据包,以对所述预设更新测试组件进行修补,并得到新的更新执行结果。
可选的,若需要对预设更新测试组件是否进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述预设更新测试组件具有更新功能的测试结果。
可选的,若需要对从服务端获取的更新测试数据包是否合格进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述更新测试数据包合格。
其中,该对从服务端获取的更新测试数据包的测试内容包括但不限于:对更新测试数据包的安全性、完整性以及准确性进行测试,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。该部分在上述步骤s62的基础上,进一步保证了更新测试数据包的安全性。
可选的,在更新测试数据包包括异常代码的情况下,在所述更新执行结果满足预设标准时,所述测试结果中反映出所述预设更新测试组件具有异常代码处理功能,即:得到所述预设更新测试组件具有异常代码处理功能的测试结果;否则,得到所述测试结果中反映出所述预设更新测试组件不具有异常代码处理功能,即:所述预设更新测试组件不具有异常代码处理功能的测试结果。
就此,应用程序通过从服务端获取更新测试数据包,并基于预设更新测试组件执行该更新测试数据包,以得到更新执行结果。再结合该更新执行结果与预设标准的关系,得到测试结果,从而实现了对预设更新测试组件完成应用程序的动态化更新的全面测试。
图7为本发明第七实施例一种应用于动态开发的测试方法的流程框图。根据图7所示,本发明第七实施例提供了一种应用于动态开发的测试方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
s71:获取来自服务端的更新测试数据包;
在该应用程序检测到服务端存在更新测试数据包时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新测试数据包至应用程序,以使得该应用程序获取到来自服务端的更新测试数据。
s72:基于预设安全机制对所述更新测试数据包是否合法进行安全校验;在校验通过的情况下,得到供执行的更新测试数据包;
具体的,即:应用程序在从服务端成功下载更新测试数据包后,基于预设安全机制,应用程序对所述更新测试数据包是否合法进行安全校验,校验内容包括:对更新测试数据包的安全性、完整性以及准确性进行校验,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。
此外,在本实施例中,并不对校验内容作出限定,只需其可以满足本实施例的要求即可。
而且,在校验通过后,得到校验通过的更新测试数据包,该更新测试数据包即为:应用程序基于预设更新测试组件所执行的更新测试数据包。
可选的,若该更新测试数据包的校验未通过,删除该未通过校验的更新测试数据包。
s73:获取所述更新测试数据包的大小数值;依据所述更新测试数据包的大小数值与对应的原生更新所需数据包的大小数值之间的数值关系,确定是否执行所述更新测试数据包,其中,所述更新测试数据包及对应的所述原生更新所需数据包均是用于对相同版本的应用程序进行更新;
可选的,该原生更新所需数据包的大小数值是预存在该应用程序的。当然,也可为:在应用程序获取更新测试数据包的同时,应用程序也从服务端获取该原生更新所需数据包的大小数值,在本实施例中,并不对该原生更新所需数据包的大小数值的来源做出限定,只需其满足本实施例的要求即可。
s74:通过所述第一脚本语言组件查找到所述业务逻辑数据,其中,所述第一脚本语言组件具体为:在混合开发模式下,与原生系统中用于构建所述更新执行结果的程序所实现的功能相对应的非原生组件;通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生系统可以执行的业务逻辑数据;基于预置的数据传输通道,将转换为所述原生系统可以执行的业务逻辑数据发送至所述第二脚本语言组件,而且,更新组件数据及通过第一脚本语言编写的业务逻辑数据均包含于更新测试数据包;
可选的,根据获取到的更新测试数据包,生成所述更新测试数据包的索引文件,基于该索引文件,该应用程序通过所述第一脚本语言组件查找到所述业务逻辑数据。
在本实施例中,基于该索引文件,应用程序通过第一脚本语言组件查找业务逻辑数据,所述第一脚本语言组件具体为:在混合开发模式下,与原生系统中用于构建更新执行结果的程序所实现的功能相对应的非原生组件。然后,通过该第一脚本语言组件将该业务逻辑数据进行转换,以得到原生系统可以执行的业务逻辑数据。因为,如果第一脚本语言不同于应用程序的脚本语言,则该未转换之前的业务逻辑数据是无法被原生系统执行的。为了使得从服务端获取的业务逻辑可以被原生系统执行,所以,在本实施例中对该从服务端获取的业务逻辑进行了如上转换,而且,在得到可被原生系统执行的业务逻辑数据后,基于预置的数据传输通道,应用程序将转换为所述原生系统可以执行的业务逻辑数据发送至所述第二脚本语言组件。
通过第一脚本语言组件将该业务逻辑数据发送至第二脚本语言组件,而且,该业务逻辑数据是通过数据传输通道发送至第二脚本语言组件的,其中,脚本语言组件注册于应用程序的原生系统,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互。
可选的,在应用程序获取到该更新测试数据包后,应用程序将所述更新测试数据包进行存储,以供所述第一脚本语言组件将存储的所述业务逻辑数据发送至第二脚本语言组件。
其中,编写该业务逻辑数据的第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言javascript,而应用程序的原生语言为java。当然,该编写业务逻辑数据的第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为java。
其中,编写该更新组件数据的语言可为可扩展标记语言xml。
在本实施例中,并不对该编写更新组件数据及编写该业务逻辑数据的语言种类进行限定,只需其满足本实施例的要求即可。
s75:基于所述业务逻辑数据及所述更新组件数据,通过所述原生系统构建所述更新执行结果;
具体的,应用程序通过原生系统执行所述业务逻辑数据,以对更新组件数据拼接,从而完成更新执行结果的构建。
当然,在更新执行结果构建完成后,可以通过所述第二脚本语言组件对所述更新执行结果进行展示。
针对该预设更新测试组件,其包括:应用于对应用程序进行动态化更新的动态化测试框架。
可选的,上述步骤s74的执行时机包括但不限于:当应用程序获取所述更新测试数据包时、及当所述应用程序下次被重启时。在本实施例中,并不对该执行时机进行限定,只需其满足本发明的要求即可。
而且,在执行上述步骤s74至s75的过程中,本实施例还执行以下步骤s66。
s76:通过预设性能测试工具获取所述更新测试数据包被执行过程中的性能数据;依据所述性能数据,确定所述应用程序在在所述更新测试数据包被执行过程中的性能是否合格;
具体的,在应用程序基于预设更新测试组件以执行所述更新测试数据包的过程中,通过上述的预设性能测试工具获取相应的性能数据。
针对该预设性能测试工具,其包括但不限于:流量测试工具、cpu测试工具、流畅度测试工具、及内存测试工具。
其中,流量测试工具包括但不限于fiddler、charles;cpu测试工具及流畅度测试工具均包括但不限于gt工具;内存测试工具包括但不限于安卓系统android的mat工具。
在本实施例中,若满足以下任一种情况,则可以确定该应用程序在更新测试数据包被执行过程中的性能合格:若通过流量测试工具获取的数据及流量测试工具在原生更新时获取的数据基本保持一致、若通过cpu测试工具及流畅度测试工具获取的数据与cpu测试工具及流畅度测试工具在原生更新时获取的gpu过度绘制数据和流畅度情况基本保持一致、通过cpu测试工具获取的内存数据略高于原生更新时的内存数据、或通过cpu测试工具获取的cpu占用率略高于原生更新时的cpu占用率。
s77:通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
在得到更新执行结果后,应用程序判断该更新执行结果是否满足预设标准,若该更新执行结果满足该预设标准,则得到表征为该更新执行结果满足预设标准的测试结果,否则,得到表征为该更新执行结果不满足预设标准的测试结果。
可选的,在所述更新执行结果不满足预设标准的情况下,本实施例还包括以下步骤:获取新的更新测试数据包;基于预设更新测试组件,执行所述新的更新测试数据包,以对所述预设更新测试组件进行修补,并得到新的更新执行结果。
可选的,若需要对预设更新测试组件是否进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述预设更新测试组件具有更新功能的测试结果。
可选的,若需要对从服务端获取的更新测试数据包是否合格进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述更新测试数据包合格。
其中,该对从服务端获取的更新测试数据包的测试内容包括但不限于:对更新测试数据包的安全性、完整性以及准确性进行测试,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。该部分在上述步骤s72的基础上,进一步保证了更新测试数据包的安全性。
可选的,在更新测试数据包包括异常代码的情况下,在所述更新执行结果满足预设标准时,所述测试结果中反映出所述预设更新测试组件具有异常代码处理功能,即:得到所述预设更新测试组件具有异常代码处理功能的测试结果;否则,得到所述测试结果中反映出所述预设更新测试组件不具有异常代码处理功能,即:所述预设更新测试组件不具有异常代码处理功能的测试结果。
就此,应用程序通过从服务端获取更新测试数据包,并基于预设更新测试组件执行该更新测试数据包,以得到更新执行结果。再结合该更新执行结果与预设标准的关系,得到测试结果,从而实现了对预设更新测试组件完成应用程序的动态化更新的全面测试。
图8为本发明第八实施例一种应用于动态开发的测试方法的流程框图。根据图8所示,本发明第八实施例提供了一种应用于动态开发的测试方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
s81:获取来自服务端的更新测试数据包;
在该应用程序检测到服务端存在更新测试数据包时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新测试数据包至应用程序,以使得该应用程序获取到来自服务端的更新测试数据。
s82:基于预设安全机制对所述更新测试数据包是否合法进行安全校验;在校验通过的情况下,得到供执行的更新测试数据包;
具体的,即:应用程序在从服务端成功下载更新测试数据包后,基于预设安全机制,应用程序对所述更新测试数据包是否合法进行安全校验,校验内容包括:对更新测试数据包的安全性、完整性以及准确性进行校验,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。
此外,在本实施例中,并不对校验内容作出限定,只需其可以满足本实施例的要求即可。
而且,在校验通过后,得到校验通过的更新测试数据包,该更新测试数据包即为:应用程序基于预设更新测试组件所执行的更新测试数据包。
可选的,若该更新测试数据包的校验未通过,删除该未通过校验的更新测试数据包。
s83:获取所述更新测试数据包的大小数值;依据所述更新测试数据包的大小数值与对应的原生更新所需数据包的大小数值之间的数值关系,确定是否执行所述更新测试数据包,其中,所述更新测试数据包及对应的所述原生更新所需数据包均是用于对相同版本的应用程序进行更新;
可选的,该原生更新所需数据包的大小数值是预存在该应用程序的。当然,也可为:在应用程序获取更新测试数据包的同时,应用程序也从服务端获取该原生更新所需数据包的大小数值,在本实施例中,并不对该原生更新所需数据包的大小数值的来源做出限定,只需其满足本实施例的要求即可。
s84:通过所述第一脚本语言组件查找到所述业务逻辑数据,其中,所述第一脚本语言组件具体为:在混合开发模式下,与原生系统中用于构建所述更新执行结果的程序所实现的功能相对应的非原生组件;通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生系统可以执行的业务逻辑数据;基于预置的数据传输通道,将转换为所述原生系统可以执行的业务逻辑数据发送至所述第二脚本语言组件,而且,更新组件数据及通过第一脚本语言编写的业务逻辑数据均包含于更新测试数据包;
可选的,根据获取到的更新测试数据包,生成所述更新测试数据包的索引文件,基于该索引文件,该应用程序通过所述第一脚本语言组件查找到所述业务逻辑数据。
在本实施例中,基于该索引文件,应用程序通过第一脚本语言组件查找业务逻辑数据,所述第一脚本语言组件具体为:在混合开发模式下,与原生系统中用于构建更新执行结果的程序所实现的功能相对应的非原生组件。然后,通过该第一脚本语言组件将该业务逻辑数据进行转换,以得到原生系统可以执行的业务逻辑数据。因为,如果第一脚本语言不同于应用程序的脚本语言,则该未转换之前的业务逻辑数据是无法被原生系统执行的。为了使得从服务端获取的业务逻辑可以被原生系统执行,所以,在本实施例中对该从服务端获取的业务逻辑进行了如上转换,而且,在得到可被原生系统执行的业务逻辑数据后,基于预置的数据传输通道,应用程序将转换为所述原生系统可以执行的业务逻辑数据发送至所述第二脚本语言组件。
通过第一脚本语言组件将该业务逻辑数据发送至第二脚本语言组件,而且,该业务逻辑数据是通过数据传输通道发送至第二脚本语言组件的,其中,脚本语言组件注册于应用程序的原生系统,所述第一脚本语言组件通过所述数据传输通道与所述第二脚本语言组件进行交互。
可选的,在应用程序获取到该更新测试数据包后,应用程序将所述更新测试数据包进行存储,以供所述第一脚本语言组件将存储的所述业务逻辑数据发送至第二脚本语言组件。
其中,编写该业务逻辑数据的第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言javascript,而应用程序的原生语言为java。当然,该编写业务逻辑数据的第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为java。
其中,编写该更新组件数据的语言可为可扩展标记语言xml。
在本实施例中,并不对该编写更新组件数据及编写该业务逻辑数据的语言种类进行限定,只需其满足本实施例的要求即可。
s85:对查找到的所述更新组件数据进行解析,得到更新元素;基于所述更新元素,通过所述原生系统反射执行所述原生系统可以执行的业务逻辑数据,以完成所述更新执行结果的构建;
在本实施例中,应用程序还需要查找更新组件数据,在查找该更新组件数据后,应用程序通过原生系统对其进行解析,得到更新元素。
基于该更新元素,应用程序通过原生系统反射执行上述的原生系统可以执行的业务逻辑数据,从而完成更新执行结果的构建。
具体的,应用程序通过原生系统执行所述业务逻辑数据,以对更新组件数据拼接,从而完成更新执行结果的构建。
当然,在更新执行结果构建完成后,可以通过所述第二脚本语言组件对所述更新执行结果进行展示。
针对该预设更新测试组件,其包括:应用于对应用程序进行动态化更新的动态化测试框架。
可选的,上述步骤s84的执行时机包括但不限于:当应用程序获取所述更新测试数据包时、及当所述应用程序下次被重启时。在本实施例中,并不对该执行时机进行限定,只需其满足本发明的要求即可。
而且,在执行上述步骤s84至s85的过程中,本实施例还执行以下步骤s86。
s86:通过预设性能测试工具获取所述更新测试数据包被执行过程中的性能数据;依据所述性能数据,确定所述应用程序在在所述更新测试数据包被执行过程中的性能是否合格;
具体的,在应用程序基于预设更新测试组件以执行所述更新测试数据包的过程中,通过上述的预设性能测试工具获取相应的性能数据。
针对该预设性能测试工具,其包括但不限于:流量测试工具、cpu测试工具、流畅度测试工具、及内存测试工具。
其中,流量测试工具包括但不限于fiddler、charles;cpu测试工具及流畅度测试工具均包括但不限于gt工具;内存测试工具包括但不限于安卓系统android的mat工具。
在本实施例中,若满足以下任一种情况,则可以确定该应用程序在更新测试数据包被执行过程中的性能合格:若通过流量测试工具获取的数据及流量测试工具在原生更新时获取的数据基本保持一致、若通过cpu测试工具及流畅度测试工具获取的数据与cpu测试工具及流畅度测试工具在原生更新时获取的gpu过度绘制数据和流畅度情况基本保持一致、通过cpu测试工具获取的内存数据略高于原生更新时的内存数据、或通过cpu测试工具获取的cpu占用率略高于原生更新时的cpu占用率。
s87:通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
在得到更新执行结果后,应用程序判断该更新执行结果是否满足预设标准,若该更新执行结果满足该预设标准,则得到表征为该更新执行结果满足预设标准的测试结果,否则,得到表征为该更新执行结果不满足预设标准的测试结果。
可选的,在所述更新执行结果不满足预设标准的情况下,本实施例还包括以下步骤:获取新的更新测试数据包;基于预设更新测试组件,执行所述新的更新测试数据包,以对所述预设更新测试组件进行修补,并得到新的更新执行结果。
可选的,若需要对预设更新测试组件是否进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述预设更新测试组件具有更新功能的测试结果。
可选的,若需要对从服务端获取的更新测试数据包是否合格进行测试,在所述更新执行结果满足预设标准的情况下,就可以得到所述更新测试数据包合格。
其中,该对从服务端获取的更新测试数据包的测试内容包括但不限于:对更新测试数据包的安全性、完整性以及准确性进行测试,从而有助于确定应用程序所获得的是正确、可用的更新测试数据包,也保证了该获取的更新测试数据包具有良好的安全性及完整性。从而,避免了执行被传篡改过的更新测试数据包,该篡改时机包括但不限于:当该更新测试数据包被开发端上传至服务端时、当该更新测试数据包位于服务端时、及当该更新测试数据包被应用程序从服务端下载时。该部分在上述步骤s82的基础上,进一步保证了更新测试数据包的安全性。
可选的,在更新测试数据包包括异常代码的情况下,在所述更新执行结果满足预设标准时,所述测试结果中反映出所述预设更新测试组件具有异常代码处理功能,即:得到所述预设更新测试组件具有异常代码处理功能的测试结果;否则,得到所述测试结果中反映出所述预设更新测试组件不具有异常代码处理功能,即:所述预设更新测试组件不具有异常代码处理功能的测试结果。
就此,应用程序通过从服务端获取更新测试数据包,并基于预设更新测试组件执行该更新测试数据包,以得到更新执行结果。再结合该更新执行结果与预设标准的关系,得到测试结果,从而实现了对预设更新测试组件完成应用程序的动态化更新的全面测试。
图9为本发明第九实施例一种应用于动态开发的测试装置的结构示意图。根据图9所示,本发明第九实施例提供了一种应用于动态开发的测试装置,应用于基于混合开发模式所开发的应用程序,所述装置包括:
获取模块110,用于获取来自服务端的更新测试数据包;执行模块111,用于基于预设更新测试组件,执行所述更新测试数据包,得到更新执行结果;测试结果得到模块112,用于通过判断所述更新执行结果是否满足预设标准,得到相应的测试结果。
可选的,所述装置还包括:校验模块,用于在所述获取来自服务端的更新测试数据包之后,基于预设安全机制对所述更新测试数据包是否合法进行安全校验;校验结果得到模块,用于在校验通过的情况下,得到供执行的更新测试数据包。
可选的,所述装置包括:数值获取模块110,用于在所述获取来自服务端的更新测试数据包之后,且在所述基于预设更新测试组件,执行所述更新测试数据包之前,获取所述更新测试数据包的大小数值;数值比较模块,用于依据所述更新测试数据包的大小数值与对应的原生更新所需数据包的大小数值之间的数值关系,确定是否执行所述更新测试数据包,其中,所述更新测试数据包及对应的所述原生更新所需数据包均是用于对相同版本的应用程序进行更新。
可选的,所述装置还包括:性能数据获取模块110,用于在基于预设更新测试组件,执行所述更新测试数据包时,通过预设性能测试工具获取所述更新测试数据包被执行过程中的性能数据;性能结果得到模块,用于依据所述性能数据,确定所述应用程序在所述更新测试数据包被执行过程中的性能是否合格。
可选的,所述预设性能测试工具包括以下一种或多种:流量测试工具、cpu测试工具、流畅度测试工具、及内存测试工具。
可选的,所述基于预设更新测试组件,执行所述更新测试数据包的时机包括以下任意一种:当获取所述更新测试数据包时、及当所述应用程序下次被重启时。
可选的,在所述更新执行结果满足预设标准的情况下,得到所述预设更新测试组件具有更新功能的测试结果及所述更新测试数据包具有安全性的测试结果。
可选的,所述更新测试数据包包括:异常代码;在所述更新执行结果满足预设标准时,所述测试结果中反映出所述预设更新测试组件具有异常代码处理功能,否则,得到所述测试结果中反映出所述预设更新测试组件不具有异常代码处理功能。
可选的,在所述更新执行结果不满足预设标准的情况下,所述装置还包括:
新数据包获取模块110,用于获取新的更新测试数据包;修补模块,用于基于预设更新测试组件,执行所述新的更新测试数据包,以对所述预设更新测试组件进行修补,并得到新的更新执行结果。
可选的,所述更新测试数据包包括:更新组件数据及通过第一脚本语言编写的业务逻辑数据;所述执行模块111包括:发送单元,用于基于预置的数据传输通道,通过第一脚本语言组件将所述业务逻辑数据发送至第二脚本语言组件,其中,所述第二脚本语言组件注册于原生系统;构建单元,用于基于所述业务逻辑数据及所述更新组件数据,通过所述原生系统构建所述更新执行结果。
可选的,所述装置还包括:存储模块,用于在所述获取来自服务端的更新测试数据包之后,将所述更新测试数据包进行存储,以供所述第一脚本语言组件将存储的所述业务逻辑数据发送至第二脚本语言组件。
可选的,所述发送单元具体用于:通过所述第一脚本语言组件查找到所述业务逻辑数据,其中,所述第一脚本语言组件具体为:在混合开发模式下,与原生系统中用于构建所述更新执行结果的程序所实现的功能相对应的非原生组件;通过所述第一脚本语言组件将所述业务逻辑数据转换为所述原生系统可以执行的业务逻辑数据;将转换为所述原生系统可以执行的业务逻辑数据发送至所述第二脚本语言组件。
可选的,所述构建单元具体用于:对查找到的所述更新组件数据进行解析,得到更新元素;基于所述更新元素,通过所述原生系统反射执行所述原生系统可以执行的业务逻辑数据,以完成所述更新执行结果的构建。
本发明第十实施例提供了一种电子设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种应用于动态开发的测试方法。
本发明第十实施例中的一种电子设备所涉及的名词及实现原理具体可以参照本发明实施例中的第一至八实施例的一种应用于动态开发的测试方法,在此不再赘述。
本发明第十一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个模块,所述一个或者多个模块可被一个或者多个处理器执行,以实现上述的一种应用于动态开发的测试方法。
本发明第十一实施例中的一种计算机可读存储介质所涉及的名词及实现原理具体可以参照本发明实施例中的第一至八实施例的一种应用于动态开发的测试方法,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。