首次启动耗时:

即第一次安装(清除数据也可以),打开软件,直到进入到首页activity页面,并计算耗时。

示例代码:

import os
import time # 测试首次启动时间
# 创建App进程, 加载相关资源, 启动Main Thread, 初始化首屏Activity
def startUpTime(pg_name, pga_name):
"""
:param device: 设备id
:param pg_name: 包名
:param pga_name: activity名称
"""
wait_time = 5
try:
with open('F:/report/firstStartUp.txt', 'wb+') as file:
su_time = []
for i in range(30):
os.popen("adb shell pm clear {}".format(pg_name)) # 清除app缓存
time.sleep(wait_time)
# 启动activity
start = os.popen("adb shell am start -W {}".format(pga_name))
time.sleep(wait_time)
data = start.readlines()
for line in data:
if "TotalTime:" in line:
line = line.strip()
print("第{}次TotalTime为: {}ms".format(i+1,line[11:]))
if int(line[11:]) == 0:
break
su_time.append(int(line[11:]))
file.write(('第{}次\n'.format(i + 1)).encode())
line += '\n'
line = line.encode()
file.write(line)
return su_time
except os.error as error:
print(error) def getDev():
"""
:return: 获得设备id
"""
try:
devices_info = os.popen('adb devices')
data = devices_info.readlines()
if len(data) != 0 and data[1].find('device'):
s = data[1][:-7]
return s
return 0
except Exception as error:
print(error) def main_cold():
# 取测试机-s
s = getDev()
pn = 'sg.partying.ghost.android'
an = 'sg.partying.ghost.android/com.bb.infinity.InfiActivity'
print('设备:{},APP包名:{}, activity:{}\n首次启动测试开始...'.format(s,pn, an))
time_list = startUpTime(pn, an)
total_time = 0
for i in time_list:
total_time += i
avg_time = total_time / len(time_list)
print('首次启动平均耗时: {}ms'.format(avg_time))
with open('F:/report/firstStartUp.txt', 'ab+')as f:
f.write(('\n设备{}平均首次启动耗时:{}ms'.format(s,avg_time)).encode()) if __name__ == '__main__':
main_cold()

APP性能测试——首次启动耗时测试的更多相关文章

  1. APP性能测试工具GT的使用总结:app内存测试

    APP性能测试工具GT的使用总结:app内存测试 GT(随身调)是APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE, Integrated Debug Environment). ...

  2. 高德APP启动耗时剖析与优化实践(iOS篇)

    前言最近高德地图APP完成了一次启动优化专项,超预期将双端启动的耗时都降低了65%以上,iOS在iPhone7上速度达到了400毫秒以内.就像产品们用后说的,快到不习惯.算一下每天为用户省下的时间,还 ...

  3. 探究 | App Startup真的能减少启动耗时吗

    前言 之前我们说了启动优化的一些常用方法,但是有的小伙伴就很不屑了: "这些方法很久之前就知道了,不知道说点新东西?比如App Startup?能对启动优化有帮助吗?" ok,既然 ...

  4. Appium 之处理首次启动手机App时的系统权限弹框

    一般首次启动一个手机App时都会有系统权限弹框,如下图所示: 权限弹窗上面的按钮都是固定的,只需要定位到“ALLOW”按钮,点击就可以了,代码如下: 这里主要用selenium里面的显示等待模块(We ...

  5. Android app启动耗时分析

    前言 app启动耗时过长的话,无论你的app里面的内容多么丰富有趣,作为一个用户,首先是没有耐心去等待的,如果我是一个用户,我会这样想:这是什么垃圾公司出的什么烂app,再等2s不进来就卸载,黑人问号 ...

  6. iOS开发-测量APP启动耗时

    冷启动 冷启动就是App被kill掉以后一切从头开始启动的过程. 热启动 当用户按下home键的时候,iOS的App并不会马上被kill掉,还会继续存活若干时间.理想情况下,用户点击App的图标再次回 ...

  7. 【转】Emmagee app性能测试工具使用教程

    简介 Emmagee是网易杭州研究院QA团队开发的一个简单易上手的Android性能监测小工具,主要用于监控单个App的CPU,内存,流量,启动耗时,电量,电流等性能状态的变化,且用户可自定义配置监控 ...

  8. Android app性能测试小结(7个性能指标)

    1.性能测试的几个指标:       2.性能测试环境准备: 3.启动时间 3.1,监控值的获取方法 启动分为冷启动和热启动,冷启动:应用程序首次启动,进程首次创建并加载资源的过程:热启动:应用程序启 ...

  9. Android App性能测试之一:简介

    1.性能测试 启动时间,主要测试App在启动过程中的耗时情况 CPU, 主要测试App在使用过程中的CPU占比率 流量,主要测试App在使用过程中对流量的消耗情况 电量,主要测试App在使用过程中对电 ...

  10. Android APP性能测试笔记(一)

    Android APP性能测试笔记(一) (1)工具使用   Android Studio  GT, root的真机 (2)记录apk大小(对比竞品)   使用Android Studio导入需要测试 ...

随机推荐

  1. (原创)odoo中字段默认值的获取顺序

    odoo中某个字段的默认值的取值顺序 1.搜索当前记录集(recordset)中的context中是否存在"default_字段名"的键,如果存在则取值 2.搜索模型(ir.def ...

  2. php textarea根据回车转换成数组

    $val是textarea文本框的内容 假如是:张三/32岁/男 李四/28岁/男 $arr=explode("\n",$val); $arr2 = array(); foreac ...

  3. linux下influx客户端使用

    influxdb-client 通过 sudo apt-cache search influx 找到了一个客户端工具 influxdb-client - command line interface ...

  4. 在platformio自动上传esp8266固件

    不想每次上传固件的时候手工点按钮,修改这个文件:C:\Users\你的登录名.platformio\platforms\espressif8266\builder\main.py 在319行UPLOA ...

  5. stata基础(十五)——线性回归的基本假定、估计回归系数、拟合系数

    一.回归:回归是研究变量间相互关系的方法 1.条件分布:因变量在自变量取不同值时的分布 如果因变量在自变量取不同值时的条件分布都相同,那么自变量对因变量没有影响,否则就是有影响. 比较因变量在自变量取 ...

  6. apt-get update 报错 Repository ' InRelease' changed its 'Suite' value from 'stable' to 'oldstable'

    问题截图: 解决方案: apt-get update --allow-releaseinfo-change

  7. map转listmap

    package com;import java.util.*;import java.util.stream.Collectors;public class LambadaTest { public ...

  8. 使用Swagger和OpenAPI 3规范定义API接口并集成到SpringBoot

    1. OpenAPI 3 规范介绍及属性定义 参考官方定义:https://swagger.io/specification/ 2. 使用OpenAPI 3规范定义API接口 官方样例参考:https ...

  9. vuex状态管理器

    vuex核心概念 // vuex中一共有五个状态 State Getter Mutation Action Module import Vue from 'vue' import Vuex from ...

  10. DIV CSS遮罩层(弹窗窗口)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...