開始第一個簡單的Android UI自動化測試
1.使用adb命令連接真機或模擬器
2.打開uiautomatorviewer工具
3.使用uiautomatorviewer工具獲取應用的元素進行定位
4.簡單介紹unittest框架的使用方法
5.使用Python編寫貓寧考勤應用注冊模塊的自動化測試
1.使用adb命令連接真機或模擬器:
手機USB連接電腦,進入開發者模式;
cmd命令:adb devices ,查看手機是否連接
這里寫圖片描述
顯示錯誤
這是因為adb的埠被佔用,我們需要查看是什麼應用佔用了這個埠(5037為adb默認埠)
cmd命令 : netstat -aon|findstr 「5037」
這里寫圖片描述
可以看到佔用5037埠對應的程序的PID號為8388;
cmd命令 : tasklist|findstr 「8388」
這里寫圖片描述
可以看出8388對應的程序為kadb.exe,說明該程序正在使用5037埠;
這時我們需要在任務管理器中結束kadb.exe進程,按快捷鍵「Ctrl+Shift+Esc」調出Windows任務管理器,找到「kadb.exe」,單擊下方的結束進程即可!
這里寫圖片描述
我們再次運行cmd命令:adb devices
這里寫圖片描述
這一步成功後我們才能運行sdk自帶的uiautomatorviewer;
我們需要用uiautomatorviewer工具來獲取元素,用於定位。
cmd命令:uiautomatorviewer,打開uiautomatorviewer界面
這里寫圖片描述
或者找到sdk目錄:sdk\tools中找到uiautomatorviewer.bat文件雙擊運行
這里寫圖片描述
2.打開uiautomatorviewer工具
這里寫圖片描述
我們可以根據text,resource-id,class等元素進行定位
3.使用uiautomatorviewer工具獲取應用的元素進行定位
這里我使用python自帶的IDLE進行編寫測試腳本,打開python文件找到IDLE(python GUI)雙擊打開,如圖:
這里寫圖片描述
4.簡單介紹unittest框架的使用方法
# -*- coding:utf-8 -*-
from uiautomator import device as d
import unittest
class Mytest(unittest.TestCase):
#初始化工作
def setUp(self):
print "--------------初始化工作"
#退出清理工作
def tearDown(self):
print "--------------退出清理工作"
#測試點擊貓寧考勤case
def test_login(self):
d(text="貓寧考勤").click()
print "--------------測試1"
#測試2
def test_z(self):
print "--------------測試2" #這里你可以寫你的第二個測試用例,
#測試3
def test_w(self):
print "--------------測試3" #這里你可以寫你的第三個測試用例。。。。。。。。。。。。。
if __name__ == '__main__':
unittest.main()
結果如下:
Testing started at 21:14 …
————–初始化工作
————–測試1
————–退出清理工作
————–初始化工作
————–測試3
————–退出清理工作
————–初始化工作
————–測試2
————–退出清理工作
Process finished with exit code 0
從結果中我們可以看出unittest框架的運行方式為:
setUp 測試1 tearDown
setUp 測試2 tearDown
setUp 測試3 tearDown
5.使用Python編寫貓寧考勤應用注冊模塊的自動化測試
# -*- coding:utf-8 -*-
from uiautomator import device as d
import time
import unittest
class MyTestSuite(unittest.TestCase):
# 初始化工作
def setUp(self):
print "--------------初始化工作"
# 退出清理工作
def tearDown(self):
print "--------------退出清理工作"
#***************************方法**************************************
# 判斷控制項是否存在 & text
def check_controls_exists(self, controls_text):
if d(text=controls_text).exists:
return 1
else:
return 0
# 判斷按鈕是否置灰 & text & clickable
def check_controls_click_text(self, controls_text):
if d(text=controls_text).info.get("clickable") is True:
return 1
else:
return 0
#assertIn(a, b) a in b
def check_ainb(self,resourceid,b):
if d(resourceId=resourceid).info.get("text") in b:
return 1
else:
return 0
#***********************************************************
# 注冊模塊
def test_Aregister(self):
try:
time.sleep(2)
#貓寧考勤開啟全新時代
self.assertEqual(self.check_controls_click_text("注冊"),1,u"貓寧考勤開啟全新時代")
# 貓寧考勤開啟全新時代--》點擊注冊按鈕進入注冊貓寧界面
d(text="注冊").click()
time.sleep(3)
#注冊貓寧界面
self.assertEqual(self.check_text("com.isentech.attendancet:id/regis_phone","請輸入手機號碼"),
1,u"注冊頁面-》請輸入手機號碼")
self.assertEqual(self.check_text("com.isentech.attendancet:id/regis_verifycode","請輸入驗證碼"),
1,u"注冊頁面-》請輸入驗證碼")
self.assertEqual(self.check_controls_click_text("獲取驗證碼"), 0,u"注冊頁面-》獲取驗證碼")
self.assertEqual(self.check_controls_click_text("《中科愛訊服務協議》"), 1,u"注冊頁面-》《中科愛訊服務協議》")
self.assertEqual(self.check_controls_click_text("注冊"), 0,u"注冊頁面-》注冊")
time.sleep(2)
#《中科愛訊服務協議》
d(text="《中科愛訊服務協議》").click()
time.sleep(2)
self.assertEqual(self.check_ainb("com.isentech.attendancet:id/title","服務協議"), 1,u"注冊頁面-》服務協議")
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/title_back").click()
time.sleep(1)
#手機號不輸入是否能注冊
d(text="注冊").click()
time.sleep(3)
# 手機號只輸入1個數字是否能注冊&只輸入1個數字是否能獲取驗證碼
d(resourceId="com.isentech.attendancet:id/regis_phone").set_text("1")
self.assertEqual(self.check_controls_click_text("獲取驗證碼"), 0)
time.sleep(1)
d(text="注冊").click()
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_phone").clear_text()
time.sleep(1)
#只輸入5個數字是否能獲取驗證碼
d(resourceId="com.isentech.attendancet:id/regis_phone").set_text("11111")
self.assertEqual(self.check_controls_click_text("獲取驗證碼"), 0)
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_phone").clear_text()
time.sleep(1)
#只輸入手機號是否能注冊
d(resourceId="com.isentech.attendancet:id/regis_phone").set_text(phone_number)
self.assertEqual(self.check_controls_click_text("注冊"), 0)
time.sleep(1)
d(text="注冊").click()
time.sleep(1)
#輸入正確的驗證碼&獲取驗證碼是否高亮
d(resourceId="com.isentech.attendancet:id/regis_verifycode").set_text("5648")
time.sleep(1)
self.assertEqual(self.check_controls_click_text("獲取驗證碼"), 1)
time.sleep(2)
#密碼只輸入1個數字是否能注冊&注冊按鈕是否高亮
d(resourceId="com.isentech.attendancet:id/regis_pass").set_text("1")
d(resourceId="com.isentech.attendancet:id/regis_passAgain").set_text("1")
time.sleep(1)
self.assertEqual(self.check_controls_click_text("注冊"), 0,u"密碼只輸入1個數字是否能注冊")
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_pass").clear_text()
d(resourceId="com.isentech.attendancet:id/regis_passAgain").clear_text()
time.sleep(1)
#輸入不相同的密碼是否能注冊
d(resourceId="com.isentech.attendancet:id/regis_pass").set_text("123456")
d(resourceId="com.isentech.attendancet:id/regis_passAgain").set_text("12345")
time.sleep(1)
self.assertEqual(self.check_controls_click_text("注冊"), 0,u"輸入不相同的密碼是否能注冊")
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_pass").clear_text()
d(resourceId="com.isentech.attendancet:id/regis_passAgain").clear_text()
time.sleep(1)
#輸入正確的密碼是否能注冊&我已同意是否打鉤
d(resourceId="com.isentech.attendancet:id/regis_pass").set_text("123456")
d(resourceId="com.isentech.attendancet:id/regis_passAgain").set_text("123456")
time.sleep(1)
self.assertEqual(self.check_controls_click_resourceId("com.isentech.attendancet:id/regis_agree"), 1)
self.assertEqual(self.check_controls_click_text("注冊"), 1)
time.sleep(2)
d(text="注冊").click()
time.sleep(8)
except Exception, e:
print u"Error: 注冊模塊有問題\n", e
def test_app():
test_unit = unittest.TestSuite()
test_unit.addTest(MyTestSuite("test_Aregister"))
if __name__ == "__main__":
# 測試app
unittest.main()
B. android音樂播放器的測試怎麼寫
軟體工程資料庫課程設計——測試報告 1 引言 1.1 編寫目的 編寫該測試報告主要由以下幾個目的 1.通過對測試結果的分析,得到對軟體質量的評價 2.分析測試的過程,產品,資源,信息,為以後制定測試計劃提供參考 3.評估測試執行和測試計劃是否符合 4.分析系統存在的缺陷,為修復和預防 bug 提供建議 1.2 背景說明 說明: 1. 被測試軟體系統的名稱:android 音樂播放器 2. 該軟體的任務提出者:android 老師。 1.3 定義 嚴重 bug:出現以下缺陷,測試定義為嚴重 bug 系統無響應,處於死機狀態,需要其他人工修復系統才可復原。 點擊某個按鈕後出現「 Unexpect error,the application has been stopped」或 者返回異常錯誤。 進行某個操作後,出現「 Unexpect error,the application has been stopped」 或者返回異常錯誤。 當切換音樂時,出現」 Unexpect error,the application has been stopped」或 者返回異常錯誤。 1.4 參考資料 列出要用到的參考資料,如: 1. 2. 《android 需求和實際和說明書》 《android 項目數據字典》 第1頁 軟體工程資料庫課程設計——測試報告 3. 《android 後台管理系統測試計劃》 4. 《android 項目計劃》 5. 《android 程序設計基礎》 2 測試概要 Android 音樂播放器系統測試從 2014 年 5 月 25 日開始到 2014 年 6 月 1 日結束, 共持續 6 天,測試功能點 6 個,執行 10 個測試用例,平均每個功能點執行測試用例 2 個,測試共發現 5 個 bug,其中嚴重級別的 1 個,無效 1 個,平均每個測試功能點 1 個 bug。 3 測試結果及發現 3.1 測試 1(功能鍵測試) 在本次測試中對各個功能鍵進行了相關的測試,並把各個功能鍵該有的功能給體現出來。 最後的測試結果是,各個功能鍵基本符合預想的要求,但是在測試中間,不時會出現一些系 統錯誤。 3.2 測試 2(音樂清單測試) 在對音樂清單模塊進行測試時,先了解音樂清單的具體功能的體現與要求。音樂清單模 塊具備自動掃描功能,自動更新,刪除重復,刪除錯誤功能。測試過程比較繁瑣,不停更換 音樂,增加重復音樂,增加錯誤來對該項進行測試。對音樂清單界面轉變,字體等還需改進。 4 對軟體功能的結論 4.1 功能 1(功能鍵) 名稱:播放 參與者:用戶 目標:用戶點擊播放音樂列表中的歌曲 前置條件:播放器正在運行 基本事件:1.用戶單擊列表中歌曲 2.播放器將播放列表中的點擊 的歌曲 名稱:暫停 參與者:用戶 目標:使得用戶可以暫停正在播放的歌曲 第2頁 軟體工程資料庫課程設計——測試報告 前置條件:歌曲正在播放且未停止和暫停 基本事件:1.用戶單擊「暫停」按鈕 2.播放器將暫停當前的歌曲 名稱:上一首/下一首 參與者:用戶 目標:使得用戶可以點播上一首或下一首音樂 前置條件:歌曲正在播放或歌曲暫停中 基本事件:1.用戶單擊「上一首或下一首」按鈕 2.播放器將播放上一首歌曲或下一首歌曲 4.1.1 能力 本部分是對播放音樂時的一些簡單的操作,如播放,暫停,切歌。為滿足這部分功能, 進行不斷的測試已將可以預料到的錯誤,進行了修改,大體上不會再出現此類錯誤。 4.2 功能 2(音樂清單) 名稱:音樂列表 參與者:用戶 目標:使得用戶可以進入音樂列表 前置條件:程序在運行 基本事件:1.用戶單擊「音樂」分區 2.播放器進入音樂列表 4.2.1 能力 本部分是對音樂列表的功能的測試,此項目的音樂列表的基本功能可以實現。對於一些 界面方面的操作,在測試中始終出現錯誤,排除不了。相對來說測試是成功的,界面上的操 作與音樂播放器的主要功能沒有影響,所以可以刪除此部分。 5 分析摘要 5.1 能力 Android 音樂播放器的測試今本上是成功的。對於一些基本功能,都能夠實現。本軟體的 可移植性還是比較強的,只要是 android 手機都可以安裝本軟體,並且不會出現系統不兼容 第3頁 軟體工程資料庫課程設計——測試報告 的問題。最終的測試結果,也暴露了一些問題,與要求的差一些。就是在音樂清單部分,對 於字體的修改以及界面的轉換方面沒有完全實現。本軟體本就是 android 軟體,在測試環境 與運行環境上不存在差異,這完全是因為 android 太強大了。 5.2 缺陷和限制 1. 缺陷描述:音樂清單有亂碼,音樂無名稱,查看不方便 缺陷影響:其他音樂都有名稱,音樂無名稱,查看不方便 推遲原因:目前的日誌 為了調試方便,顯示了很多其它信息,在項目正式發布時會統一處理的。 2. 缺陷描述:數據字典種類修改,默認值設置後,在調用該數據字典種類的數據字典, 默 認值無顯示 缺陷影響:數據字典種類的默認值設置後,不能顯示設置的默認值,相當於數據字 典種類默認值設置功能未實現 推遲原因:該功能暫時不好實現,需要和和系統的默認語種一起處理。 3. 缺陷描述:多媒體添加,文件上傳功能未實現 缺陷影響:文件上傳功能未實現 推遲原因:該功能暫時不好完成,在下個版本中完成 5.3 建議 在項目開始的時候應該制定編碼標准,資料庫標准,需求變更標准,開發和測 試人員都 嚴格按照標准進行,可以在後期減少因為開發,測試不一致而導致的問題,同時也可以降低 溝通成本。 發布版本的時候,正確布置測試環境,減少因為測試環境,測試資料庫數據的 問題而出 現的無效 bug。 開發人員解決 bug 的時候,填寫 bug 原因以及解決方式,方便 bug 的跟蹤。 開發人員在開發版本上發現 bug,可以通知測試人員,因為開發人員發現的 bug 很有可 能在測試版本上出現,而測試人員和開發人員的思路不同,有可能測試人員沒有發現該 bug, 而且,這樣可以保證發現的 bug 都能夠被跟蹤。 。 5.4 評價 本軟體經測試,可以在任何 android 設備上運行,安全性得到了保證,可以交付使用。 第4頁
C. 如何使用python做android的自動化測試
一、首先說說手機自動化測試的原理 1、手機自動化測試的原理為PC上一個控制端(測試工具)與手機上的一個agent端,通過串口、USB或者無線方式將PC與手機終端相連,然後應用測試工具向手機發送請求或者命令,手機收到命令或者請求後,交給agent端解析,然後agent將這些解析的命令下發給手機的各個功能模塊所能識別的命令,調用那些功能模塊模擬操作。完成這些操作後,手機會返回一些信息,agent可以抓取這些信息,然後傳回給PC端,這樣就完成了一個完整的手機自動化測試。 2、關鍵點在於agent,有的公司是向自己的手機終端的軟體功能模塊中植入測試程序響應代碼,有的公司可以利用MMI_Command的方式來控制手機終端;原理就是給手機提供一個響應的介面。 3、而對於PC控制端,這個測試腳本用各種編程語言都可以,看如何定義 4、而又的自動化測試設計成錄制的機制,說通俗點,就是記錄手工操作的鍵盤信息或者LCD的操作信息(LCD需要用到智能識別機制) 5、自動化測試框架的搭建方法是通用的,你需要有一套自己的測試框架才能保證自動化測試的順利開展。 二、Android自動化測試方向: 1、CTS,CTS 測試基於Android instrumentation 測試, 其又基於JUnit 測試。說白了, CTS 就是一堆單元測試用例。這也是Java 語言的擅長部分。 2、 Monkey工具,Monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試。Monkey測試是一種為了測試軟體的穩定性、健壯性的快速有效的方法。 3、ASE,ASE 意思為Android 腳本環境, 即我們可以通過腳本(比如Python)調用Android 的功能,從而定製一些測試。比如打電話,發簡訊,瀏覽網頁,等。我們可以擴充它的API(Java 部分), 並用python 腳本調用這些API, 從而實現豐富的測試功能。用於API 部分可以訪問到Android 全部API, python 又能靈活部署測試,所以ASE 的擴展性非常好。 4、Robotium,該工具用於黑盒的自動化測試。可以在有源碼或者只有APK 的情況下對目標應用 進行測試。Robotimu 提供了模仿用戶操作行為的API,比如在某個控制項上點擊,輸入Text 等等。(推舉你可以研究一下這個工具,開源的,我有資料) 5、可以自己開發一個手機方面的自動化測試工具,原理上一樣的 如果你想要什麼資料的話或者想一起學習研究的話,可以給我發郵件:[email protected]
D. 怎麼寫Android手機游戲測試用例
第一項:游戲安裝
游戲安裝後是否與安卓軟體版本(手機環境)兼容
游戲安裝後是否會影響到其他軟體的使用
游戲安裝後是否有優化功能
游戲安裝包是否過大
游戲安裝包是否安全,無病毒、木馬等惡意破壞性程序
游戲安裝後顯示的游戲圖標(App Icon)是否顯示正常
......
第二項:游戲畫面與文字
游戲界面是否能依照手機的屏幕擺放位置來進行有效的橫/豎屏切換
游戲畫面是否在游戲開啟後運行流暢
游戲畫面是否符合游戲風格
游戲畫面是否符合大眾的審美觀,並無敏感性因素
游戲畫面是否符合屏幕解析度的標准,無顯示不完整等異常現象
游戲文字是否顯示清晰
游戲文字是否美觀,並與游戲畫面相匹配
游戲文字是否符合大眾人的審美觀,並沒有敏感性詞彙
游戲文字是否漢化完整
游戲文字是否能根據語言的設置進行多國語言文字的切換
游戲文字是否出現錯別字、繁體字(某些狀況可以考慮使用繁體字)、火星文等文字
......
第三項:游戲聲音
游戲背景音樂是否能在游戲運行時播放
游戲背景音樂是否出現播放延遲、播放提前等播放不同步現象
游戲背景音樂是否與游戲風格相符合
游戲音效是否能在游戲運行時播放,並無不同步現象
游戲背景音樂和音效是否符合大眾的審美觀,並沒有敏感性因素
當進入通話狀態時,是否出現聲音混合現象
游戲聲音是否出現變形
......
第四項:游戲核心功能(可玩性)
游戲玩家基本動畫(站立、行走、奔跑、基本攻擊、技能攻擊等)播放是否正常
游戲在運行時是否出現死機、黑屏、崩潰等嚴重影響游戲體驗的現象
任務系統是否完善、是否出現描述錯誤、當前任務與進行中的任務不匹配等現象,達到任務要求後能否提交任務,提交任務後任務能否完成,任務完成的獎勵是否正確
游戲劇情(世界觀)是否符合大眾的審美觀,並沒有敏感性因素
游戲玩家能否正常的攻擊怪物、拾取物品、受到傷害,玩家生命值為0時能否正常死亡
游戲敵人(怪物或對手)能否正常的攻擊玩家、受到傷害,敵人(怪物或對手)生命值為0時能否正常死亡
玩家與敵人(怪物或對手)的生命值、法力值等是否顯示正常(包括數值和血條),受到攻擊後,生命值是否下降,釋放技能後,法力值是否下降(包括數值和血條)
殺死敵人(怪物或對手)後,物品的掉落和經驗值的獎勵是否正常
玩家的攻擊力、防禦力等數值計算是否正確,當玩家強化裝備後,攻擊力、防禦力等數值能否上升
玩家的背包系統是否完善,能否實現拾取物品後物品出現在背包內,當背包超出負重上限或物品欄滿欄的時候是否還能撿取物品,能否在背包內實現物品出售、物品修理等功能,背包內的物品信息是否顯示正確,使用後能否出現效果。
游戲是否具備自動尋路等導航功能,若有,該功能是否完善,玩家、寵物、坐騎和怪物的跟蹤是否正常
當玩家的裝備的持久度不足時,攻擊力、防禦力能否受到影響
進入游戲後,游戲場景的渲染、紋理是否顯示正常
NPC的功能是否能實現
游戲每個功能按鍵是否可以點擊,點擊後是否出現點擊後的效果
游戲虛擬桿是否可以正常的控制玩家的移動,游戲的虛擬按鈕是否可以正常的控制玩家的攻擊
行會系統、好友系統以及結婚系統是否完善,玩家列表是否是當前狀態的玩家列表
游戲是否有PK系統(PVE、PVP),若有,該功能是否完善
游戲是否具備組隊功能,若有,該功能是否完善
物品出售時金幣計算是否正確
游戲關卡的小地圖顯示是否正常,地圖圖標是否和玩家、敵人(怪物或對手)同步
游戲的記時是否連續、一致(指來電後時間繼續,從來電時刻開始計時)
玩家的游戲體驗是否方便
游戲說明是否與游戲操作功能保持一致
游戲界面的跳轉是否正常
新手玩家的前期體驗是否快速方便,玩家等級的提升是否快速,是否能給玩家帶來一定的緊張刺激感
退出遊戲後,游戲信息能否正確存檔
......
第五項:充值與商城系統
商城內物品價格是否合理
能否通過花費的現金來兌換一定量的虛擬游戲幣(基本充值功能的實現)
購買商品後,商品信息能否正確顯示,使用後能否出現效果
能否通過游戲官方、支付寶、微信等支付現金來實現充值交易
點擊充值按鈕後能否進入官方充值網站
商城內物品的上架/下架是否及時,是否有折扣等福利性活動
......
第六項:游戲中斷測試
被測游若與時間相關(游戲中有記時功能),來電後時間是否與來電前一致
游戲待機後,游戲能否暫停並關閉屏幕,並且來電或其他優先操作後,游戲能否暫停,並無其他異常現象(死機、黑屏、崩潰等)。
游戲中不同的界面來電時,來電提示正常,接聽,掛斷電話等操作後,返回遊戲是否出現異常。
游戲中不同的界面手機來簡訊時,簡訊提示正常,回復簡訊後返回遊戲是否出現異常
游戲中不同的界面來電時,來電提示正常,接聽,掛斷電話等操作後,返回遊戲後游戲音效是否出現異常
游戲中不同的界面手機來簡訊時,簡訊提示正常,回復簡訊後返回遊戲後游戲音效是否出現異常
......
第七項:游戲其他功能
游戲注冊是否有實名制
游戲是否有未成年人防沉迷系統
游戲的安全防護措施是否到位(倉庫鎖、登錄鎖、游戲物品鎖等)
游戲獲得的成就能否通過QQ、微信、支付寶等與聯系人分享
......
E. 如何製作移動app測試方案及詳細流程
首先是測試資源確認及准備
(1)產品需求文檔,產品原型圖,介面說明文檔及設計文檔應該齊全
(2)測試設備及測試工具的准備:IOS和Android的不同年版本的真機,以及測試相關工具的准備。
測試用例的設計及評審
(1)根據產品需求文檔,產品原型圖等文檔,設計客戶端的一般功能測試用。
(2)測試用例評審,修改與完善,評審過後著手進入正式測試階段
UI測試
(1)確保手頭的原型圖與效果圖為當前最新版本,符合產品經理及用戶需求。
(2)測試過程一切以效果圖為准,若用戶體驗猛帶方面有建議,先以郵件的形式與產品經理確認,確認通過後,可以正式的發出用戶體驗方面的問題
功能測試
(1)APP功能測試主要依據編寫的功能測試用例進行軟體功能的遍歷
(2)涉及的測試主要包括基本功能測試,安裝,卸載,運行測試,異常處理(包括網路突然中斷或者網速過慢,機器內存不足等異常情況的處理)
中斷測試
(1)軟體運行過程中接電話,收簡訊,鎖屏,鬧鈴,充電,收到通知提醒後在使用軟體,軟體任可以正常運行
(2)運行軟體時由前台切換到後台,再切換回前台仍能繼續運行
兼容性及適配器測試
(1)硬體的適配:不同手機廠商,硬體性能,不同屏幕大小的適配。
(2)OS版本的兼容。
(3)不同屏幕解析度的適配:移動端設備的屏幕解析度多種多樣,如果app沒有做合適的處理可能會顯示不好,甚至影響功能的操作。
(4)兼容性測試必須放在一定數量的真機上運行,由於真機類型較多,兼容性測試的時候可以選取典型的幾種運用較多的真機進行兼容性測試。
性能測試
(1)客戶端性能測試注重安裝卸載時間,啟動時間,頁面載入時間,主要功能佔用的床鋪,內存,流量,耗電量等,以及與同類產品相比較是否具有優勢。
(2)至於伺服器端的性能,主要利用介面對伺服器進行加壓,重點關注相應時間,吞吐量,並發數,事務通過率等。
穩定性測試
(1)安卓app的穩定性常常使用monkey進行測試,通過隨機事件流模擬個人操作,對檢查程序的內存溢出,空指針有很大的作用
檢測分析及測試報告輸出
以上各種形式的APP測試結束後,應該形成完整的分析及報告文檔,輸出給相關人員
F. 如何進行android兼容性測試cts
二、運行CTS的方法,步驟如下:
(1)進入目錄android-cts,該目錄是通過上面那兩種方法獲得的。在android-cts目錄下會有3個文件夾,其中一個是tools。
(2)進入tools目錄,輸入./startcts來啟動CTS。
(3)如果運行成功會出現Android CTS version 2.3_r1的字樣(我的android的版本是2.3的)。如果有連接設備到PC上還會出現Device(設備ID)connected的字樣。這里設備可以是連接PC的android的機器,也可以是模擬器。
三、CTS測試的方法:
(1)在cts_host>下敲入help,會顯示cts下的許多命令。ls –plan命令顯示google自帶的測試方案,如:Java、Signature、Android、CTS、VM、RefApp、Performance、AppSecurity。其中Performance這個方案是google暫不要求的。Java、Signature、Android、VM、RefApp、Appsecurity方案都是CTS方案的子集。
(2)用命令ls -d來查看已連接的設備,CTS測試之前我們必須保證至少有一個設備連接上。
(3)輸入命令start –plan CTS來執行CTS測試方案,該方案有兩萬多條測試項目,需要很長時間,因此除了第一次測試之外,不建議這么做。我做的都是針對某些包的測試。如果連接了多個設備的話需加上-d參數,後面跟上設備id來告訴CTS需要測試的設備。
(4)對單獨一個包進行測試的方法:start –plan CTS –p 包名;推薦用這種方法來進行針對性的測試。需要知道有哪些包名,可以輸入命令:ls –plan CTS
(5)也可以針對單獨一個case進行測試:start –plan CTS –test 類名#方法名
四、查看測試的結果:
測試生成的log在\android-cts\repository目錄下以log+測試時間.txt命名。測試報告在android-cts\repository\results目錄下,也是以測試時間命名。
五、注意事項:
(1)測試前需要安裝一個apk:adb install -r android-cts/repository/testcases/.apk 然後在設置裡面