ADB-内存-流量监控脚本(Python实现)

上一篇 / 下一篇  2016-06-09 13:54:24

   转入软件测试行业一年了,这一年基本都在做移动功能测试,只是抽空学了点python,今年想要学习脚本语言并使用起来。这是自己闲来无事写的第一个可以使用的脚本。    通过ADB获取内存及流量的信息,然后写入excel表:   上代码:(真心觉得很low)
1、获取两个app的PSS内存值并写入excel
#coding=utf-8
importtime#use to control time
importsubprocess
importxlwt

package_name_mysdk ='com.test.wo'
package_name_weixin ='com.tencent.mm'

defgetPSS(package_name):
p1 = subprocess.Popen('adb shell dumpsys meminfo '+ package_name +' | grep "TOTAL"',
stdout=subprocess.PIPE,stderr=subprocess.PIPE)#adb获取信息
text = p1.stdout.read()
listoftext = text.split()
print'PSS='+ listoftext[1]
returnint(listoftext[1])

time_start =0
time_end =0

book = xlwt.Workbook(encoding='utf-8',style_compression=0)#创建新的工作簿
sheet_sdk = book.add_sheet('PSS-SDK',cell_overwrite_ok=True)#创建新的sheet,并命名为PSS
sheet_wx = book.add_sheet('PSS-WX',cell_overwrite_ok=True)#创建新的sheet,并命名为PSS
sheet_sdk.write(0,0,"time")
sheet_sdk.write(0,1,"PSS")
sheet_wx.write(0,0,"time")
sheet_wx.write(0,1,"PSS")

row =1
col =0

whiletime_end <=3600:
timeNow = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))#获取当前时间
printtimeNow
sheet_sdk.write(row,col,timeNow)
sheet_wx.write(row,col,timeNow)
try:
pss_sdk = getPSS(package_name_mysdk)
sheet_sdk.write(row,col +1,pss_sdk)
pss_wx = getPSS(package_name_weixin)
sheet_wx.write(row,col +1,pss_wx)
except:
printtime.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) +" process has been shoutdown!"


row +=1
time.sleep(10)
book.save(r"d:\pss.xls")

2、获取两个app的上传下载流量并写入excel

#coding=utf-8
importtime#use to control time
importsubprocess
importxlwt

defgetUid(package_name):#获取UID
p1 = subprocess.Popen('adb shell dumpsys package '+package_name+' | grep "userId"',
stdout=subprocess.PIPE,stderr=subprocess.PIPE)#adb获取信息
uidLongString = p1.stdout.read()
uidLongList = uidLongString.split()
uidMap = uidLongList[0]
uid =str(uidMap.split("=")[1])
returnuid

defgetRev(package_name):#获取某个APPTCP下载流量
p1 = subprocess.Popen('adb shell cd proc && cd uid_stat && cd '+ getUid(package_name) +' && cat tcp_rcv',
stdout=subprocess.PIPE,stderr=subprocess.PIPE)#adb获取信息uid
flo_rec =int(p1.stdout.read())
returnflo_rec

defgetSnd(package_name):#获取某个APPTCP上传流量
p1 = subprocess.Popen('adb shell cd proc && cd uid_stat && cd '+ getUid(package_name) +' && cat tcp_snd',
stdout=subprocess.PIPE,stderr=subprocess.PIPE)#adb获取信息
flo_snd =int(p1.stdout.read())
returnflo_snd

time_start =0
time_end =0
col =0
row =0

book_sdk = xlwt.Workbook(encoding='utf-8',style_compression=0)#创建新的工作簿sdk
book_wx = xlwt.Workbook(encoding='utf-8',style_compression=0)#创建新的工作簿wx

sheet_load_sdk = book_sdk.add_sheet('LOAD',cell_overwrite_ok=True)#创建新的sheet,并命名为LOAD
sheet_upload_sdk = book_sdk.add_sheet('UPLOAD',cell_overwrite_ok=True)

sheet_load_wx = book_wx.add_sheet('LOAD',cell_overwrite_ok=True)#创建新的sheet,并命名为LOAD
sheet_upload_wx = book_wx.add_sheet('UPLOAD',cell_overwrite_ok=True)

sheet_load_sdk.write(row,col,"time")
sheet_load_sdk.write(row,col +1,"load")

sheet_load_wx.write(row,col,"time")
sheet_load_wx.write(row,col +1,"load")

sheet_upload_sdk.write(row,col,"time")
sheet_upload_sdk.write(row,col +1,"upload")

sheet_upload_wx.write(row,col,"time")
sheet_upload_wx.write(row,col +1,"upload")

package_name_sdk ="com.test.wo"
package_name_wx ="com.tencent.mm"
try:
uid_sdk = getUid(package_name_sdk)
printtime.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) +' uid = '+str(uid_sdk)
except:
print'获取sdk-uid失败'

try:
uid_wx = getUid(package_name_wx)
printtime.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) +' uid = '+str(uid_wx)
except:
print'获取wx-uid失败'
row =1
col =0

whiletime_end <=60:

load_sdk = getRev(package_name_sdk)
upload_sdk = getSnd(package_name_sdk)

load_wx = getRev(package_name_wx)
upload_wx = getSnd(package_name_wx)

timeNow = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))#获取当前时间

sheet_load_sdk.write(row,col,timeNow)#写入时间
sheet_load_sdk.write(row,col +1,load_sdk)#写入下载流量
sheet_upload_sdk.write(row,col,timeNow)#写入时间
sheet_upload_sdk.write(row,col +1,upload_sdk)#写入下载流量

sheet_load_wx.write(row,col,timeNow)#写入时间
sheet_load_wx.write(row,col +1,load_wx)#写入下载流量
sheet_upload_wx.write(row,col,timeNow)#写入时间
sheet_upload_wx.write(row,col +1,upload_wx)#写入下载流量

printstr(timeNow) +' load='+str(load_sdk) +' upload='+str(upload_sdk)
printstr(timeNow) +' load='+str(load_wx) +' upload='+str(upload_wx)
row = row +1

time.sleep(10)
time_end +=10
book_sdk.save(r"d:\sdkFolw.xls")
book_wx.save(r"d:\wxFlow.xls")


TAG: Android 性能监控

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-22  
 123456
78910111213
14151617181920
21222324252627
282930    

我的存档

数据统计

  • 访问量: 6768
  • 日志数: 2
  • 建立时间: 2016-06-09
  • 更新时间: 2016-06-09

RSS订阅

Open Toolbar