Android App性能測試之2:啓動時間

獲取啓動時間步驟:python

一、設置sdk+python環境android

 

二、爲了獲取App的包(package)名,在cmd輸入adb logcat | grep START啓動監控指令shell

 

三、打開App,在cmd查看新增的記錄中尋找cmp="com.xxxxx"/.xxxx.xxxActivity,引號裏是包名app

 

四、輸入啓動App命令adb shell am start -W -n package/activity,ThisTime的值就是啓動時間測試

 

五、輸入中止App命令adb shell am force-stop package(注意:沒有activity),這時App退出——冷啓動spa

#五、輸入退到後臺命令adb shell input keyevent 3,至關於Back或Home鍵暫停App(退到後臺)——熱啓動code

 

六、重複10次,取除了第1個的時間以外的9個值取平均值作圖表分析blog

 

腳本以下:utf-8

 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()
相關文章
相關標籤/搜索