CN114356764A - 软件调测方法、装置、设备、系统和介质 - Google Patents

软件调测方法、装置、设备、系统和介质 Download PDF

Info

Publication number
CN114356764A
CN114356764A CN202111655842.7A CN202111655842A CN114356764A CN 114356764 A CN114356764 A CN 114356764A CN 202111655842 A CN202111655842 A CN 202111655842A CN 114356764 A CN114356764 A CN 114356764A
Authority
CN
China
Prior art keywords
data
target
software
acquiring
target software
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.)
Pending
Application number
CN202111655842.7A
Other languages
English (en)
Inventor
袁定波
章宁锋
戚明锋
梅立琴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202111655842.7A priority Critical patent/CN114356764A/zh
Publication of CN114356764A publication Critical patent/CN114356764A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种软件调测方法、装置、设备、系统和介质,其中,该方法包括:通过SDK获取目标软件在运行过程中产生的运行数据和/或终端设备的性能数据,通过SDK将运行数据和/或性能数据上传至目标服务器,接收目标服务器转发远程终端的操作指令,对目标软件所产生的数据进行目标操作。该技术方案中,通过在目标软件中接入SDK,获取到运行数据以及终端设备的性能数据并上传给服务器,可以供远程终端的开发测试人员实时可视化查看,有效辅助开发测试人员的开发测试,提高APP的开发测试效果。

Description

