app性能-流量监控

流量对于用户来说,是一种资源,所以我们必须保证我们的app在正常情况下没有异常流量的出现,如何对流量进行监控呢?

1、获取进程ID命令

adb shell ps | findstr packagename

2、获取进程ID的流量

adb shell 	cat/proc/pid/net/dev

在这里插入图片描述
我们可以看到流量数据,主要注意receive和transmit
receive指的是当前app接收的数据流量
transmit指的是app发送请求的数据流量
我们的流量就应该是他们两者之和
Io代表本地流量
eth1代表网卡流量输出

我们首先获取一次,之后进行对app的一系列操作,再次获取,通过流量差值计算出本次测试获取到的流量消耗

代码:

# -*- coding: utf-8 -*-
# @Time    : 2020/4/7 16:54
# @Author  : Willam.zja
# @FileName: traffic.py
# @Software: PyCharm
# @Blog    :https://blog.csdn.net/enemy_sprites
import os
import sys
sys.path.append(os.getcwd())
from common.libs.commandLines import dosLine
from common.libs.dataHelper import getCurrentTime
import time
from common.libs.saveToCsv import saveToCsv


class Controller(object):
    def __init__(self,count):
        self.counter = count
        self.all_data = [('timestamp','traffic')]

    def testprocess(self):
        receive = 0
        transmit = 0
        receive2 = 0
        transmit2 = 0
        #获取进程ID
        result = dosLine.execute_result('adb shell ps|findstr com.android.browser')
        pid = result[0].split(' ')[4].strip()
        #获取进程使用流量
        traffic = dosLine.execute_result('adb shell cat /proc/{}/net/dev'.format(pid))
        for i in traffic:
            if 'eth0' in i:
                i = '#'.join(i.split())
                receive = i.split('#')[1]
                transmit = i.split('#')[9]
                # print(receive,transmit)
            elif 'eth1' in i:
                i = '#'.join(i.split())
                receive2 = i.split('#')[1]
                transmit2 = i.split('#')[9]
                # print(receive2,transmit2)
        #计算流量和
        all_traffic = int(receive) + int(transmit) + int(receive2) + int(transmit2)
        #将字节转换为KB
        all_traffic = all_traffic/1024
        #存入数组
        self.all_data.append((getCurrentTime(),all_traffic))

    def run(self):
        x= self.counter + 1
        while self.counter > 0:
            print('第{}次执行'.format(x - self.counter))
            print(self.all_data)
            self.testprocess()
            self.counter -= 1
            time.sleep(5)

    def run_main(self):
        self.run()
        fn = self.all_data[0][1]
        saveToCsv(fn,self.all_data)

if __name__ == '__main__':
    cpuController = Controller(11)
    cpuController.run_main()

在这里插入图片描述
数据生成后进行分析:
从数据可见,我们第一次获取到流量是8191KB,经过多次对app的操作,最后一次获取到的流量消耗是20300,那么我们本次测试流量消耗为20300-8291也就是12109KB,那么这个值怎么用,如何分析呢?主要是和竞品或者是版本之间对比,比如我测试的上一个版本是v1.2 执行固定操作消耗流量5M, 本次测试是v1.3,同样的操作消耗掉12M,那么就要分析和开发确认,为什么这个版本流量消耗会翻倍,在就是竞品测试,我们产品做一个搜索操作流程耗费20M,人家只耗费10M,这就是我们测试流量的意义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值