我们在做app测试的过程中,都会对app内存,cpu这些做一个简单的测试,今天简单的写下如何通过python监控app这些资源变化

实现原理

1、通过adb命令查看app资源内存

2、通过python脚本调用adb命令

3、持续监控写入txt文件或者csv文件中

监控资源过程

我们以淘宝app为例完成本次监控

adb监控内存命令

# adb监控内存变化
adb shell dumpsys meminfo com.taobao.taobao

进行数据分析

通过观察,我们只需要提取出来结果的 Native Heap 和 Dalvik Heap,还有内存总和 TOTAL,接下来我们通过python把想要的数据提取出来

# coding:utf-8
import os
# 获取淘宝内存命令
adb = 'adb shell dumpsys meminfo com.taobao.taobao'
# 执行adb命令
result = os.popen(adb).read()
# 以','进行分割
temp = ','.join(result.split())
# 获取native值
native = temp.split('Native,Heap')[1].split(',')[1]
# 获取dalvik值
dalvik = temp.split('Dalvik,Heap')[1].split(',')[1]
# 获取total值
total = temp.split('TOTAL')[1].split(',')[1]

这样的话就把我们想要的数据提取出来了,可以中间加个等待时间,每几秒提取一次数据,接下来我们呢进行对这些数据写入csv文件或者txt文件中

首先我们创建一个列表,把每次提取出来的数据放入到列表中,写入csv文件中

# coding:utf-8
import os
import time
import csv
alldata = [("native", "dalvik","TOTAL")]
# 设置循环次数
count = 10
while count > 0:
lines = os.popen("adb shell dumpsys meminfo com.taobao.taobao") # adb 查看app内存
result = lines.read()
temp = ','.join(result.split())
native_heap = temp.split('Native,Heap')[1].split(',')[1]
print ("native_heap:" + str(native_heap))
dalvik_heap = temp.split('Dalvik,Heap')[1].split(',')[1]
print ("dalvik_heap:" + str(dalvik_heap))
total = temp.split('TOTAL')[1].split(',')[1]
print ("total:" + str(total))
alldata.append([native_heap, dalvik_heap,total])
count -= 1
print('还剩余:%s次'%count)
time.sleep(1) # 等待时间
csvfile = open('test02.csv', 'w',encoding='utf8',newline='')
writer = csv.writer(csvfile)
writer.writerows(alldata)
csvfile.close()

当我们在跑自动化的过程中,我们再次执行这个监控内存脚本,就可以完成对app内存资源的监控了;

剩下的CPU,耗电量大家试着完成下,要记住耗电量不能通过USB的方式连接哈,要不然就会一直处于充电状态

最新文章

  1. linux下配置安装python3
  2. html/css小练习2
  3. ASP.NET MVC学习之Ajax(完结)
  4. Java常用排序算法+程序员必须掌握的8大排序算法
  5. SQL VIEW 使用语法
  6. linux环境变量(转)
  7. iOS开发——语法OC篇&BOOL / bool / Boolean / NSCFBoolean
  8. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.5
  9. Oracle instr用法
  10. 前端小课堂 js:函数的创建方式及区别
  11. memcache的原理和命中率的总结
  12. mysql GTID
  13. sqlite基本用法
  14. CSS之边框
  15. JFace TableViewer性能改善 -- 使用VirtualTable
  16. 20155330 《网络对抗》 Exp5 MSF基础应用
  17. iOS-Foundation框架—结构体(转载)
  18. jquery 实现iframe 自适应高度
  19. 算法笔记_025:字符串的全排列(Java)
  20. 黄聪:定制化WordPress后台自定义仪表盘

热门文章

  1. 教你两招用纯CSS写Tab切换
  2. 【转载】C++编译过程
  3. 9. Vue - vue-cli
  4. vue踩坑--细节决定成败
  5. 201871010123-吴丽丽《面向对象程序设计(Java)》第一周学习总结
  6. shell登陆加载的文件, 快捷命令, tee管道, nohup和&
  7. 基于SincNet的原始波形说话人识别
  8. C#开发BIMFACE系列28 服务端API之获取模型数据13:获取三维视点或二维视图列表
  9. 图解隐马尔可夫模型(HMM)
  10. redis设置、查看和校验密码