一种基于安卓APP的压力测试及崩溃日志提取的改进方法技术

技术编号:32356878 阅读:18 留言:0更新日期:2022-02-20 03:18
本发明专利技术提供一种基于安卓APP的压力测试及崩溃日志提取的改进方法使用Python语言编写脚本对Maxim和uiautomator2工具进行整合封装,在APP提测后进行冒烟测试,目的是通过大量的随机点击、滑动等事件,提前发现应用闪退、内存溢出等严重问题,出现问题后,会对日志进行转储,便于排查和改进问题,通过该方法,确保了APP的提测质量,避免无效提测造成人工成本的浪费;封装Maxim类,将配置参数传递给类,作为实例运行,大大简化了运行的命令,可以通过多个实例化运行多个设备;待测试完成后自动进行日志筛选,转储崩溃日志,提高了测试效率,省去人工收集日志再定位严重级别日志的过程,最终达到连接设备后,一键运行该脚本,自动进行应用压力测试,人工只需验收日志的目的。人工只需验收日志的目的。人工只需验收日志的目的。

【技术实现步骤摘要】
一种基于安卓APP的压力测试及崩溃日志提取的改进方法


[0001]本专利技术涉及电数字数据处理
,具体涉及一种基于安卓APP的压力测试及崩溃日志提取的改进方法。

技术介绍

[0002]安卓压力测试工具对于快速验证产品质量,冒烟测试,有着非常重要的作用。
[0003]目前现有的技术如下:
[0004]安卓自带的测试工具Monkey,调用Android自带API发送一系列伪随机事件对应用进行随机压力测试。优点是速度很快,不用安装任何依赖,安卓设备可直接运行测试;缺点也很明显,不受控制,会在测试APP时进入通知栏、系统设置、非预期Activity页面死循环等等,覆盖率比较低,测试结果也不全面。
[0005]安卓压力测试工具Maxim,依赖monkey.jar和framework.jar两个jar包执行,在Monkey的基础上做出了一些改进,提供三种遍历测试模式。相对Monkey来说,增加了截图回溯、黑名单、白名单、自定义测试路径等功能,使随机测试变得可控,是非常好用的APP压力测试工具;不足之处是执行命令较长,多设备执行需要手动推送依赖和配置文件到设备上。
[0006]安卓UI自动化测试工具uiautomator2,在设备上安装http rpc server,用于接收Python库下发的请求,再转发到设备上调用原生的uiautomator api实现操作设备,可以执行点击、滑动、截图、录屏等等,还支持交互执行adb命令、无线真机连接。

技术实现思路

