启动APP并收集消耗时间的命令:

adb shell am  start -W -n package/activity

手动关闭谷歌浏览器APP(也可以使用命令关闭adb shell am force-stop 包名),使用启动命令来自动启动谷歌APP,见下图运行结果,可以看到有启动谷歌浏览器APP用时。

停止APP应用,可以使用命令实现

停止APP应用命令:adb shell am force-stop package

测试APP启动性能,一次测试是不够的,需要多次测试数据并进行分析做到充分的性能测试才有说服力。但是手动测试多次采集数据太麻烦了,所以我们可以使用自动化脚本帮我们测试和手机多次测试结果的数据。

自动化代码实现包含备注信息,如下(代码可以机器运行通过):

获取app启动时间自动化代码实现如下:
#encoding:utf-8
import os
import time
import csv
#定义APP类,用于启动APP,获取启动APP时间和关闭APP
class App(object):
def __init__(self):
self.content=''
self.startTime="0"
#启动 APPcom.android.chrome/com.google.android.apps.chrome.Main
def LunchApp(self):
cmd='adb shell am start -W -n com.android.chrome/com.google.android.apps.chrome.Main'
self.content=os.popen(cmd)
#停止APP,用于冷启动的APP
def StopApp(self):
cmd='adb shell am force-stop com.android.chrome'
os.popen(cmd)
#停止APP,用于热启动的APP
# def StopApp(self):
# cmd='adb shell input keyevent 3'#触发手机上的back键,实现退出
# os.popen(cmd) #执行cmd

#获取启动时间
def GetLunchTime(self):
for line in self.content.readlines():
if "WaitTime" in line:
self.startTime=line.split(":")[1]
break
return self.startTime

#定义运行控制类
class Controller(object):
def __init__(self,counter):
self.app=App()
self.counter=counter
self.allData=[("TimeStamp","elapsTime")]
#单次测试过程
def TestProcess(self):
#调用启动APP的方法
self.app.LunchApp()
time.sleep(8)
#调用获取启动用时方法
elapsTime=self.app.GetLunchTime()
#调用停止APP方法(此处为冷启动),如果测试热启动需要再定义热启动的方法
self.app.StopApp()
#time.sleep(5)
#调用获取当前时间戳
currentTime=self.GetcurrentTime()
#获取到当前时间戳和启动app时间追加存储到allData数组中
self.allData.append((currentTime,elapsTime))
#定义获取当前的时间戳方法
def GetcurrentTime(self):
currentTime=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
return currentTime
def run(self):
while self.counter > 0:
self.TestProcess()
self.counter=self.counter-1

#数据的存储,将allData数据写入startTime.csv文件中
def SaveData(self):
csvfile=file('startTime.csv','wb')
write=csv.writer(csvfile)
write.writerows(self.allData)
csvfile.close()

if __name__=="__main__":
#实例化,并设置运行次数
controller=Controller(10)
controller.run()
controller.SaveData()

获取app启动时间的更多相关文章

  1. 利用uiautomator实现Android移动app启动时间的测试

    为了减少因手工测试的反应误差,这里介绍下如何利用Android自带的自动化测试工具uiautomator实现app启动时间的测试. 测试基本思路如下: 1.启动前记录当前的时间戳 2.启动app,直至 ...

  2. 1、获取APP 冷/热启动时间

    最近在研究Android APP性能测试.所以发现一些有趣的东西,在这里进行分享.我们先讲第一个内容,如何获取APP冷/热启动时间?为什么要做这个测试,道理其实很简单,如果启动APP特别耗时的话,用户 ...

  3. iOS获取app图标和启动图片名字(AppIcon and LaunchImage's name)

    在某种场景下,可能我们需要获取app的图标名称和启动图片的名称.比如说app在前台时,收到了远程通知但是通知栏是不会有通知提醒的,这时我想做个模拟通知提示,需要用到icon名称:再比如在加载某个控制器 ...

  4. linux获取系统启动时间

    1.前言 时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同.linux内核里面用一个名为jiffes的常量来计算时间戳.应用层有time.getdaytime等函数.今天需要 ...

  5. linux --> 获取系统启动时间

    获取系统启动时间 一.前言 时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同.linux内核里面用一个名为jiffes的常量来计算时间戳.应用层有time.getdaytim ...

  6. iOS 动态 Framework 对App启动时间影响实测

    最近看到的Slow App Startup Times里提到: The dynamic loader finds and reads the dependent dynamic libraries ( ...

  7. 获取APP应用的包名信息

    语言: python 3.7 需求:获取APP的包名和程序入口信息,以便在 Appium 脚本中配置 appPackage 和 appActivity 参数. 场景一 资源:已有APP应用的apk安装 ...

  8. Appium+Python自动化 3 -获取 app 包名和 activity

    方法一: ①手机通过USB连接电脑 ②打开手机上被测app ③在电脑上 dos命令窗口,输入命令 adb shell dumpsys window w | findstr \/ | findstr n ...

  9. MonkeyRunner 之如何获取APP的Package Name和Activity Name

    别人写的就收藏了: MonkeyRunner 之如何获取APP的Package Name和Activity Name http://www.mamicode.com/info-detail-51278 ...

随机推荐

  1. Nacos——注册中心

    目录 1.什么是nacos 2.使用--依赖+配置文件 3.Nacos服务分级存储模型 4.服务跨集群调用问题 5.服务集群属性--配置服务集群 6. Nacos-NacosRule负载均衡 7.根据 ...

  2. WSL docker打通容器间通信和追加端口映射

    最近在docker中搭建一个服务,需要有多个容器通信.这里简单记录一下如何在容器间进行通信,同时说一下已经存在的容器如何追加端口映射. 增加网桥 容器间通信的目的是不适用IP而是使用容器名称进行网络通 ...

  3. C# 使用Fluent API 创建自己的DSL

    DSL(Domain Specified Language)领域专用语言是描述特定领域问题的语言,听起来很唬人,其实不是什么高深的东西.看一下下面的代码: using FlunetApiDemo; v ...

  4. IDEA设置maven打包的时候跳过单元测试

    pom增加插件 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>mav ...

  5. Oracle根据约束条件名称查找对应的数据

    select * from dba_constraints where constraint_name = 'SYS_C0082752'

  6. 分享一下java需要的一些技术

    1.前言 you are 大哥,老衲很佩服你们_.还是一样的,有我联系方式的人,哪些半吊子不知道要学习哪些技术,一天让我整知识点,老衲也有事情做的,哪有那么多时间来一直搞知识点啊,我的博客更新很慢的, ...

  7. 【LeetCode】702. Search in a Sorted Array of Unknown Size 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 二分查找 日期 题目地址:https://lee ...

  8. 【LeetCode】778. Swim in Rising Water 水位上升的泳池中游泳(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/swim-in- ...

  9. 【剑指Offer】09. 用两个栈实现队列 解题报告(python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人微信公众号:负雪明烛 目录 题目描述 解题方法 一个栈用来保存输入,一个栈用来输出 日 ...

  10. 【LeetCode】477. Total Hamming Distance 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 位运算 日期 题目地址:https://leetco ...