一、冷热启动的概念
冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。
热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个启动方式就是热启动。
二、****核心原理
APP启动时长,可以通过adb shell am start -W命令的TotalTime得到。
adb shell am start -W -n 包名/Activity名
ThisTime 该activity启动耗时
TotalTime 应用自身启动耗时=ThisTime+应用application等资源启动时间
WaitTime 系统启动应用耗时=TotalTime+系统资源启动时间
三、脚本化
import time
import os
def StartApp():
cmd="adb shell am start -W -n com.weitian.oa/.IndexActivity"
result=os.popen(cmd)
return result
def StopApp(mode):
if mode == 'hot':
cmd = "adb shell input keyevent 3"
result=os.popen(cmd)
if mode=='cold':
cmd="adb shell am force-stop com.weitian.oa"
os.popen(cmd)
def GetStartTime(result,count):
for one in result.read().splitlines():
if'TotalTime' in one:
one=one.split(":")[1]
one=one.strip()
one=int(one)
print(f"第{count}次启动{one}毫秒")
return one
if name == "main":
mod=input("冷热启动测试,请输入模式:hot 热启动测试,cold 冷启动测试")
count=int(input("请输入测试次数"))
if mod=='hot':
input("热启动测试,请确保app已经打开并退到后台\n回车继续...")
if mod=='cold':
input("冷启动测试,请确保app没有打开\n回车继续...")
time_list = []
for i in range(count):
result=StartApp()
time_list.append(GetStartTime(result, i + 1))
time.sleep(3)
StopApp(mod)
time.sleep(3)
else:
print(f"平均启动时间{sum(time_list)/count}毫秒")
福利
版权归原作者 软件测试小小白 所有, 如有侵权,请联系我们删除。