• APP冷热启动专项测试


    一、冷热启动的概念

    冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。

    热启动:当启动应用时,后台已有该应用的进程(例:按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}毫秒")


     福利

     

  • 相关阅读:
    批量修改/插入数据库的时候究竟该怎么选择?
    Java常用容器
    计算机毕业设计Java教师业绩考核和职称评审系统(源码+系统+mysql数据库+lw文档)
    TimeGPT:时间序列预测的第一个基础模型
    vue3 的系统学习(依据菜鸟教程)
    鞋帽箱包经营小程序商城的作用是什么
    《数据库原理与应用》第一版 马春梅……编著 期末复习笔记
    ajax尚硅谷笔记——跨域请求、axios发送ajax请求、jquery发送ajax请求
    CERLAB无人机自主框架: 2-动态目标检测与跟踪
    正则表达式——^的两种用法
  • 原文地址:https://blog.csdn.net/fx20211108/article/details/125492454