Android-专项测试(2)

4.10.过度绘制【完成】

过度绘制的概念:

过度绘制(Overdraw)描述的是屏幕上的某个像素在同一帧的时间内被绘制了多次。在多层次的UI结构里面,如果不可见的UI也在做绘制的操作,这就会导致某些像素区域被绘制了多次。这就浪费大量的 CPU 以及 GPU 资源。

首先,我们从定义来分析,这里有几个关键词:“某个像素”、“同一帧”、“绘制多次”、“多层”、“不可见UI"。那么我们其实根据这些关键词,可以分析出一些结论:

1.过度绘制是同一个像素点,被绘制了多次造成的。

2.浪费大量的 CPU 以及 GPU 资源。

3.过度绘制通常由于 UI 层次比较多,并且在同一个区域,不可见的 UI 和可见 UI 同时参与了绘制。

4.UI 层次很多,不一定有过度绘制,它们之间没有必然联系。但层次过度会影响测量布局等阶段,同样会造成丢帧、卡顿等性能问题。

在android中之所以要关注过度绘制,是因为从性能数据上看我们能发现,对于计算逻辑不重的客户端来说,其cpu的消耗大部分在renderThread上(android中用于做渲染的线程)

过度绘制也会造成丢帧、卡顿等性能问题。

因此对过度绘制的探索 能帮助我们进一步优化cpu以及gpu的使用。

测试方法:

开发者选项,打开”调试 GPU 过度绘制“(Show GPU Overdraw)的选项,在打开的选择项中,可以选择“显示过度绘制区域”,这样就可以观察 UI 界面上的过度绘制情况了。

如图,过度绘制分为4个级别,分别用一种颜色来表示:

1.蓝色:代表同一个像素点多绘制了1次。

2.淡绿:代表同一个像素点多绘制了2次。

3.淡红:代表同一个像素点多绘制了3次。

4.深红:代表同一个像素点多绘制了4次以上。

我们的目标就是尽量减少红色区域,看到更多的蓝色区域。

4.11.极端测试场景【完成】

在android系统中当系统资源不足时会进行资源的回收,尤其是当系统发生oom之后。

有时候在极端场景下app的健壮性也十分影响用户体验。那这些极端场景主要可以通过如下2种手段进行模拟。

4.11.1.不保留活动

在android的开发者选项中有一个【不保留活动】的配置项,该配置项开启后在离开当前的activity之后就会触发activity的destroy方法,再次打开该activity时会执行oncreate方法。

例如,在我们自己项目的测试过程汇总,发现2个问题:

问题1:在登录弹窗隐私协议同意弹窗出现之后置于后台,然后再唤起到前台,此时隐私协议弹窗却变成了一个空白的设置页弹窗;

问题2:在搜索页搜索之后切换到其他页面之后会再次唤起弹窗。

上述问题均是由代码设计不严谨导致。

4.11.2.低内存&低cpu模拟

https://blog.csdn.net/jinron10/article/details/85325931

在这些极端的场景下面,如果应用的确需要这么多资源,那么这种极端的场景肯定是会有问题在整体功能层面上。所以一方面要尽可能优化app的资源使用情况,另外一方面重点要考量的是在资源回复之后app功能不能出现异常。

在此场景下「可恢复」才是我们重点要考量的内容。

比如之前,在车载测试过程中偶遇到以下的两个问题:

问题1:

原因:是系统在内存不足的时候杀掉了B站的ijk进程,又自动拉起了这个进程,导致播放,后续我们会给一个修复的包测试。

测试方法:

Ram内存填充:memtester 3000M 1

Rom内存填充:

adb root adb shell df 查看/mnt/user/0/emulated剩余 adb shell

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

进击的测试开发工程师2.0 文章被收录于专栏

本专栏专注于对复杂项目对测试用例编写思路、接口自动化测试用例以及自定义接口测试框架及工具对实现。

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务