软件调测方法、装置、设备、系统和介质
技术领域
本申请涉及互联网技术领域,尤其涉及一种软件调测方法、装置、设备、系统和介质。
背景技术
应用程序(Application,APP)是安装在智能终端上的一个完善智能终端功能的软件。随着智能终端的广泛使用,开发出了各种各样不同功能的APP,这些APP通常都会周期性的开发出新的版本以提供更加丰富的功能。APP在新版本开发过程中通常也需要进行各种各样的测试优化。
现有技术中,在对APP开发测试的过程中,通常是依赖第三方软件来采集APP的性能数据以及网络请求数据等,然后开发测试人员通过第三方软件中采集得到的信息,适应性的对APP进行优化。
但是,现有技术的这种依赖第三方软件进行信息采集的方式,往往数据采集效果不够理想,难以辅助开发测试人员进行开发测试,导致APP开发测试的效果不理想。
发明内容
本申请提供一种软件调测方法、装置、设备、系统和介质,用于解决现有数据采集效果不够理想,导致软件开发测试效果差的问题。
第一方面,本申请实施例提供一种软件调测方法,应用于终端设备,所述终端设备包括目标软件以及接入至所述目标软件的软件开发工具包SDK,所述方法包括:
通过所述SDK获取所述目标软件在运行过程中产生的运行数据和/或所述终端设备的性能数据;
通过所述SDK将所述运行数据和/或性能数据上传至目标服务器;
接收所述目标服务器转发远程终端的操作指令,对所述目标软件所产生的数据进行目标操作,所述目标操作包括数据删除操作、数据新增操作、数据查询操作和数据修改操作中的至少一种。
在第一方面的一种可能设计中,所述通过所述SDK获取所述目标软件在运行过程中产生的运行数据,包括:
获取所述目标软件在运行过程中的网络请求数据、页面切换耗时数据、软件启动耗时数据和阻塞监控数据中的至少一种,作为所述运行数据。
在第一方面的另一种可能设计中,所述获取所述目标软件在运行过程中的网络请求数据,包括:
构建拦截器,将所述拦截器添加至网络请求框架中,所述网络请求框架用于处理所述目标软件的网络请求;
通过所述拦截器获取所述网络请求框架中的请求对象和响应对象;
根据所述请求对象和响应对象,获取所述网络请求数据。
在第一方面的再一种可能设计中,获取所述目标软件在运行过程中的页面切换耗时数据,包括:
获取所述目标软件中上一个页面的暂停耗时、下一个页面的启动耗时和所述下一个页面的渲染耗时;
根据所述暂停耗时、启动耗时和渲染耗时,获取所述页面切换耗时数据。
在第一方面的又一种可能设计中,获取所述目标软件在运行过程中的软件启动耗时数据,包括:
获取所述目标软件的冷启动开始时间点、热启动开始时间点和启动结束时间点;
根据所述冷启动开始时间点、热启动开始时间点和启动结束时间点,获取所述软件启动耗时数据。
在第一方面的又一种可能设计中,获取所述目标软件在运行过程中的阻塞监控数据,包括:
获取所述目标软件产生的消息,确定所述消息的开始时间点和结束时间点,所述消息用于对所述终端设备的用户界面进行更新操作;
计算得到所述结束时间点与所述开始时间点的差值,将所述差值与预设阈值进行对比;
若所述差值超过预设阈值,则获取所述更新操作的操作数据,作为所述阻塞监控数据。
在第一方面的又一种可能设计中,获取所述终端设备的性能数据,包括:
获取所述终端设备的处理器运行数据、内存数据、帧率数据和电池数据中的至少一种,作为所述终端设备的性能数据。
在第一方面的又一种可能设计中,所述接收所述目标服务器转发远程终端的操作指令,对所述目标软件所产生的数据进行目标操作,包括:
接收所述目标服务器转发远程终端的操作指令,确定所述目标软件所产生的数据的存储区域,所述存储区域包括数据库和共享引用存储类,所述数据库中存储的数据与所述共享引用存储类中存储的数据不相同;
根据所述操作指令,对所述数据库和/或共享引用存储类中的数据进行目标操作。
在第一方面的又一种可能设计中,根据所述操作指令,对所述数据库进行目标操作,包括:
获取所述数据库中的文件以及所述文件对应的表名、表键和表内容;
根据所述操作指令,对所述数据库文件以及所述数据库文件对应的表名、表键和表内容进行目标操作。
在第一方面的又一种可能设计中,根据所述操作指令,对所述共享引用存储类中的数据进行目标操作,包括:
获取所述共享引用存储类中的文件列表和所述文件列表中的文件数据;
根据所述操作指令,对所述文件列表中的文件数据进行目标操作。
在第一方面的又一种可能设计中,所述方法还包括:
获取所述目标软件的界面信息,将所述界面信息上传至所述目标服务器以转发至所述远程终端,所述界面信息至少包括有所述目标软件当前的界面截图。
第二方面,本申请实施例提供一种软件调测装置,包括:
获取模块,用于通过SDK获取所述目标软件在运行过程中产生的运行数据和/或所述终端设备的性能数据;
上传模块,用于通过SDK将所述运行数据和/或性能数据上传至目标服务器;
操作模块,用于接收所述目标服务器转发远程终端的操作指令,对所述目标软件所产生的数据进行目标操作,所述目标操作包括数据删除操作、数据新增操作、数据查询操作和数据修改操作中的至少一种。
第三方面,本申请实施例提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现上述的方法。
第四方面,本申请实施例提供一种软件调测系统,包括:终端设备、与所述终端设备通信的服务器以及与所述服务器通信的远程终端,所述终端设备中包含有目标软件以及接入至所述目标软件的软件开发工具包SDK;
所述SDK用于获取所述目标软件在运行过程中产生的运行数据和/或所述终端设备的性能数据,将所述运行数据和/或性能数据上传至服务器;
所述服务器用于将所述运行数据和/或性能数据传输给所述远程终端,并接收所述远程终端反馈的操作指令,将所述操作指令传输给所述终端设备;
所述SDK还用于根据所述操作指令,对所述目标软件所产生的数据进行目标操作,所述目标操作包括数据删除操作、数据新增操作、数据查询操作和数据修改操作中的至少一种。
第五方面,本申请实施例提供一种可读存储介质,所述可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现上述的方法。
第六方面,本申请实施例提供一种程序产品,包括计算机指令,该计算机指令被处理器执行时实现上述的方法。
本申请实施例提供的软件调测方法、装置、设备、系统和介质,通过在目标软件中接入软件开发工具包SDK,获取到运行数据以及终端设备的性能数据并上传给服务器,可以供远程终端的开发测试人员实时可视化查看,有效辅助开发测试人员的开发测试,提高APP的开发测试效果。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理;
图1为本申请实施例提供的软件调测方法的场景示意图;
图2为本申请实施例提供的软件调测方法的流程示意图;
图3为本申请实施例提供的软件调测装置的结构示意图;
图4为本申请实施例提供的电子设备的结构示意图;
图5为本申请实施例提供的软件调测系统的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请所涉及的名词进行解释:
AOP:
面向切面编程(Aspect Oriented Programming,AOP)是指通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
ANR:
应用未响应(Application Not Respond,ANR)是指在Android上,应用程序响应不够灵敏时,系统会向用户显示的一个对话框。
图1为本申请实施例提供的软件调测方法的场景示意图,如图1所示,该方法可以应用于终端设备11中。示例性的,终端设备11中安装有待开发测试的软件,软件在开发测试的过程中往往需要面对各种各样的问题,例如:①软件的版本更新之后,数据库中存在的脏数据在本次版本迁移时存在逻辑漏洞导致APP闪退,在黑盒测试的情况下如何便捷地对本地数据库进行增删改查,从而定位故障(BUG);②产品版本正式上线之后,用户反馈的各种网络问题,如何减少用户依赖自动获取用户产生BUG时设备、网络等数据信息;③如何对手机App的SharedPreferences数据进行增删改查;④如何在不依赖第三方软件的情况下实时获取手机的性能数据;⑤如何在开发测试阶段发现阻塞或应用未响应;⑥如何发现大资源情况,进行资源治理;⑦如何发现大Bitmap,从而防止因为OOM导致的Crash;⑧如何在Andriod7.0上进行https的网络数据抓包;⑨如何更加精准的对网络耗时进行分析;⑩如何更深入的分析各页面加载时间等等。
面对这些问题,现有技术在进行软件的开发测试过程中,通常依靠第三方软件来采集待测试软件的性能数据和网络请求数据。现有技术的这种方式难以进行实时可视化观测且测量指标较少。同时在进行网络请求数据抓包时,需要配置各种代理和证书,对于一些操作系统安全性较高的终端设备(例如Android7.0及以上系统的手机),可能无法解析得到超文本传输安全协议(Hyper Text Transfer Protocol over SecureSocket Layer,HTTPS)请求的数据。
针对上述问题,本申请实施例通过在终端设备11为待测软件接入软件开发工具包SDK,通过软件开发工具包SDK获取目标软件在运行过程中产生的运行数据和/或终端设备的性能数据,并上传到目标服务器12中。开发测试人员可以通过远程终端13访问前端页面实时查看运行数据和/或性能数据,从而定位性能瓶颈并针对性地进行优化,提升调试效率和测试深度,提高软件开发效果。
下面,通过具体实施例对本申请的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图2为本申请实施例提供的软件调测方法的流程示意图,该方法可以应用于终端设备中,终端设备包括目标软件以及接入至目标软件的软件开发工具包SDK。如图2所示,该方法具体可以包括如下步骤:
S201、通过SDK获取目标软件在运行过程中产生的运行数据和/或终端设备的性能数据。
在本实施例中,目标软件为待开发测试的软件。运行数据可以包括有网页请求数据(即http数据或https数据)、页面加载耗时数据、软件启动耗时数据和软件阻塞监控数据。终端设备的性能数据可以包括处理器(Central Processing Unit,CPU)运行数据、内存数据、帧率数据和电池数据。
其中,接入至目标软件的软件开发工具包(Software Development Kit,SDK)主要通过安卓原生应用程序接口(Application Programming Interface,API)和AOP技术,对目标软件的关键模块进行劫持(HOOK),从而达到最小化侵入目标软件的目的。即通过接入到目标软件中的SDK来获取目标软件在运行过程中产生的运行数据和/或终端设备的性能数据。
其中,HOOK又称为钩子函数,其可以用于将目标软件中实现某个功能的程序钩拉出来变为自身执行代码片段。示例性的,SDK可以根据功能划分为多个独立的库,然后通过反射的方式进行调用。
示例性的,SDK可以划分为性能采集模块、数据采集模块和数据调试模块,其中,性能采集模块主要采集终端设备的性能数据;数据采集模块主要采集目标软件在运行过程中产生的运行数据。数据调试模块主要负责对目标软件产生的数据进行增删操作和/或查找操作。
S202、通过SDK将运行数据和/或性能数据上传至目标服务器。
在本实施例中,终端设备可以与目标服务器之间建立通信连接,即SDK可以通过套接字(socket)协议与服务器进行通信,将运行数据和/或性能数据上传至目标服务器。
其中,目标服务器可以根据功能划分为四个模块,即数据接收模块、数据处理模块、数据存储模块和调试控制台。这四个模块主要负责接收SDK上报的运行数据和/或性能数据,并对其进行处理和存储。
示例性的,目标服务器还可以通过超文本传输协议(Hyper Text TransferProtocol,HTTP)和双向通信(websocket)协议与远程终端进行数据通信。其中,远程终端可以理解为用户端,由开发测试人员操作。示例性的,开发测试人员可以通过访问终端页面与目标服务器进行交互,下达各项操作指令给目标服务器,再由目标服务器转发至SDK以实现对目标软件所产生的数据进行增删操作和/或查找操作。
S203、接收目标服务器转发远程终端的操作指令,对目标软件所产生的数据进行目标操作。
其中,目标操作包括数据删除操作、数据新增操作、数据查询操作和数据修改操作中的至少一种。在本实施例中,操作指令由开发测试人员发出。具体的,开发测试人员通过远程终端访问前端页面发出操作指令给目标服务器,然后再由目标服务器转发给终端设备的SDK。
其中,操作指令可以包括有数据增加指令、数据删除指令、数据修改指令以及数据查找指令中的至少一种。当SDK接收到目标服务器转发的操作指令之后,可以对数据进行数据删除操作、数据新增操作、数据查询操作和数据修改操作。其中,数据新增操作主要是对在原数据的基础上添加新的数据;数据删除操作主要是在原数据的基础上删除目标数据。数据修改操作则是在原数据的基础上对特定的数据进行修改,数据查询操作主要是在原数据的基础上查找出目标数据并上传到服务器,再由服务器转发给开发测试人员查看。
本申请实施例通过在目标软件中接入软件开发工具包SDK,可以不借助第三方工具即可完成对性能数据的实时采集,并供远程的开发测试人员查看。同时还可以根据远程开发人员的操作指令,实时可视化的对目标软件的数据进行增删改查,方便开发测试人员的开发测试,提升软件调试效率和测试深度,提高开发测试效果。
在一些实施方式中,SDK可以设置不同的工作模式,例如线上模式和开发模式,当处于线上模式时,SDK可以将运行数据和/或性能数据上报给服务器,开发测试人员可以通过远程终端访问前端页面,对上报的数据进行查看和远程调试。当处于开发模式时,SDK可以将运行数据和/或性能数据显示在APP中,即终端设备的显示界面上。示例性的,SDK可以在APP内嵌的悬浮窗上显示出运行数据和/或性能数据。同时SDK还可以通过终端设备的通知栏来对目标软件的阻塞进行监控,如果目标软件在运行过程中出现阻塞,则可以在通知栏上进行报警提醒。示例性的,SDK还可以大资源监控等等。
在一些实施例中,上述步骤S201中“通过SDK获取目标软件在运行过程中产生的运行数据”具体可以通过如下步骤实现:
获取目标软件在运行过程中的网络请求数据、页面切换耗时数据、软件启动耗时数据和阻塞监控数据中的至少一种,作为运行数据。
在本实施例中,网络请求数据是指http或https数据,页面切换耗时数据是指目标软件在从当前页面切换到下一个页面所需要耗费的时间,软件启动耗时数据是指目标软件启动所花费的时间,阻塞监控数据是指当出现目标软件出现阻塞(例如卡顿)时,该阻塞操作对应的信息(例如堆栈信息)。
示例性的,在一些实施方式中,SDK还可以从目标服务器处获取关于大网络资源的阈值,当目标软件发起网络请求时对应的响应体(response body)大小超过阈值时,则认为存在大网络资源的情况,SDK可以向目标服务器上报。示例性的,SDK还可以在本地(即终端设备上)进行弹窗提醒。
在一些实施方式中,SDK还可以获取输入输出异常监控数据,并在终端设备上进行弹窗提醒。
本申请实施例通过在目标软件中接入SDK,可以不借助第三方工具完成目标软件内网络请求数据的抓包,解决第三方工具在一些特定系统(例如Android7.0及以上系统)上无法抓取并解析https请求的问题。同时,还可以实时对用户界面线程阻塞进行实时监控并报警提示。实时监控网络请求中的大网络资源,并报警提示。实时测量目标软件各页面的加载时长,供开发测试人员调试。有效的辅助开发测试人员,提高开发测试效果。
在一些实施例中,上述“获取目标软件在运行过程中的网络请求数据”,具体可以通过如下步骤实现:
构建拦截器,将拦截器添加至网络请求框架中;
通过拦截器获取网络请求框架中的请求对象和响应对象;
根据请求对象和响应对象,获取网络请求数据。
其中,网络请求框架用于处理目标软件的网络请求。示例性的,网络请求框架可以是okhttp3。
在本实施例中,可以通过自定义Interceptor(拦截器)的方式来获取一个http请求的所有信息。其中,拦截器可以获取到okhttp3请求的请求(Request)和响应(Response)对象,以此获取整个网络请求的完整信息。
示例性的,网络请求数据的完整信息可以包括如下信息:响应类型、请求链接、请求方法、请求体、请求头、响应状态码、响应头和响应体。
具体的,可以通过AOP对okhttp3的构建方法进行切片,获取其构建者,然后通过构建者添加方法添加上述自定义的拦截器,完成对目标软件的最小化侵入,实现对所有okhttp3网络请求的注入。
在一些实施方式中,网络请求在各个阶段都存在有耗时,各个阶段的耗时可以通过构建事件监听器(EventListener)的方式来对一个网络请求的各个阶段的事件进行打点记录来得到各个阶段的耗时。
本申请实施例通过构建拦截器并通过AOP切片的方法将拦截器添加至网络请求框架中,能够不借助第三方工具即可获取到网络请求数据,解决现有的第三方工具在一些特定系统(例如Android7.0及以上系统)上无法抓取并解析https请求的问题。同时抓取得到的网络请求数据可以上传到目标服务器,供开发测试人员实时查看以进行针对性的优化调试,提高开发测试效果。
在一些实施例中,上述“获取目标软件在运行过程中的页面切换耗时数据”的步骤具体可以通过如下步骤实现:
获取目标软件中上一个页面的暂停耗时、下一个页面的启动耗时和下一个页面的渲染耗时;
根据暂停耗时、启动耗时和渲染耗时,获取页面切换耗时数据。
在本实施例中,页面切换耗时可以分为上一个页面暂停耗时、下一个页面启动耗时和下一个页面渲染耗时三个部分。示例性的,页面暂停耗时具体可以包括(页面销毁耗时和内存回收耗时。
示例性的,以终端设备的操作系统为android系统为例,可以通过java反射机制获取到android系统中目标软件的主线程,然后获取其回调变量,将其赋值为自定义的值。在自定义的值中通过判定安卓操作系统消息的字段来进行打点操作。其中当字段=100,表示加载开始;当字段为101时表示加载暂停;当加载完成后,开始页面渲染,直到页面渲染结束。基于对上述几个时间点的打点并计算其时间差值,可以完成每个页面切换的详细耗时统计。
本申请实施例通过测量目标软件在运行过程中各个页面的加载时长,并上传到目标服务器,开发测试人员可以通过远程终端访问前端页面获取目标服务器中的数据,从而可以有效的供开发测试人员进行针对性的调优,提高目标软件的开发测试效果。
在一些实施例中,上述“获取目标软件在运行过程中的软件启动耗时数据”具体可以通过如下步骤实现:
获取目标软件的冷启动开始时间点、热启动开始时间点和启动结束时间点;
根据冷启动开始时间点、热启动开始时间点和启动结束时间点,获取软件启动耗时数据。
示例性的,可以通过AOP对android操作系统中的方法进行hook插装,完成对启动耗时的采集。
本申请实施例通过测量目标软件的启动时长并上传到目标服务器,开发测试人员可以通过远程终端访问前端页面获取目标服务器中的数据,从而可以有效的供开发测试人员进行针对性的调优,提高目标软件的开发测试效果。
在一些实施例中,上述“获取目标软件在运行过程中的阻塞监控数据”,具体可以通过如下步骤实现:
获取目标软件产生的消息,确定消息的开始时间点和结束时间点;
计算得到结束时间点与开始时间点的差值,将差值与预设阈值进行对比;
若差值超过预设阈值,则获取更新操作的操作数据,作为阻塞监控数据。
其中,消息用于对终端设备的用户界面进行更新操作。在本实施例中,Android操作系统使用消息机制来和用户界面(User Interface,UI)主线程进行通信,完成UI的更新操作。因此可以通过获取Android操作系统中发送消息(dispatchMessage)方法的执行时间,如果其执行时间大于设定的阈值的话,则认为UI线程有卡顿发生。
具体的,SDK从目标服务器获取阈值,然后获取消息开始的时刻和结束的时刻,通过统计两个时刻的时间差,并与阈值比较,超过阈值,则认为主线程有耗时操作存在阻塞。获取到该耗时操作对应的堆栈信息,将其上报给目标服务器,作为阻塞监控数据。同时,SDK也可以通过本地弹窗提示开发测试人员存在阻塞操作。
本申请实施例通过实时对UI线程的阻塞进行监控并且在出现阻塞时可以输出报警提示以提醒开发测试人员,可以方便开发测试人员进行针对性的调优,提高软件开发测试效果。
在一些实施例中,上述步骤S201中“获取终端设备的性能数据”具体可以通过如下步骤实现:
获取终端设备的处理器运行数据、内存数据、帧率数据和电池数据中的至少一种,作为终端设备的性能数据。
在本实施例中,处理器运行数据和内存数据可以通过建立新的线程来定时采集,而电池数据的采集可以通过处理电池数据变化事件以得到电池数据。同时,帧率数据具体可以通过帧数计数得到。
示例性的,处理器运行数据主要包括用户进程CPU使用率、系统进程CPU使用率、目标软件进程CPU使用率、IO等待CPU使用率和总CPU使用率。
其中,对于操作系统为Android10以下的终端设备,可以通过获取当前目标软件的主进程ID,并读取本地文件目录下CPU的数目获取CPU核数以及获取对应核的最大频率。进一步,可以获取用户占用信息、软件信息、系统占用信息、闲置信息、IO等待信息和总数据,其中,用户占用信息记为userData;系统占用信息记为systemData;闲置信息记为idleData;软件信息记为appData;io等待信息记为ioWait;总数据记为totalData。
通过设定t1时刻和t2时刻对上述数据进行采样,totalDataDiff为两个时刻的totalData采样值的差值;idleDataDiff为两个时刻的idleData采样值的差值;appDataDiff为两个时刻的appData的采样值的差值;userDataDiff为两个时刻的userData采样值的差值;systemDataDiff为两个时刻的systemData的采样值的差值;ioWaitDiff为两个时刻的ioWait采样值的差值。则总CPU使用率为totlaDataDiff-idelDataDiff)/totalDataDiff;目标软件进程CPU使用率为appDataDiff/totalDataDiff;用户进程CPU使用率为userDataDiff/totalDataDiff;系统进程的CPU使用率为systemDataDiff/totalDatadiff;IO等待CPU使用率为ioWaitDiff/totalDataDiff。
可选的,对于操作系统为Android10以上的终端设备则可以直接去解析获取目标软件进程的CPU使用率即可。
在本实施例中,内存数据可以包括当前目标软件的JAVA堆最大内存,JAVA堆已分配内存、JAVA堆空闲内存、Native已分配内存,当前目标软件进程的总内存大小,低内存阈值、是否低内存状态运行等数据。
其中,JAVA堆最大内存、JAVA堆空闲内存、Native已分配内存、低内存阈值和是否低内存状态运行可以通过系统Api获取;JAVA堆已分配内存为上述二者的差值;当前App进程的总内存大小为上述JAVA堆已分配内存和Native层已分配内存的总和。
在本实施例中,电池数据包括有电池状态、电池健康状态,电池剩余电量,电池的充电类型,电池电压,电池温度,电池类型等数据。
其中,可以通过注册事件来监控电池相关指标的变化,示例性的,注册的事件可以为三个。示例性的,电池状态包括有充电中、放电中、未充电、已充满几种状态。示例性的,电池健康状态包括良好、温度过高、没电、过电压、温度过低几种状态。示例性的,电池的充电类型包括充电器充电、有线充电、无线充电几种方式。
本申请实施例通过获取处理器运行数据、内存数据、帧率数据和电池数据中的至少一种,作为终端设备的性能数据,上传到目标服务器,可以供开发测试人员实时查看和调优,提高开发测试效果。
在一些实施例中,上述步骤S203具体可以通过如下步骤实现:
接收目标服务器转发远程终端的操作指令,确定目标软件所产生的数据的存储区域;
根据操作指令,对数据库和/或共享引用存储类中的数据进行目标操作。
其中,存储区域包括数据库和共享引用存储类(SharedPreferences),数据库中存储的数据与共享引用存储类中存储的数据不相同。示例性的,数据库可以是SQlite数据库。
进一步的,在一些实施例中,当数据的存储区域为数据库时,可以获取目标软件的数据库存放,并遍历该目录下的所有文件列表,过滤掉回滚日志、预写日志、共享内存日志,剩下的文件即为数据库中的文件。其中,回滚日志、预写日志、共享内存日志的结尾标志各不相同,例如回滚日志的结尾标志为-journal,预写日志的结尾标志为-wal,共享内存日志为-shm。对于给定的数据库文件,可以通过该数据库文件对应的表名、表名对应的表键以及表名对应的表内容,具体可以通过系统API得到。
其中,在对数据库进行目标操作时,可通过如下步骤实现:
获取数据库中的文件以及文件对应的表名、表键和表内容;
根据操作指令,对数据库文件以及数据库文件对应的表名、表键和表内容进行目标操作。
在本实施例中,数据新增操作即新增数据,数据删除操作即删除数据,数据查找操作即查找目标数据,数据修改操作即对数据进行修改。示例性的,如果是对表名的数据修改操作,可以通过系统API传入对应的键值对<name,value>对其进行修改或插入操作。对于数据删除操作或数据查找操作,可以通过系统API执行目标服务器传输的结构化查询语言(Structured Query Language,SQL),然后将结果返回给目标服务器。
本申请实施例通过接收服务器传输的操作指令,可以根据操作指令对目标软件的本地数据库进行增删改查操作,可以方便开发测试人员实时的开发测试,提升调试效率和测试深度。
在一些实施例中,当数据的存储区域为SharedPreferences时,可以通过如下步骤对共享引用存储类中的数据进行目标操作:
获取共享引用存储类中的文件列表和文件列表中的文件数据;
根据操作指令,对文件列表中的文件数据进行目标操作。
在本实施例中,SharedPreferences与数据库中存放的数据是不相同的,简单来说,数据库中存放的是一些形式更加复杂的文件数据,SharedPreferences存放的是一些形式较为简单的数据,包括键值对形式的数据。示例性的,SharedPreferences中存放的可以是一条记录,例如目标软件是否在近7天弹窗提示版本更新。
示例性的,可以获取目标软件的SharedPreferences文件存放目录,并对目录进行遍历,得到SharedPreferences文件数据。
示例性的,在对文件数据进行数据删除操作时,可以分为删除指定键值或删除整个文件数据两种方式。其中,可以通过操作指令来指示删除指定键值(即KEY)或整个文件数据。例如如果删除的是整个文件数据,则开发测试人员可以通过远程终端发送操作指令(包含待删除文件数据的文件名)给目标服务器,由目标服务器转发给SDK,即可指示SDK将整个文件数据删除。如果删除的是指定键值,则操作指令中会包含待删除的KEY以指示SDK对指定的KEY进行删除。
在本实施例中,修改操作可以支持对多种类型的数据的修改,例如字符串类型数据、布尔类型数据、整型数据等。开发测试人员可以通过目标服务器传输待修改的文件名、类型、KEY和修改后的值至SDK,如果待修改的数据类型为字符串类型数据,则可以通过调用API修改字符串类型数据的值,如果待修改的数据类型为布尔类型数据,则可以通过调用API修改布尔类型数据的值。
在一些实施例中,上述方法还可以包括如下步骤:
获取目标软件的界面信息,将界面信息上传至目标服务器以转发至远程终端。
其中,界面信息至少包括有目标软件当前的界面截图。
在本申请实施例中,可以通过系统API获取当前目标软件当前窗口的截屏作为界面信息,并将该截屏的位图文件进行等比压缩,将其转化为基于64个可打印字符来表示二进制数据(base64编码)的字符串,上传至目标服务器,再由目标服务器转发至远程终端,供远程终端上的开发测试人员查看。
本申请实施例通过获取目标软件的界面信息上传到服务器,可以转发给远程终端的开发测试人员查看,辅助开发测试人员定位目标软件的故障,提高开发测试的效果。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图3为本申请实施例提供的软件调测装置的结构示意图,该软件调测装置可以是集成在终端设备中的软件开发工具包SDK。如图3所示,该软件调测装置30可以包括有获取模块31、上传模块32和操作模块33。
其中,获取模块31用于通过SDK获取目标软件在运行过程中产生的运行数据和/或终端设备的性能数据。上传模块32用于通过SDK将运行数据和/或性能数据上传至目标服务器。操作模块33用于接收目标服务器转发远程终端的操作指令,对目标软件所产生的数据进行目标操作。
其中,目标操作包括数据删除操作、数据新增操作、数据查询操作和数据修改操作中的至少一种。
在一些实施例中,上述获取模块具体可以用于获取目标软件在运行过程中的网络请求数据、页面切换耗时数据、软件启动耗时数据和阻塞监控数据中的至少一种,作为运行数据。
可选的,在一些实施例中,上述获取模块还可以用于:
构建拦截器,将拦截器添加至网络请求框架中;
通过拦截器获取网络请求框架中的请求对象和响应对象;
根据请求对象和响应对象,获取网络请求数据。
其中,网络请求框架用于处理目标软件的网络请求。
可选的,在一些实施例中,上述获取模块还可以用于:
获取目标软件中上一个页面的暂停耗时、下一个页面的启动耗时和下一个页面的渲染耗时;
根据暂停耗时、启动耗时和渲染耗时,获取页面切换耗时数据。
可选的,在一些实施例中,上述获取模块还可以用于:
获取目标软件的冷启动开始时间点、热启动开始时间点和启动结束时间点;
根据冷启动开始时间点、热启动开始时间点和启动结束时间点,获取软件启动耗时数据。
可选的,在一些实施例中,上述获取模块还可以用于:
获取目标软件产生的消息,确定消息的开始时间点和结束时间点,消息用于对终端设备的用户界面进行更新操作;
计算得到结束时间点与开始时间点的差值,将差值与预设阈值进行对比;
若差值超过预设阈值,则获取更新操作的操作数据,作为阻塞监控数据。
可选的,在一些实施例中,上述获取模块还可以用于:
获取终端设备的处理器运行数据、内存数据、帧率数据和电池数据中的至少一种,作为终端设备的性能数据。
在一些实施例中,上述操作模块具体可以用于:
接收目标服务器转发远程终端的操作指令,确定目标软件所产生的数据的存储区域;
根据操作指令,对数据库和/或共享引用存储类中的数据进行增删操作和/或查找操作。
其中,存储区域包括数据库和共享引用存储类,数据库中存储的数据与共享引用存储类中存储的数据不相同。
可选的,在一些实施例中,上述操作模块具体可以用于:
获取数据库中的文件以及文件对应的表名、表键和表内容;
根据操作指令,对数据库文件以及数据库文件对应的表名、表键和表内容进行增删操作和/或查找操作。
可选的,在一些实施例中,上述操作模块具体可以用于:
获取共享引用存储类中的文件列表和文件列表中的文件数据;
根据操作指令,对文件列表中的文件数据进行增删操作和/或查找操作。
在一些实施例中,还可以包括界面上传模块,用于获取目标软件的界面信息,将界面信息上传至目标服务器以转发至远程终端。
其中,界面信息至少包括有目标软件当前的界面截图。
本申请实施例提供的装置,可用于执行上述实施例中的方法,其实现原理和技术效果类似,在此不再赘述。
图4为本申请实施例提供的电子设备的结构示意图。如图4所示,该电子设备40包括:至少一个处理器41、存储器42、总线43及通信接口44。
其中:处理器41、通信接口44以及存储器42通过总线43完成相互间的通信。
通信接口44,用于与其它设备进行通信,该通信接口包括用于进行数据传输的通信接口以及用于进行人机交互的显示界面或者操作界面等。
处理器41,用于执行程序,具体可以执行上述实施例中所描述的方法中的相关步骤。
处理器可能是中央处理器,或者是特定集成电路(Application SpecificIntegrated Circuit,ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器41,用于存放计算机指令。存储器可能包含高速RAM存储器,也可能还包括非易失性存储器,例如至少一个磁盘存储器。
图5为本申请实施例提供的软件调测系统的结构示意图,如图5所示,该软件调测系统包括有终端设备51、服务器52和远程终端53。其中,终端设备51中包括有待开发测试的目标软件以及接入至目标软件的SDK(即软件开发工具包),SDK具体可以分为性能采集模块511、数据采集模块512和数据调试模块513。
其中,终端设备51中的SDK通过socket协议与服务器52进行数据通信,服务器52通过http协议和websocket协议与远程终端53进行数据通信。
其中,性能采集模块511可以采集终端设备的性能数据,数据采集模块512可以采集目标软件在运行过程中产生的运行数据。性能采集模块511和数据采集模块512采集的数据将上传到服务器52。
在本实施例中,服务器52负责将SDK上报的数据进行处理和存储,并与远程终端53进行数据通信。示例性的,服务器52包括有数据接收模块521、数据处理模块522、数据存储模块523和调试控制台524。其中,数据接收模块521用于接收终端设备51上传的数据,数据处理模块522用户进行数据处理,数据存储模块523用于进行数据存储,调试控制台524用于接收远程终端53的操作指令,转发给数据调试模块513实现对目标软件的开发测试。
远程终端53用于根据开发测试人员的操作,发送对应的指令给服务器52,由服务器52转发给数据调试模块513,通过数据调试模块513对目标软件所产生的数据进行目标操作。
其中,目标操作包括数据删除操作、数据新增操作、数据查询操作和数据修改操作中的至少一种。
本实施例还提供一种可读存储介质,可读存储介质中存储有计算机指令,当电子设备的至少一个处理器执行该计算机指令时,电子设备执行上述的各种实施方式提供的软件调测方法。
本实施例还提供一种程序产品,该程序产品包括计算机指令,该计算机指令存储在可读存储介质中。电子设备的至少一个处理器可以从可读存储介质读取该计算机指令,至少一个处理器执行该计算机指令使得电子设备实施上述的各种实施方式提供的软件调测方法。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中,a,b,c可以是单个,也可以是多个。
可以理解的是,在本申请实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (16)

1.一种软件调测方法,其特征在于,应用于终端设备,所述终端设备包括目标软件以及接入至所述目标软件的软件开发工具包SDK,所述方法包括:
通过所述SDK获取所述目标软件在运行过程中产生的运行数据和/或所述终端设备的性能数据;
通过所述SDK将所述运行数据和/或性能数据上传至目标服务器;
接收所述目标服务器转发远程终端的操作指令,对所述目标软件所产生的数据进行目标操作,所述目标操作包括数据删除操作、数据新增操作、数据查询操作和数据修改操作中的至少一种。
2.根据权利要求1所述的方法,其特征在于,所述通过所述SDK获取所述目标软件在运行过程中产生的运行数据,包括:
获取所述目标软件在运行过程中的网络请求数据、页面切换耗时数据、软件启动耗时数据和阻塞监控数据中的至少一种,作为所述运行数据。
3.根据权利要求2所述的方法,其特征在于,所述获取所述目标软件在运行过程中的网络请求数据,包括:
构建拦截器,将所述拦截器添加至网络请求框架中,所述网络请求框架用于处理所述目标软件的网络请求;
通过所述拦截器获取所述网络请求框架中的请求对象和响应对象;
根据所述请求对象和响应对象,获取所述网络请求数据。
4.根据权利要求2所述的方法,其特征在于,获取所述目标软件在运行过程中的页面切换耗时数据,包括:
获取所述目标软件中上一个页面的暂停耗时、下一个页面的启动耗时和所述下一个页面的渲染耗时;
根据所述暂停耗时、启动耗时和渲染耗时,获取所述页面切换耗时数据。
5.根据权利要求2所述的方法,其特征在于,获取所述目标软件在运行过程中的软件启动耗时数据,包括:
获取所述目标软件的冷启动开始时间点、热启动开始时间点和启动结束时间点;
根据所述冷启动开始时间点、热启动开始时间点和启动结束时间点,获取所述软件启动耗时数据。
6.根据权利要求2所述的方法,其特征在于,获取所述目标软件在运行过程中的阻塞监控数据,包括:
获取所述目标软件产生的消息,确定所述消息的开始时间点和结束时间点,所述消息用于对所述终端设备的用户界面进行更新操作;
计算得到所述结束时间点与所述开始时间点的差值,将所述差值与预设阈值进行对比;
若所述差值超过预设阈值,则获取所述更新操作的操作数据,作为所述阻塞监控数据。
7.根据权利要求1所述的方法,其特征在于,获取所述终端设备的性能数据,包括:
获取所述终端设备的处理器运行数据、内存数据、帧率数据和电池数据中的至少一种,作为所述终端设备的性能数据。
8.根据权利要求1所述的方法,其特征在于,所述接收所述目标服务器转发远程终端的操作指令,对所述目标软件所产生的数据进行目标操作,包括:
接收所述目标服务器转发远程终端的操作指令,确定所述目标软件所产生的数据的存储区域,所述存储区域包括数据库和共享引用存储类,所述数据库中存储的数据与所述共享引用存储类中存储的数据不相同;
根据所述操作指令,对所述数据库和/或共享引用存储类中的数据进行目标操作。
9.根据权利要求8所述的方法,其特征在于,根据所述操作指令,对所述数据库中的数据进行目标操作,包括:
获取所述数据库中的文件以及所述文件对应的表名、表键和表内容;
根据所述操作指令,对所述数据库文件以及所述数据库文件对应的表名、表键和表内容进行目标操作。
10.根据权利要求8所述的方法,其特征在于,根据所述操作指令,对所述共享引用存储类中的数据进行目标操作,包括:
获取所述共享引用存储类中的文件列表和所述文件列表中的文件数据;
根据所述操作指令,对所述文件列表中的文件数据进行目标操作。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述方法还包括:
获取所述目标软件的界面信息,将所述界面信息上传至所述目标服务器以转发至所述远程终端,所述界面信息至少包括有所述目标软件当前的界面截图。
12.一种软件调测装置,其特征在于,包括:
获取模块,用于通过SDK获取所述目标软件在运行过程中产生的运行数据和/或所述终端设备的性能数据;
上传模块,用于通过SDK将所述运行数据和/或性能数据上传至目标服务器;
操作模块,用于接收所述目标服务器转发远程终端的操作指令,对所述目标软件所产生的数据进行目标操作,所述目标操作包括数据删除操作、数据新增操作、数据查询操作和数据修改操作中的至少一种。
13.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-11中任一项所述的方法。
14.一种软件调测系统,其特征在于,包括:终端设备、与所述终端设备通信的服务器以及与所述服务器通信的远程终端,所述终端设备中包含有目标软件以及接入至所述目标软件的软件开发工具包SDK;
所述SDK用于获取所述目标软件在运行过程中产生的运行数据和/或所述终端设备的性能数据,将所述运行数据和/或性能数据上传至服务器;
所述服务器用于将所述运行数据和/或性能数据传输给所述远程终端,并接收所述远程终端反馈的操作指令,将所述操作指令传输给所述终端设备;
所述SDK还用于根据所述操作指令,对所述目标软件所产生的数据进行目标操作,所述目标操作包括数据删除操作、数据新增操作、数据查询操作和数据修改操作中的至少一种。
15.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如权利要求1-11任一项所述的方法。
16.一种程序产品,包括计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1-11任一项所述的方法。
CN202111655842.7A 2021-12-30 2021-12-30 软件调测方法、装置、设备、系统和介质 Pending CN114356764A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111655842.7A CN114356764A (zh) 2021-12-30 2021-12-30 软件调测方法、装置、设备、系统和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111655842.7A CN114356764A (zh) 2021-12-30 2021-12-30 软件调测方法、装置、设备、系统和介质

Publications (1)

Publication Number Publication Date
CN114356764A true CN114356764A (zh) 2022-04-15

Family

ID=81104324

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111655842.7A Pending CN114356764A (zh) 2021-12-30 2021-12-30 软件调测方法、装置、设备、系统和介质

Country Status (1)

Country Link
CN (1) CN114356764A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114915565A (zh) * 2022-05-06 2022-08-16 上海哔哩哔哩科技有限公司 网络调试的方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114915565A (zh) * 2022-05-06 2022-08-16 上海哔哩哔哩科技有限公司 网络调试的方法和系统
CN114915565B (zh) * 2022-05-06 2023-09-19 上海哔哩哔哩科技有限公司 网络调试的方法和系统

Similar Documents

Publication Publication Date Title
US8141053B2 (en) Call stack sampling using a virtual machine
Jayathilake Towards structured log analysis
CN111881011A (zh) 日志管理方法、平台、服务器及存储介质
CN106407102B (zh) 应用程序的模糊测试方法、装置及系统
JP2018165857A (ja) 分析装置、分析システム、分析方法および分析プログラム
CN105204986A (zh) 产品的自动化测试方法、服务器及移动设备
WO2017172669A2 (en) Tagged tracing, logging and performance measurements
CN111240876A (zh) 微服务的故障定位方法、装置、存储介质及终端
CN110633195A (zh) 一种性能数据的展示方法、装置、电子设备及存储介质
CN114356764A (zh) 软件调测方法、装置、设备、系统和介质
Weng et al. Kmon: An in-kernel transparent monitoring system for microservice systems with ebpf
CN116841902A (zh) 健康状态检查方法、装置、设备及存储介质
CN113448795A (zh) 用于获取系统诊断信息的方法、设备和计算机程序产品
CN116708217A (zh) 一种数据中心设备监控方法、系统、电子设备及存储介质
CN113360182B (zh) 系统性能诊断的方法和装置
CN114896128A (zh) 基于区块链的应用程序性能测试方法及装置
CN114816914A (zh) 基于Kubernetes的数据处理方法、设备及介质
KR102109536B1 (ko) 장애 유형 기반의 서버 장애 진단 및 대응 방법
KR20170131007A (ko) 데이터 분산 서비스 기반의 실시간 통신 감시 시스템
JP2009181494A (ja) ジョブ処理システムおよびジョブ情報取得方法
CN117240695B (zh) 基于eBPF的持续性能剖析方法、装置、电子设备和存储介质
CN114297662B (zh) 一种sql注入漏洞检测方法、装置及可读存储介质
US11550789B2 (en) Capturing query execution statistics
CN116340666A (zh) Web页面访问轨迹追踪方法、装置、设备及存储介质
Nicolaescu et al. On Adequate Behavior-based Architecture Conformance Checks

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