代码处理方法、装置及介质与流程

文档序号:16972284发布日期:2019-02-26 18:40阅读:130来源:国知局
代码处理方法、装置及介质与流程

本发明涉及代码处理领域,尤其涉及一种代码处理方法、装置及介质。



背景技术:

程序员在开发过程中会经常遇到如下场景:对最新代码进行验证时,发现某个人工操作后出现现crash现象(crash在计算机程序中翻译为崩溃),代码崩溃是代码出现异常信息的一种情况,代码验证出现crash说明代码写的有问题这个时候,我们需要定位到导致异常信息的代码提交记录,以便对出现异常信息的代码进行修订且验证通过。

现有技术采用的一种处理方式是对最新代码提交记录挨个回退代码,比如:在未出现异常信息的软件版本与出现异常信息的当前软件版本期间陆续有10笔代码提交,即10笔commit(commit在计算机程序中翻译为提交),这10笔提交中不确定是哪笔代码提交导致应用程序产生异常信息,现有技术中,采用的是对这10笔提交的代码进行手动挨个回退,手动挨个验证,直到回退到引起crash的commit,才可以定位到具体是哪一个提交的代码引起的异常信息。然而,现有技术采用的手动方式挨个回退验证,若提交的笔数超过10笔的话,来回验证等待就会造成时间的巨大浪费,影响效率。



技术实现要素:

本发明的主要目的在于提供一种代码处理方法、装置及介质,旨在解决现有技术中手动方式挨个回退验证提交的代码定位产生crash时效率低下的问题。

为实现上述目的,本发明提供一种代码处理方法,所述代码处理方法包括以下步骤:

接收人工操作路径对应的操作指令产生的异常信息,其中,所述异常信息为多条最新代码提交记录中的一条最新代码提交记录导致的异常;

基于接收到的人工操作路径的操作指令编写自动化脚本,其中,所述自动化脚本用于模拟产生异常信息的人工操作路径;

基于所述自动化脚本对所述多条最新代码提交记录启动自动化测试得到测试结果;

基于所述测试结果定位多条最新代码提交记录中导致所述异常信息的第一代码提交记录。

优选地,所述基于所述自动化脚本对所述多条最新代码提交记录启动自动化测试得到测试结果的步骤包括:

基于所述自动化脚本对所述多条最新代码提交记录进行逐一回退代码,且每次回退代码后均进行异常信息的验证,直至验证出所述异常信息对应的第一代码提交记录。

优选地,所述每次回退代码后均进行异常信息的验证的步骤包括:

每次回退代码后得到回退结果;

对所述回退结果进行编译,得到编译结果;

基于所述编译结果安装应用程序;

基于所述应用程序测试当前最新代码提交记录,其中,所述当前最新代码提交记录为所述回退结果对应的最新代码提交记录。

优选地,所述直至验证出所述异常信息对应的第一代码提交记录的步骤包括:

若所述应用程序测试的当前最新代码提交记录出现所述异常信息,则判定所述当前最新代码提交记录为第一代码提交记录。

优选地,所述基于所述测试结果定位所述最新代码提交记录中导致异常信息的第一代码提交记录的步骤包括:

将所述当前最新代码提交记录确定为所述最新代码提交记录中导致异常信息的第一代码提交记录。

优选地,所述接收人工操作路径对应的操作指令产生的异常信息的步骤包括:

通过查看日记内容获取人工操作路径对应的操作指令产生的异常信息。

优选地,所述基于所述测试结果定位所述最新代码提交记录中导致异常信息的第一代码提交记录的步骤之后,所述代码处理方法还包括:

控制输出所述第一代码提交记录对应的提交信息。

此外,为实现上述目的,本发明还提供一种装置,所述装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码处理程序,所述代码处理程序被所述处理器执行时实现上述任一项所述的代码处理方法的步骤。

此外,为实现上述目的,本发明还提供一种介质,所述介质上存储有代码处理程序,所述代码处理程序被处理器执行时实现上述任一项所述的代码处理方法的步骤。

