android 获取时间戳_App专项测试之启动时间冷启动时间脚本


启动分为冷启动和热启动:

         冷启动:首次创建线程加载资源,打开的app

        热启动:按了home键,退到后台,再打开回前台。

要了解这个脚本前需要先知道三个命令:

1、adb shell am start -W -n package/activity  启动app

2、adb shell am force-stop 包名            关闭app

3、adb logcat | grep START        获取包名

adb shell am start -W -n package/activity命令会返回个耗时时间,如下

(

Starting: ntent { cmp=com.estrongs.android.pop/.view.FileExplorerActivity }

Status: ok

Activity: com.estrongs.android.pop/.view.FileExplorerActivity

ThisTime: 596

TotalTime: 596

Complete)

    cmp:是包名+Activity 

    thistime是耗时。

下面说下这个脚本:

需要创建俩个类,一个是APP类,一个是控制类,代码如下,可直接使用哦

import osimport timeimport csv# App类class App():    def __init__(self, packagename):        self.paceageName = packagename        self.startTime = 0        self.content = self.launchApp()def launchApp(self):        # 启动App的方法        cmd = 'adb shell am start -W -n %s' % self.paceageNameprint(cmd)self.content = os.popen(cmd)def StopApp(self):        # 暂停App的方法        paceageName = (self.paceageName).split('/')[0]
cmd = 'adb shell am force-stop %s' % paceageNameprint('cmd------>', cmd)
os.popen(cmd)def GetLaunchedTime(self): # 获取启动时间的方法 for line in self.content.readlines(): if "ThisTime" in line: self.startTime = line.split(":")[1]break return self.startTime# 控制类class Controller(): # run # CollectAllData # SavaDataToCsv def __init__(self, count): self.app = App('com.estrongs.android.pop/.view.FileExplorerActivity')self.counter = count self.alldata = [('timestamp', 'elapsedtime')]# 单次测试过程 def testprocess(self): self.app.launchApp()
elpasedtime = self.app.GetLaunchedTime() # 耗时 time.sleep(3)self.app.StopApp()
currenttime = self.getCurrentTime()
time.sleep(3)self.alldata.append((currenttime, elpasedtime))# 多次执行测试过程 def run(self): while self.counter > 0: self.testprocess()
time.sleep(3)self.counter -= 1 def getCurrentTime(self): # 获取当前的时间戳 currentTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())return currentTimedef SavaDataToCSV(self): with open('startTime.csv', 'w+') as fp: write = csv.writer(fp)
write.writerows(self.alldata)if __name__ == '__main__': controlle = Controller(10)
controlle.run()
controlle.SavaDataToCSV()

执行完成后,会获得这么个表格:

9b5f4654d072776ff5ebc84056481656.png

一般来说,会去掉第一行的值,然后把后9行求个平均值,然后做成图表来做分析。  

1bbd535c26b9a169dba561b81408a99e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值