zoukankan      html  css  js  c++  java
  • Android App性能测试之2:启动时间

    获取启动时间步骤:

    1、设置sdk+python环境

     

    2、为了获取App的包(package)名,在cmd输入adb logcat | grep START启动监控指令

     

    3、打开App,在cmd查看新增的记录中寻找cmp="com.xxxxx"/.xxxx.xxxActivity,引号里是包名

     

    4、输入启动App命令adb shell am start -W -n package/activity,ThisTime的值就是启动时间

     

    5、输入停止App命令adb shell am force-stop package(注意:没有activity),这时App退出——冷启动

    #5、输入退到后台命令adb shell input keyevent 3,相当于Back或Home键暂停App(退到后台)——热启动

    6、重复10次,取除了第1个的时间之外的9个值取平均值做图表分析

    脚本如下:

     1 #encoding:utf-8
     2 import os
     3 import time
     4 import csv
     5 
     6 #App类
     7 class App(object):
     8     def __init__(self):
     9         self.content = ""
    10         self.startTime=""
    11     #启动App
    12     def LaunchApp(self):
    13         cmd = "adb shell am start -W -n com.android.browser/.BrowserActivity"
    14         self.content = os.popen(cmd)
    15     #停止App
    16     def StopApp(self):
    17         cmd = "adb shell am force-stop com.android.browser"
    18         os.popen(cmd)
    19     #获取启动时间
    20     def GetLaunchedTime(self):
    21         for line in self.content.readlines():
    22             if "ThisTime" in line:
    23                 self.startTime = line.split(":")[1]
    24                 break
    25         return self.startTime
    26 
    27 #控制类
    28 class Controller(object):
    29     def __init__(self,count):
    30         self.app = App()
    31         self.counter = count
    32         self.alldata = [("timestamp","elapsedtime")]
    33 
    34     #单次测试过程
    35     def testprocess(self):
    36         self.app.LaunchApp()
    37         time.sleep(5)
    38         elapsedtime = self.app.GetLaunchedTime()
    39         self.app.StopApp()
    40         currenttime = self.getCurrentTime()
    41         time.sleep(3)
    42         self.alldata.append((currenttime,elapsedtime))
    43 
    44     #多次执行测试过程
    45     def run(self):
    46         while self.counter > 0:
    47             self.testprocess()
    48             self.counter = self.counter - 1
    49 
    50     #获取执行的当前时间
    51     def getCurrentTime(self):
    52         currentTime = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
    53         return currentTime
    54 
    55     #数据的存储
    56     def SaveDataToCSV(self):
    57         csvfile = open("startTime1.csv","w")
    58         writer = csv.writer(csvfile)
    59         writer.writerows(self.alldata)
    60         csvfile.close()
    61 
    62 if __name__ == "__main__":
    63     controller = Controller(10)
    64     controller.run()
    65     controller.SaveDataToCSV()
  • 相关阅读:
    @try { } @catch (NSException *exception) {} @finally {}
    键盘点出来就退不掉了,你可以把这几句加到有键盘的控制器里
    测试最新的微信iOS SDK 报错误
    堆、栈知识小结
    PV操作
    continue & break
    dll的def文件与__declspec(dllexport)导出函数方式比较
    setupapi.h和setupapi.lib該如何使用
    批量缺少头文件的解决办法(添加包含目录)
    易犯错误总结:
  • 原文地址:https://www.cnblogs.com/hlphlp/p/6771617.html
Copyright © 2011-2022 走看看