本发明通过基于人工操作路径的操作指令编写自动化脚本,采用自动化脚本去对多条最新代码提交记录进行自动化测试,得到测试结果,并基于测试结果实现对导致异常信息的第一代码提交记录的确定,由于自动化脚本对多条最新代码提交记录进行自动化测试,有效提高测试效率,避免手动方式逐一回退代码且验证代码时效率低下的问题;并且,通过测试结果定位到异常信息对应的第一代码提交记录,定位准确。

附图说明

图1为本发明各个实施例一种装置的硬件结构示意图;

图2为本发明实施例提供的一种通信网络系统框架图;

图3为本发明代码处理方法第一实施例的流程示意图;

图4为本发明代码处理方法第二实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境的装置结构示意图。

如图1所示,该装置可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

可选地,装置还可以包括摄像头、rf(radiofrequency,射频)电路,传感器、音频电路、wifi模块等等。当然,装置还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

本领域技术人员可以理解,图1中示出的装置结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口单元以及代码处理程序。

在图1所示的装置中,网络接口1004主要用于连接后台装置,与后台装置进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的代码处理程序,并执行以下操作:

接收人工操作路径对应的操作指令产生的异常信息,其中,所述异常信息为多条最新代码提交记录中的一条最新代码提交记录导致的异常;

基于接收到的人工操作路径的操作指令编写自动化脚本,其中,所述自动化脚本用于模拟产生异常信息的人工操作路径;

基于所述自动化脚本对所述多条最新代码提交记录启动自动化测试得到测试结果;

基于所述测试结果定位多条最新代码提交记录中导致所述异常信息的第一代码提交记录。

进一步地,而处理器1001可以用于调用存储器1005中存储的代码处理程序,并执行以下操作:

基于所述自动化脚本对所述多条最新代码提交记录进行逐一回退代码,且每次回退代码后均进行异常信息的验证,直至验证出所述异常信息对应的第一代码提交记录。

进一步地,而处理器1001可以用于调用存储器1005中存储的代码处理程序,并执行以下操作:

每次回退代码后得到回退结果;

对所述回退结果进行编译,得到编译结果;

基于所述编译结果安装应用程序;

基于所述应用程序测试当前最新代码提交记录,其中,所述当前最新代码提交记录为所述回退结果对应的最新代码提交记录。

进一步地,而处理器1001可以用于调用存储器1005中存储的代码处理程序,并执行以下操作:

若所述应用程序测试的当前最新代码提交记录出现所述异常信息,则判定所述当前最新代码提交记录为第一代码提交记录。

进一步地,而处理器1001可以用于调用存储器1005中存储的代码处理程序,并执行以下操作:

将所述当前最新代码提交记录确定为所述最新代码提交记录中导致异常信息的第一代码提交记录。

进一步地,而处理器1001可以用于调用存储器1005中存储的代码处理程序,并执行以下操作:

通过查看日记内容获取人工操作路径对应的操作指令产生的异常信息。

进一步地,而处理器1001可以用于调用存储器1005中存储的代码处理程序,并执行以下操作:

控制输出所述第一代码提交记录对应的提交信息。

装置还可以包括给各个部件供电的电源,优选的,电源可以通过电源管理系统与处理器1001逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

尽管图1未示出,装置还可以包括蓝牙模块等,在此不再赘述。

为了便于理解本发明实施例,下面对本发明的装置所基于的通信网络系统进行描述。

请参阅图2,图2为本发明实施例提供的一种通信网络系统架构图,该通信网络系统为通用移动通信技术的lte系统,该lte系统包括依次通讯连接的ue(userequipment,用户设备)201,e-utran(evolvedumtsterrestrialradioaccessnetwork,演进式umts陆地无线接入网)202,epc(evolvedpacketcore,演进式分组核心网)203和运营商的ip业务204。

具体地,ue201可以是上述装置100,此处不再赘述。

