app性能测试-启动时间监控

环境搭建没什么说的,我用的是python3+pycharm,jdk和sdk的android环境,总体就是用python写一个脚本来对app执行指定的冷热启动,并且记录下启动时间的数据,并对数据进行一个汇总分析

所以在思路上,分为启动app脚本和操作app脚本
启动脚本分为启动app,关闭app,获取启动耗时命令,也就是三个方法
操作脚本分为单词操作,多次操作和写入csv操作


# -*- coding: utf-8 -*-
# @Time    : 2020/4/6 12:11
# @Author  : Willam.zja
# @FileName: time_monitor.py
# @Software: PyCharm
# @Blog    :https://blog.csdn.net/enemy_sprites
import os
import sys
sys.path.append(os.getcwd())
import time
import csv
#app类--启动app方法
class App(object):
    def __init__(self):
        self.content = ''
        self.startTime = 0

    def launchApp(self):
        """
        启动app方法
        :return:
        """
        cmd = 'adb shell am start -W -n com.android.browser/.BrowserActivity'
        self.content = os.popen(cmd).readlines()
        return self.content

    def stopApp(self,flag=True):
        """
        停止app
        :return:
        """
        if flag == True:
            cmd = 'adb shell am force-stop com.android.browser'
        else:
            cmd = 'adb shell input keyevent 3'
        os.system(cmd)

    def getLaunchedTime(self):
        """
        获取启动时间
        :return:
        """
        for i in self.content:
            if 'ThisTime' in i:
                self.startTime = i.split(':')[1].strip()
                break
        return self.startTime

class Controller(object):
    def __init__(self,count=1,flag=True):
        self.flag = flag
        self.counter = count
        self.app = App()
        self.all_data = [('timestamp','elapsedtime')]

    #单次测试过程
    def testProcess(self):
        self.app.launchApp()
        time.sleep(3)
        elapsed_time = self.app.getLaunchedTime()
        self.app.stopApp(flag=self.flag)
        time.sleep(2)
        current_time = self.getCurrentTime()
        self.all_data.append((current_time,elapsed_time))
        print(self.all_data)

    #多次测试过程
    def run(self):
        x = self.counter+1
        while self.counter > 0:
            print('第{}次执行'.format(x - self.counter))
            self.testProcess()
            self.counter -= 1


    #获取格式化的时间戳
    def getCurrentTime(self):
        current_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
        return current_time

    def saveDataToCsv(self):
        if self.flag == True:
            fn = 'coldStartTime.csv'
        else:
            fn = 'hotStartTime.csv'
        with open(fn,'w') as f:
            writer = csv.writer(f)
            writer.writerows(self.all_data)


if __name__ == '__main__':

    controller = Controller(count=10,flag=False)
    controller.run()
    controller.saveDataToCsv()

在这里插入图片描述
冷启动和热启动的响应时间就会记录在csv中,去除第一次数据,会后边的数据平均值分析,绘制图表即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值