软件测试技术之APP专项测试方法汇总

 APP专项测试

  系统:安卓(Android)、苹果(IOS)。

  1、应用性能测试(CPU 内存 电量 流量 温度)

  1)CPU:空闲 中等消耗 高消耗,检测cpu的运行情况。

  adb shell

  dumpsys cpuinfo |grep packagename

  -t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量。

  top -m 5 -s cpu

  2)内存

  adb shell

  dumpsys meminfo packagename | pid

  最大堆内存大小

  getprop |grep dalvik.vm.heapgrowthlimit

  AndroidManifest.xml 

  android:largeHeap="true"

  android:debuggable="true"

  procrank命令

  adb shell

  procrank

  3)电量

  方式1:使用手机上自带电量监测工具 手机助手 gsam battery monitor gt工具。

  方式2:使用硬件将电量表串在电源和手机之间,需取出下手机电池。

  方式3:需要在安卓5.0以上系统。

  清理干扰数据

  adb shell dumpsys batterystats --enable full-wake-history

  adb shell dumpsys batterystats --reset

  初始化电量统计数据

  获取adb报告数据:

  adb shell bugreport >bugreport01.txt

  或者放到目录:sdcard0为sd卡的目录名称 /storage/sdcard0/Download/bs

  获取整个设备的电量数据:

  adb shell dumpsys batterystats >batterystats01.txt

  获取指定APP应用的电量数据:

  adb shell dumpsys batterystats com.android.browser >batterystats02.txt

  historian.py文件与电量数据文件需在同一目录,使用python工具转换成html文档。

  python historian.py batterystats01.txt >batterystats01.html

  python historian.py batterystats02.txt >batterystats02.html

  python historian.py -a bugreport01.txt > br01.html

  4)流量

  静默:不操作APP时的流量。

  动态操作:操作APP时的流量。

  与竞品分析、版本对比。

  观察wlan0的流量,vivo手机可先打开飞行模型在关闭分型模式,则流量被情况了。

  方式1:

  adb shell

  cat /proc/进程名/status |grep Uid

  方式2:

  cat /proc/uid_stat/uid/tcp_snd

  cat /proc/uid_stat/uid/tcp_rcv

  方式3:

  cat /proc/pid/net/dev

  方式4:

  tcpdump+wireshark

  adb push tcpdump包 /data/local/tcpdump

  adb shell chmod 6755 /data/local/tcpdump

  cd /data/local

  tcpdump -s 0 -w /sdcard/Download/tcpdump.pcap -v

  adb pull /sdcard/Download/tcpdump.pcap d:\

  用wireshark工具打开pcap文件,并进行分析

  方式5:

  TrafficStats类

  方法6:适合所有机型

  adb shell cat /proc/net/xt_qtaguid/stats | grep (uid#)

  减少流量的方式:(关注流量、电量、用户等待3个大方面)。

  1)优化网络连接

  减少Radio的活跃时间,即减少网络数据获取的频次。

  减少获取数据包的大小。

  2)压缩数据

  进行数据的压缩,对request和response采用Gzip压缩。

  3)使用高效率的协议传输和处理数据

  建议考虑采用protocl Buffer代替JSON。

  4)图片大小优化

  在需要获取图片的时候,告知服务器需要的图片高度,以便服务器给出合适的图片。

  app把图片数据传递给app端时,最好使用JPG图片,把图片压缩成app端需要的尺寸后,再传给app端。

  5)使用缓存

  有网络是根据设置的Cache Contorl时间来判断是使用缓存,还是做网络请求。

  没有网络时直接使用缓存。

  1.请求客服端配置缓存目录OkHttp缓存目录。

  2.Request中需带有Cache-Control的header,以便请求时是否使用缓存。

  3.Response中需带有Cache-Control的header,以告知客服端是否使用缓存,及缓存失效的时间。

  注意:在加入interceptor时,使用的是addNetworkInterceptor方法,而非 addInterceptor方法。

  6)打包网络请求

  打包网络请求:1个界面需要请求多个接口,或是网络良好下,处于Wifi时我们想获取更多数据。

  界面上处理后的结果先呈现给用户,而不不自动加载图片,使用JobScheduler在网络较好的情况下进行打包请求。

  7)监听设备状态

  休眠状态、充电状态、网络状态。

  结合JobScheduler来根据实际情况做网络请求,连接Wifi时下载缓存到本地,新闻类的app可以在充电。

  8)利用增量升级实现app的更新

  9)减少app的大小,可有效减少流量消耗

  10)文件上传下载处理

  从服务器上下载或是上传文件到服务器时,应支持断点续传功能。

  2、APP启动、加载时间(冷启动 热启动)

  冷启动:首次安装应用启动后的测试。

  热启动:已经安装应用,并使用多次后,启用应用的测试。

  方式1:

  高速相机 3秒表 云测平台。

  方式2:

  adb shell

  am start -W -n 包名/Activity名 关注ThisTime项,本次APP启用所花费的时间,单位毫秒

  am start -W -n com.android.browser/.BrowserActivity

  logcat >d:\time.txt

  findstr "Displayed" d:\time.txt >d:\time1.txt

  findstr "包名" d:\time1.txt >d:\result.txt

  3、页面渲染(gpu fps)

  屏幕上的像素在同一帧时间内被绘制了多次。

  蓝1X、淡绿2X、淡红3X、深红4X。

  开始GPU:开发者选项->显示/GPU过度绘制。

  4、手机卡顿(TraceView)

  方法1:DDMS工具

  采集程序的方法的执行耗时、调用关系、调用次数、资源占用情况。

  选择某个被测应用,点击Start Method Profiling,红点变成黑点,处于信息采集状态;

  在TraceView界面中,分为时间线界面、分析界面;

  消耗CPU的情况:关注Cpu Time/Call列中,消耗时间最大的函数。

  调用次数的情况:关注Call+Recur Calls/Total,调用次数最大、CPU耗时最大的函数。

  方法2:埋点

  在代码中埋点,之后操作应用,生成trace文件,使用monitor工具进行分析。

  在AndroidManifest.xml文件配置sd卡读写权限。

  <user-permission android:name="android.permission.WRITE_EXTERAL_STORAGE"/>

  <user-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

  埋点开始:

  onCreate Debug.StartMethodTracing("/storage/sdcard/xxx.trace");

  埋点结束:

  onStop或onPause或onDestory Debug.StopMethodTracing();

  5、内存泄漏 抖动(根据场景收集应用消耗手机内存、需收集3次的内存数据)

  测试的情况:虚拟机、联机

  虚拟机测试:

  android list avd

  emulator @avdname

  ddms

  联机测试:

  · 在手机中安装Android驱动

  · 手机设置成USB调试模式

  · 应用配置文件设置

  AndroidManifest.xml android:debuggable="true"

  在ddms中,点击某个进程,点击show heap updates,再点击GC按钮,多次操作后观察 data object中的Total Size大小变化趋势,如果发现内存泄漏,则需dump文件。

  Dump HPROF file按钮进行dump操作。

  利用hprof-conv 转换成hprof文件。再导入到mat工具中进行分析。

  6、弱网测试

  Network Emulator Toolkit工具。

  关注:卡死 崩溃 无响应 闪退 业务交互数据的正确性。

  7、代码静态扫描

  使用lint工具(ADT工具自带,分析出代码结构上的问题,可自定义检查的规则)。

  lint --list

  lint --show

  findbugs 可发现java代码层面的问题。

最后给想转行测试行业或者已经从事测试行业想提升的小伙伴安利一个福利:

上面是我整理的一些软件测试学习资料,对于学软件测试的小伙伴来说应该会很有帮助,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这份资料也已经帮助了很多的软件测试的学习者,希望也能帮助到你。需要的小伙伴可以关注我微信公众号:程序员二黑,免费获取!

如果文章对你有帮助的,请帮我点赞收藏,这样我才有动力继续更新下去!也欢迎加入我的软件测试交流群:785128166,里面不定时分享测试资源,还有同行大佬一起交流学习!

精彩推荐

在职阿里6年,一个29岁女软件测试工程师的心声

拒绝B站邀约,从月薪3k到年薪47W,我的经验值得每一个测试人借鉴

公司新来的阿里p8,看了我做的APP和接口测试,甩给了我这份文档

 

Guess you like

Origin blog.csdn.net/weixin_54928936/article/details/120686836