e-utran202包括enodeb2021和其它enodeb2022等。其中,enodeb2021可以通过回程(backhaul)(例如x2接口)与其它enodeb2022连接,enodeb2021连接到epc203,enodeb2021可以提供ue201到epc203的接入。

epc203可以包括mme(mobilitymanagemententity,移动性管理实体)2031,hss(homesubscriberserver,归属用户装置)2032,其它mme2033,sgw(servinggateway,服务网关)2034,pgw(pdngateway,分组数据网络网关)2035和pcrf(policyandchargingrulesfunction,政策和资费功能实体)2036等。其中,mme2031是处理ue201和epc203之间信令的控制节点,提供承载和连接管理。hss2032用于提供一些寄存器来管理诸如归属位置寄存器(图中未示)之类的功能,并且保存有一些有关服务特征、数据速率等用户专用的信息。所有用户数据都可以通过sgw2034进行发送,pgw2035可以提供ue201的ip地址分配以及其它功能,pcrf2036是业务数据流和ip承载资源的策略与计费控制策略决策点,它为策略与计费执行功能单元(图中未示)选择及提供可用的策略和计费控制决策。

ip业务204可以包括因特网、内联网、ims(ipmultimediasubsystem,ip多媒体子系统)或其它ip业务等。

虽然上述以lte系统为例进行了介绍,但本领域技术人员应当知晓,本发明不仅仅适用于lte系统,也可以适用于其他无线通信系统,例如gsm、cdma2000、wcdma、td-scdma以及未来新的网络系统等,此处不做限定。

基于上述终端硬件结构以及通信网络系统,提出本发明代码处理方法的各个实施例。

本发明还提供一种代码处理方法,参照图3,图3为本发明代码处理方法第一实施例的流程示意图。

在本实施例中,该代码处理方法包括以下步骤:

步骤s10,接收人工操作路径对应的操作指令产生的异常信息,其中,所述异常信息为多条最新代码提交记录中的一条最新代码提交记录导致的异常。

在本实施例中,接收到人工操作路径对应的操作指令产生的异常信息,可以通过抓log得知异常信息,或者是异常信息出现时弹出一个对话框提示异常出现。异常信息即计算机程序中的crash,人工操作路径可以是人为操作产生的操作指令,如按下两个按键时,出现有crash信息提醒,比如,弹出一个对话框显示“程序已停止运行!”,那么,则认为是人工操作路径产生相应的crash,对此,人工操作路径对应的最新代码提交记录则需要检查验证,以便找到最准确的提交记录。假设我们最新代码提交记录是10条commit,分别为1,2,3……10,那么,第一条commit之前都是正常的,且没有出现crash的,因此,我们需要回退代码验证,即验证的顺序是第十条至第一条。

步骤s20,基于接收到的人工操作路径的操作指令编写自动化脚本,其中,所述自动化脚本用于模拟产生异常信息的人工操作路径。

在本实施例中,针对人工操作路径的操作指令编写一个自动化脚本,用于模拟人工操作路径。脚本英文为script。实际上脚本就是程序,一般都是有应用程序提供的编程语言。应用程序包括浏览器(javascript、vbscript)、多媒体创作工具,应用程序的宏和创作系统的批处理语言也可以归入脚本之类,脚本语法比较简单,比较容易掌握,脚本的好处就是易于学习,易于修改。本案采用编写自动化脚本,去模拟产生异常信息的人工操作路径,如让自动化脚本去模拟按下两个按键,是自动化脚本得到异常信息。

步骤s30,基于所述自动化脚本对所述多条最新代码提交记录启动自动化测试得到测试结果。