[0007]本专利技术是为了解决安卓压力测试工具自动化问题,提供一种基于安卓APP的压力测试及崩溃日志提取的改进方法,应用于安卓应用的自动化压力测试,使用Python语言编写脚本对Maxim和uiautomator2工具进行整合封装,在APP提测后进行冒烟测试,目的是通过大量的随机点击、滑动等事件,提前发现应用闪退、内存溢出等严重问题,出现问题后,会对日志进行转储,便于排查和改进问题。通过该方法,确保了APP的提测质量,避免无效提测造成人工成本的浪费。
[0008]本专利技术提供一种基于安卓APP的压力测试及崩溃日志提取的改进方法,其特征在于:以脚本的方式,通过uiautomator2使测试用电脑与待测设备进行命令交互,封装Maxim类,将执行压力测试所需要的参数通过实例化的方式传入待测设备,执行压力测试,根据崩溃日志的级别标签和关键字筛选出对应的PID,将报错PID的详细日志转储到自定义的崩溃日志文件内,得到压力测试的问题数量和堆栈详情,完成压力测试;
[0009]待测设备的数量为1台及1台以上;
[0010]测试用电脑与待测设备之间为数据线连接或无线连接。
[0011]本专利技术所述的一种基于安卓APP的压力测试及崩溃日志提取的改进方法,作为优选方式,包括如下步骤:
[0012]S1、设备连接:将测试用电脑与待测设备通过数据线连接或无线连接;
[0013]S2、清空缓冲区日志及历史日志:以脚本的方式,调用uiautomator2api执行shell命令,清空待测设备的缓冲区日志及Maxim历史日志;
[0014]S3、推送依赖:判断待测设备是否存在Maxim所需要的依赖,如果判断为是,则直接进入步骤S4;如果判断为否,则将依赖推送到待测设备上,并添加相关日志记录;
[0015]S4、亮屏解锁:判断待测设备是否为锁屏状态,如果判断为是,使用uiautomator2进行亮屏解锁;如果判断为否,直接进入步骤S5;
[0016]S5、停止uiautomator2服务;
[0017]S6、压力测试:封装maxim类,将执行压力测试所需要的参数通过实例化的方式传入待测设备,执行压力测试,通过stream的方式输出执行过程日志,执行完成后,关闭流模式;
[0018]S7、崩溃日志提取:重新启动uiautomator2的uiautomator服务,转储崩溃日志,根据崩溃日志的级别标签和关键字筛选出对应的PID,将报错PID的详细日志转储到自定义的崩溃日志文件内,得到本次压力测试的问题数量和堆栈详情,完成本次压力测试。
[0019]本专利技术所述的一种基于安卓APP的压力测试及崩溃日志提取的改进方法,作为优选方式,步骤S7中,通过调用dump_crash_log方法转储崩溃日志,具体方法为:
[0020]初始化崩溃日志转储路径和崩溃日志文件名称,通过uiautomator2获取待测设备的信息,过滤严重级别的崩溃日志,收集完成后杀死logcat进程,根据关键字找到对应的PID,存储到pid_list内并返回;
[0021]根据pid_list的长度判断是否出现闪退,如果判断为是,根据崩溃日志转储路径和崩溃日志文件名称创建崩溃日志文件,写入发生问题的待测设备的信息,统计出现问题的次数,遍历pid_list,在原始日志文件中找出每个PID所对应的堆栈日志,存储到崩溃日志文件内,打印崩溃日志文件路径和崩溃日志名称到崩溃日志文件内;如果判断为否,本次压力测试完成,打印结束日志。
[0022]本专利技术所述的一种基于安卓APP的压力测试及崩溃日志提取的改进方法,作为优选方式,崩溃日志文件名称包括:待测设备号码、压力测试日期和错误类型。
[0023]本专利技术所述的一种基于安卓APP的压力测试及崩溃日志提取的改进方法,作为优选方式,待测设备的信息包括:型号、厂商、版本号、SDK版本号。
[0024]本专利技术所述的一种基于安卓APP的压力测试及崩溃日志提取的改进方法,作为优选方式,通过adb logcat添加“*:E”标签的方式过滤严重级别的崩溃日志。
[0025]本专利技术所述的一种基于安卓APP的压力测试及崩溃日志提取的改进方法,作为优选方式,步骤S2中,使用Python语言编写脚本。
[0026]本专利技术所述的一种基于安卓APP的压力测试及崩溃日志提取的改进方法,作为优选方式,步骤S3中,依赖的名称存放在jar数组和rely数组中。
[0027]本专利技术所述的一种基于安卓APP的压力测试及崩溃日志提取的改进方法,作为优选方式,jar数组中存放monkey和framework的依赖;rely数组中存放awl.strings、max.config和max.widget.black的依赖。
[0028]本专利技术所述的一种基于安卓APP的压力测试及崩溃日志提取的改进方法,作为优选方式,步骤S6中,执行过程日志包括:运行APP的包名、运行时长、待测设备编号、操作间隔、模式和崩溃日志输出路径。
[0029]本专利技术使用Python语言编写脚本,利用uiautomator2无线连接和执行shell命令的能力,做一些执行测试前的准备工作,比如:
[0030]1.清空设备缓冲区日志;
[0031]2.初始化Maxim依赖环境,将jar包、配置文件推送到手机;
[0032]3.停掉uiautomator2占用的uiautomator服务,由于u本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于安卓APP的压力测试及崩溃日志提取的改进方法,其特征在于:以脚本的方式,通过uiautomator2使测试用电脑与待测设备进行命令交互,封装Maxim类,将执行压力测试所需要的参数通过实例化的方式传入所述待测设备,执行压力测试,根据崩溃日志的级别标签和关键字筛选出对应的PID,将报错PID的详细日志转储到自定义的崩溃日志文件内,得到压力测试的问题数量和堆栈详情,完成压力测试;所述测试用电脑与所述待测设备之间为数据线连接或无线连接。2.根据权利要求1所述的一种基于安卓APP的压力测试及崩溃日志提取的改进方法,其特征在于:包括如下步骤:S1、设备连接:将所述测试用电脑与所述待测设备通过数据线连接或无线连接;S2、清空缓冲区日志及历史日志:以脚本的方式,调用uiautomator2api执行shell命令,清空所述待测设备的缓冲区日志及Maxim历史日志;S3、推送依赖:判断所述待测设备是否存在Maxim所需要的依赖,如果判断为是,则直接进入步骤S4;如果判断为否,则将所述依赖推送到所述待测设备上,并添加相关日志记录;S4、亮屏解锁:判断所述待测设备是否为锁屏状态,如果判断为是,使用uiautomator2进行亮屏解锁;如果判断为否,直接进入步骤S5;S5、停止uiautomator2服务;S6、压力测试:封装maxim类,将执行压力测试所需要的参数通过实例化的方式传入所述待测设备,执行压力测试,通过stream的方式输出执行过程日志,执行完成后,关闭流模式;S7、崩溃日志提取:重新启动uiautomator2的uiautomator服务,转储崩溃日志,根据崩溃日志的级别标签和关键字筛选出对应的PID,将报错PID的详细日志转储到自定义的所述崩溃日志文件内,得到压力测试的问题数量和堆栈详情,完成压力测试。3.根据权利要求2所述的一种基于安卓APP的压力测试及崩溃日志提取的改进方法,其特征在于:步骤S7中,通过调用dump_crash_log方法转储崩溃日志,具体方法为:初始化崩溃日志转储路径和崩溃日志文件名称,通过uiau...

【专利技术属性】
技术研发人员:兰泱碧赵磊张世侠
申请(专利权)人:北京宜搜天下科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1