在本实施例中,通过自动化脚本对多条最新代码提交记录进行自动化测试,得到测试结果。具体测试过程为:自动化脚本回退代码,每回退代码一次,就验证一次,生成应用程序apk一次,且应用程序测试当前的提交记录。比如,最新代码提交记录有10条代码,第一次回退代码,即自动化脚本修改第10条代码,如将第10条代码中的变量有1改成0,修改以后,开始编译,编译完成后安装应用程序apk,然后应用程序apk自动测试修改后的第10条代码commit是否出现crash现象,若否,则接着第二次回退代码,即自动化脚本修改第9条代码,修改以后,再次开始编译,编译完成后安装应用程序apk,然后应用程序apk自动测试修改后的第9条代码commit是否出现crash现象,以此类推,直至测出出现crash现象的代码commit,即确定具体是哪一条代码提交记录产生的异常信息。

通过自动化脚本的自动化测试,有效节约手工回退代码、验证代码浪费的时间,并且,自动化测试提高了测试效率,能顺利找出具体那一条提交记录产生crash现象。

步骤s40,基于所述测试结果定位多条最新代码提交记录中导致所述异常信息的第一代码提交记录。

本实施例中,通过自动化脚本的自动化测试结果定位出多条最新代码提交记录中导致异常信息的第一代码提交记录。自动化脚本自动回退代码,回退验证,每次回退均进行编译、安装apk进行对当前的提交记录进行测试,有效定位出现crash现象的提交记录。

本发明通过基于人工操作路径的操作指令编写自动化脚本,采用自动化脚本去对多条最新代码提交记录进行自动化测试,得到测试结果,并基于测试结果实现对导致异常信息的第一代码提交记录的确定,由于自动化脚本对多条最新代码提交记录进行自动化测试,有效提高测试效率,避免手动方式逐一回退代码且验证代码时效率低下的问题;并且,通过测试结果定位到异常信息对应的第一代码提交记录,定位准确。

进一步地,步骤s30包括:

基于所述自动化脚本对所述多条最新代码提交记录进行逐一回退代码,且每次回退代码后均进行异常信息的验证,直至验证出所述异常信息对应的第一代码提交记录。

本实施例中,具体测试过程为:自动化脚本回退代码,每回退代码一次,就验证一次,生成应用程序apk一次,且应用程序测试当前的提交记录,直至验证出异常信息crash对应的第一代码提交记录。

基于第一实施例,提出本发明代码处理方法的第二实施例,参照图4,在本实施例中,步骤s30包括:

步骤s31,每次回退代码后得到回退结果;

步骤s32,对所述回退结果进行编译,得到编译结果;

步骤s33,基于所述编译结果安装应用程序;

步骤s34,基于所述应用程序测试当前最新代码提交记录,其中,所述当前最新代码提交记录为所述回退结果对应的最新代码提交记录。

本实施例中,每次回退代码后均进行验证具体为:每次回退代码后得到回退结果;对所述回退结果进行编译,得到编译结果;基于所述编译结果安装应用程序;基于所述应用程序测试当前最新代码提交记录。比如,最新代码提交记录有10条代码,第一次回退代码,即自动化脚本修改第10条代码,如将第10条代码中的变量有1改成0,修改以后,开始编译,编译完成后安装应用程序apk,然后应用程序apk自动测试修改后的第10条代码commit是否出现crash现象,若否,则接着第二次回退代码,即自动化脚本修改第9条代码,修改以后,再次开始编译,编译完成后安装应用程序apk,然后应用程序apk自动测试修改后的第9条代码commit是否出现crash现象,以此类推,直至测出出现crash现象的代码commit,即确定具体的异常信息。

通过自动化脚本的自动化测试,有效节约手工回退代码、验证代码浪费的时间,并且,自动化测试提高了测试效率,能顺利找出具体那一条提交记录产生crash现象。

进一步地,步骤s30还包括:

若所述应用程序测试的当前最新代码提交记录出现所述异常信息,则判定所述当前最新代码提交记录为第一代码提交记录。

在本实施例中,基于所述自动化脚本对所述多条最新代码提交记录进行逐一回退代码,且每次回退代码后均进行异常信息的验证,每次验证时,对所述回退结果进行编译,得到编译结果,基于所述编译结果安装应用程序,基于所述应用程序测试当前最新代码提交记录,若所述应用程序测试的当前最新代码提交记录出现所述异常信息,则判定所述当前最新代码提交记录为第一代码提交记录。

通过应用程序apk对当前最新代码提交记录进行测试,得到出现/不出现crash现象的结果,根据该结果判断是否是当前最新代码提交记录出现crash现象。

进一步地,步骤s30还包括:

将所述当前最新代码提交记录确定为所述最新代码提交记录中导致异常信息的第一代码提交记录。

本实施例中,在确认当前最新代码提交记录为出现异常信息的提交记录时,将当前最新代码提交记录定义为第一代码提交记录。由于第一代码提交记录被定义为多条最新代码提交记录中唯一一条出现异常信息的提交记录,因此,当测试到出现异常信息时,即为第一代码提交记录。

进一步地,步骤s10包括:

通过查看日记内容获取人工操作路径对应的操作指令产生的异常信息。

本实施例中,接收到人工操作路径对应的操作指令产生的异常信息,可以通过抓log得知异常信息,或者是异常信息出现时弹出一个对话框提示异常出现。log即日记,记录输入内容和程序运行情况的日志,里面保存着系统运行的所有记录,可以方便开发组查看到底问题出在哪,好比是飞机上的“黑匣子”,用来复现bug,或发现程序错误。一般都有截log的专业工具。由于提交记录时会产生相应的日记,因此,抓log可以获取人工操作路径对应的操作指令产生的异常信息。

进一步地,步骤s40之后,所述代码处理方法还包括:

控制输出所述第一代码提交记录对应的提交信息。

由于确定了导致所述异常信息的第一代码提交记录,因此,需要控制输出第一代码提交记录对应的提交信息,如弹出一个对话框提示“第n条代码出现异常!”,提示最新代码提交记录中的第n条代码出现异常信息,此时,第一代码提交记录即第n条代码,使得工作人员了解到第n条代码为出现异常信息的第一代码提交记录,进而对第n条代码进行修改等操作。

此外,本发明实施例还提出一种介质,所述介质上存储有代码处理程序,所述代码处理程序被处理器执行时实现如下操作:

接收人工操作路径对应的操作指令产生的异常信息,其中,所述异常信息为多条最新代码提交记录中的一条最新代码提交记录导致的异常;

基于接收到的人工操作路径的操作指令编写自动化脚本,其中,所述自动化脚本用于模拟产生异常信息的人工操作路径;

基于所述自动化脚本对所述多条最新代码提交记录启动自动化测试得到测试结果;

基于所述测试结果定位多条最新代码提交记录中导致所述异常信息的第一代码提交记录。

进一步地,所述代码处理程序被处理器执行时还实现如下操作:

基于所述自动化脚本对所述多条最新代码提交记录进行逐一回退代码,且每次回退代码后均进行异常信息的验证,直至验证出所述异常信息对应的第一代码提交记录。

进一步地,所述代码处理程序被处理器执行时还实现如下操作:

每次回退代码后得到回退结果;

对所述回退结果进行编译,得到编译结果;

基于所述编译结果安装应用程序;

基于所述应用程序测试当前最新代码提交记录,其中,所述当前最新代码提交记录为所述回退结果对应的最新代码提交记录。

进一步地,所述代码处理程序被处理器执行时还实现如下操作:

若所述应用程序测试的当前最新代码提交记录出现所述异常信息,则判定所述当前最新代码提交记录为第一代码提交记录。

进一步地,所述代码处理程序被处理器执行时还实现如下操作:

将所述当前最新代码提交记录确定为所述最新代码提交记录中导致异常信息的第一代码提交记录。

进一步地,所述代码处理程序被处理器执行时还实现如下操作:

通过查看日记内容获取人工操作路径对应的操作指令产生的异常信息。

进一步地,所述代码处理程序被处理器执行时还实现如下操作:

控制输出所述第一代码提交记录对应的提交信息。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者终端中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是装置,计算机,装置,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1