一種對基于安卓平臺的設備的自動化測試系統及方法
【專利摘要】本發明公開了一種對基于安卓平臺的設備的自動化測試系統及方法,屬于一種自動化測試系統及方法,其中,所述自動化測試系統包括:執行模塊,用于向被測設備發出測試指令;與所述執行模塊連接的記錄模塊,用于記錄所述被測設備執行所述測試指令的數據記錄;分別與所述執行模塊以及所述記錄模塊連接的控制模塊,所述控制模塊用于設定測試項,并通過所述數據記錄判定測試項是否通過。本發明的有益效果是:能夠在該平臺上同步地執行安卓人機交互測試與底層通信消息檢測,從而可以實現對測試用例的自動判斷,有利于深入分析測試中問題的發生原因,提高了對平臺測試的準確率,并提高了測試的效率。
【專利說明】一種對基于安卓平臺的設備的自動化測試系統及方法
【技術領域】
[0001]本發明涉及一種自動化測試系統及方法,尤其涉及一種對基于安卓平臺的設備的自動化測試系統及方法。
【背景技術】
[0002]隨著技術的飛速發展,智能手機已經非常普及。智能手機具有獨立操作系統,可以支持由用戶、第三方服務商等提供的應用程序,從而使智能手機具有了各種各樣的功能,除了用于通信和娛樂外,還可用于資訊和辦公等方面,大大豐富了用戶的使用。如今智能手機已經成為大部分人生活中不可或缺的部分。
[0003]Android是一種以Linux為基礎的開放源碼操作系統,具有強大的開放性和可擴展性,目前Android系統的智能手機,占全球銷售比例已經超過四分之一。除了智能手機夕卜,Android系統還可應用于如平板電腦等多種智能電器。
[0004]軟件測試對于發現軟件中缺陷,保障軟件的質量具有重要意義。因此,對Android平臺的軟件測試也就成為了相關產品開發過程中的重要環節。由于軟件測試環節的工作量普遍都非常繁重,為了能夠提高測試質量、提升測試效率以及降低測試成本,需要通過自動化測試承擔其中部分工作。
[0005]目前,能夠用于對基于安卓平臺智能手機的自動化測試工具主要包括:SeeTeSt、RobotiunuMTBF等。這些測試工具依賴于手機平臺界面,一般都是通過測試人員對測試后的界面元素進行人工比對,進行安卓人機交互的自動測試。其缺陷在于無法從通信層面對底層的協議消息進行很好的檢測,其通過測試判斷出的問題一般都是如定屏、死機、Crash等安卓特性的問題,難以對Android平臺的其他方面,如平臺的通訊協議層面進行深入檢測和分析,從而影響了測試結果的準確性。其次,由于只是通過界面進行測試判斷,所以界面的變化會直接影響到測試的結果,甚至會導致測試判斷失敗。另外,上述測試方式在編寫測試腳本時,代碼編寫量會比較大,這又會增加測試設計的復雜性以及維護難度。
[0006]專利申請文件,申請號CN 102419732A:公開了基于android平臺的自動化測試方法及測試工具。該測試方法包括:用于錄制操作事件并生成android平臺可執行腳本的腳本錄制步驟;用于在設備對象接收到執行腳本的命令后執行所述可執行腳本的腳本執行步驟;用于根據腳本執行結果判斷自動化用例是否通過的結果判斷步驟。上述的技術方案通過錄制事件腳本、回放腳本和界面元素比對,得出測試結果。但是上述的技術方案仍然只是基于測試界面,通過對測試界面元素的對比進行測試判斷,并未涉及通過底層的協議消息進行測試檢測。
【發明內容】
[0007]針對以上的技術問題,本發明公開了一種對安卓平臺的終端設備的自動化測試系統及方法,以在平臺上進行人機交互測試的同時,可以實現對底層通信信息的檢測,避免僅通過界面進行結果判斷所產生的問題。
[0008]具體技術方案如下所示:
[0009]一種對基于安卓平臺的設備的自動化測試系統,其中,所述自動化測試系統包括:
[0010]執行模塊,用于向被測設備發出測試指令;
[0011]與所述執行模塊連接的記錄模塊,用于記錄所述被測設備執行所述測試指令的數據記錄;
[0012]分別與所述執行模塊以及所述記錄模塊連接的控制模塊,所述控制模塊用于設定測試項,并通過所述數據記錄判定測試項是否通過。
[0013]優選的,所述執行模塊包括預設于所述測試系統的存儲模塊的測試腳本。
[0014]優選的,所述執行模塊還包括用于執行所述測試腳本的測試工具。
[0015]優選的,還包括連接于所述執行模塊的判定模塊;所述判定模塊用于判定是否驅動所述執行模塊。
[0016]優選的,所述判定模塊包括指令判定單元;所述指令判定單元用于檢測是否存在輸入指令。
[0017]優選的,所述測試驅動模塊還包括腳本判定單元,所述腳本判定單元用于檢測是否預設有測試腳本。
[0018]優選的,所述判定模塊還包括指令刪除單元;所述指令刪除單元用于刪除已執行的測試指令。
[0019]優選的,還包括分別與所述控制模塊和所述記錄模塊連接的監測模塊;所述監測模塊用于獲取所述數據記錄中的底層數據記錄,并將所述底層數據記錄發送到所述控制模塊進行測試結果判定。
[0020]優選的,所述底層數據記錄包括網絡協議記錄以及數字通信處理記錄。
[0021]一種對基于安卓平臺的設備的自動化測試方法,其中,具體包括如下步驟:
[0022]步驟1.設定測試項;
[0023]步驟2.根據預設的測試腳本和所述測試項向所述設備發出測試指令,開始測試;
[0024]步驟3.根據測試的返回數據進行判斷,得出測試結果;
[0025]步驟4.重復執行所述步驟2至所述步驟3,直至所有的測試項測試完成。
[0026]優選的,所述步驟2中還包括:
[0027]步驟21.刪除已執行的測試指令。
[0028]優選的,所述步驟2中還包括:
[0029]步驟22.判定是否向被測設備發出測試指令。
[0030]優選的,所述步驟22中還包括:
[0031]步驟221.判定是否存在輸入指令;當存在輸入指令時,則執行輸入指令,并退出所述測試方法;否則進入步驟213 ;
[0032]步驟222.判定是否存在測試腳本;當不存在測試腳本時,則退出所述測試方法;否則進入步驟214;
[0033]步驟223.根據所述測試腳本和所述測試項向被測設備發出測試指令。
[0034]優選的,所述步驟3中還包括:
[0035]步驟31.實時記錄被測設備執行所述測試指令后的數據記錄;
[0036]步驟32.獲取所述數據記錄中的底層數據記錄,并對所述底層數據記錄進行測試結果判定;
[0037]步驟33.根據預設的判定規則對比所述底層數據記錄,判定測試結果。
[0038]優選的,所述步驟32中,所述底層數據記錄包括網絡協議記錄以及數字通信處理記錄。
[0039]本發明的有益效果是:
[0040]1.通過本發明的一種對基于安卓平臺的設備的自動化測試系統及方法,能夠在該平臺上同步地執行安卓人機交互測試與底層通信消息檢測,從而可以實現對測試用例的自動判斷,有利于深入分析測試中問題的發生原因,提高了對平臺測試的準確率,并提高了測試的效率。
[0041]2.通過控制模塊的測試用例設定單元對測試用例進行設定,方便地實現了對測試過程的控制。
[0042]3.通過判定模塊,可以對測試指令和一般輸入指令進行區分以及對測試腳本存在與否進行判斷,以決定是否驅動執行模塊,執行相應的測試腳本。
[0043]4.通過控制模塊的測試分析單元,從通信層面對底層的協議消息進行檢測,避免依賴于圖形界面來判斷測試結果,提高了測試的準確率。
[0044]5.通過判定模塊的指令刪除單元,可以刪除上次調用執行模塊遺留的指令,以節省存儲空間。
【專利附圖】
【附圖說明】
[0045]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0046]圖1為本發明的一種對基于安卓平臺的設備的自動化測試系統的實施例的結構示意圖;
[0047]圖2為本發明的一種對基于安卓平臺的設備的自動化測試系統的另一種實施例的結構不意圖;
[0048]圖3為本發明的一種對基于安卓平臺的設備的自動化測試系統的判定模塊的原理示意圖;
[0049]圖4為本發明的一種對基于安卓平臺的設備的自動化測試系統的另一種實施例的結構不意圖;
[0050]圖5為本發明的一種對基于安卓平臺的設備的自動化測試方法的實施例的流程示意圖。
【具體實施方式】
[0051]下面結合附圖和具體實施例對本發明作進一步說明,但不作為本發明的限定。
[0052]本發明的一種實施例公開了一種對基于安卓平臺的設備的自動化測試系統。如圖1所示,測試系統包括執行模塊,與執行模塊連接的記錄模塊,分別與執行模塊以及記錄模塊連接的控制模塊。上述的控制模塊用于用于設定測試項,并通過數據記錄判定測試項是否通過。上述的記錄模塊,用于記錄所述設備執行所述測試指令的數據記錄,即測試日志。
[0053]上述的執行模塊用于向基于安卓平臺的設備發出測試指令。于上述技術方案的基礎上,執行模塊包括預設于所述測試系統的存儲模塊的測試腳本。進一步的,執行模塊還包括支持上述測試腳本的測試工具。在一種【具體實施方式】中,測試工具可以是Monkeyrunner測試工具,測試腳本為基于Python的測試腳本。Python測試腳本里的測試命令由安卓提供,而Python測試腳本的具體編寫則可以由測試人員編寫完成。Monkeyrunner是集成于AndroidSDK (Android軟件開發包)中的測試工具,可以實現對安卓平臺的黑盒測試。其通過模擬如程序點擊操作的過程,以測試程序的穩定性。測試中,Monkeyrunner通過截屏的方式記錄測試過程中出現的問題,在測試后進行檢查分析。Monkeyrunner只需要通過命令行工具將目錄定位到android SDK路徑下的tools目錄完成配置,然后在命令行工具下運行Monkeyrunner的測試命令即可進行測試。
[0054]于上述技術方案的基礎上,如圖2所示,還包括連接于執行模塊和控制模塊之間的判定模塊,用于判定是否驅動上述的執行模塊。在一種【具體實施方式】中,判定模塊包括指令判定單元以及測試腳本判定單元。指令判定單元用于檢測是否存在輸入指令,測試腳本判定單元用于檢測是否預設有測試腳本。在另一種【具體實施方式】中,判定模塊還包括指令刪除單元,用于刪除已執行的測試指令。用于刪除完成測試的測試指令。如圖3所示,判定模塊中定義了局部變量cmd和file_path,全局變量的命令路徑dt_cmd_exec。其中cmd用于設定輸入指令,file_path用于表示執行模塊中測試腳本的路徑,dt_cmd_exec用于指定測試工具的路徑。在執行測試指令調用前,判定模塊會首先通過g_ttd_kill_cmd函數,刪除上次調用執行模塊遺留的指令,即已執行的指令,從而節省存儲空間。隨后,判定模塊對局部變量cmd的值進行判斷。當cmd的值不為空時,表示此時測試人員在命令行工具,如DOS命令行中進行了命令輸入,如ipconfig命令等。判定模塊就將cmd_exec的值賦值為cmd的命令輸入。此時執行的是上述的輸入命令,而不會對通過執行模塊對被測設備進行平臺測試。一般情況下,由于cmd的默認值設置為null,判定模塊將全局變量的dt_cmd_exec的值賦值給cmd_exec。dt_cmd_exec指向的是執行模塊的測試工具所在的路徑。例如,可以是Monkeyrunner的Monkeyrunner.bat批處理文件的路徑。接下來,判定模塊會對表示測試腳本路徑的file_path進行判斷。一種可選的實施方式是,當測試人員直接通過命令行進行命令輸入時,如進行上述的ipconfig命令輸入,測試驅動判斷模塊不會繼續上述的file_path進行判斷。如果f ile_path不為空,表示在該f ile_path所指向的路徑下存在預設的測試腳本,判定模塊會通過exec語句根據測試工具的路徑通過測試工具執行測試文件路徑下的測試文件,向待測試的設備發出測試指令。如果為空,則判定模塊就判定沒有預設的測試腳本,而不會去驅動執行模塊。
[0055]于上述技術方案的基礎上,如圖4所示,還包括分別與控制模塊和記錄模塊連接的檢測模塊。檢測模塊用于獲取數據記錄中的底層數據記錄,并將底層數據記錄發送到控制模塊進行測試結果判定。被測設備根據測試執行指令執行不同的業務,因而通過記錄模塊實時抓取的被測設備的數據記錄內容也不同。在控制模塊上可以根據不同的測試用例,對應預設不同的判定規則,對測試結果進行判定。例如,可以是設定預期數據范圍,判斷測試的數據記錄是否落入預期數據范圍,或者可以是控制模塊獲取的數據記錄中,是否包含特定的數據記錄,或者這些數據記錄是否按預期順序獲得等。
[0056]于上述技術方案的基礎上,底層數據記錄包括網絡協議記錄以及數字通信處理(DSP)的記錄。通過測試過程中的底層數據記錄進行信令對比,可以更有效地對安卓平臺的核心功能模塊,如上述的通信功能模塊進行深入測試分析。例如,在對被測設備,如基于Android系統的智能手機進行通話測試時,在由Monkeyrunner測試工具運行Python測試腳本后,會使被測手機執行相應動作,如呼叫請求,振鈴,呼叫建立等。其中,關于呼叫請求和呼叫建立的數據記錄屬于被測設備上網絡協議的記錄,關于振鈴的數據記錄屬于被測設備上數字通信處理的記錄。這樣在控制模塊上就可以預設對應的判定規則,例如,可以是控制模塊通過測試檢測模塊是否依次順序地讀取到上述的呼叫請求,振鈴以及呼叫建立的數據記錄。如果成功按照順序讀取到了所有的底層數據記錄,則控制模塊判定測試成功。否則判定為測試失敗。
[0057]本發明的一種實施例公開了一種對基于安卓平臺的設備的自動化測試方法,可以是通過如上述的測試系統實施。如圖5所示,具體包括如下步驟:
[0058]步驟1.設定測試項;
[0059]步驟2.根據預設的測試腳本和所述測試項向設備發出測試指令,開始測試;
[0060]步驟3.根據測試的返回數據進行判斷,得出測試結果;
[0061]步驟4.重復執行步驟2至所述步驟3,直至所有的測試項測試完成。
[0062]對于上述的步驟2,設定測試項可以是通過上述的自動化測試系統中的控制模塊設定的。在一種【具體實施方式】中,步驟2中還包括步驟21.刪除已執行的測試指令。具體來說,可以是通過上述判定模塊的指令刪除單元實現的。
[0063]對于上述的步驟2,在一種【具體實施方式】中,還包括步驟22.判定是否向被測設備發出測試指令。具體來說,可以是通過上述的判定模塊判定是否驅動上述的執行模塊,從而向被測設備發出測試指令。
[0064]于上述技術方案的基礎上,進一步的,步驟22中還包括:
[0065]步驟221.判定是否存在輸入指令;當存在輸入指令時,則執行輸入指令,并退出測試方法;否則進入步驟213;
[0066]步驟222.判定是否存在測試腳本;當不存在測試腳本時,則退出測試方法;否則進入步驟214 ;
[0067]步驟223.根據測試腳本和測試項向被測設備發出測試指令。
[0068]具體來說,上述步驟221和步驟222可以是通過自動化測試系統中判定模塊的指令判定單元進行判定,上述的步驟223可以是通過執行模塊實現。
[0069]于上述技術方案的基礎上,步驟3中還包括:
[0070]步驟31.實時記錄被測設備執行所述測試指令后的數據記錄;
[0071]步驟32.獲取所述數據記錄中的底層數據記錄,并對所述底層數據記錄進行測試結果判定;
[0072]步驟33.根據預設的判定規則對比所述底層數據記錄,對測試結果進行判定。
[0073]具體來說,上述的步驟31可以是通過自動化測試系統的記錄模塊實現;上述的步驟32可以是通過監測模塊實現,上述的步驟32可以是通過控制模塊實現。上述的步驟33是通過控制模塊實現的。
[0074]于上述技術方案的基礎上,底層數據記錄包括網絡協議記錄以及數字通信處理記錄。
[0075]以上僅為本發明較佳的實施例,并非因此限制本發明的實施方式及保護范圍,對于本領域技術人員而言,應當能夠意識到凡運用本發明說明書及圖示內容所作出的等同替換和顯而易見的變化所得到的方案,均應當包含在本發明的保護范圍內。
【權利要求】
1.一種對基于安卓平臺的設備的自動化測試系統,其特征在于,所述自動化測試系統包括: 執行模塊,用于向被測設備發出測試指令; 與所述執行模塊連接的記錄模塊,用于記錄所述被測設備執行所述測試指令的數據記錄; 分別與所述執行模塊以及所述記錄模塊連接的控制模塊,所述控制模塊用于設定測試項,并通過所述數據記錄判定測試項是否通過。
2.如權利要求1所述的對基于安卓平臺的設備的自動化測試系統,其特征在于,所述執行模塊包括預設于所述測試系統的存儲模塊的測試腳本。
3.如權利要求2所述的對基于安卓平臺的設備的自動化測試系統,其特征在于,所述執行模塊還包括用于執行所述測試腳本的測試工具。
4.如權利要求3所述的對基于安卓平臺的設備的自動化測試系統,其特征在于, 還包括連接于所述執行模塊的判定模塊;所述判定模塊用于判定是否驅動所述執行模塊。
5.如權利要求4所述的對基于安卓平臺的設備的自動化測試系統,其特征在于, 所述判定模塊包括指令判定單元;所述指令判定單元用于檢測是否存在輸入指令。
6.如權利要求4所述的對基于安卓平臺的設備的自動化測試系統,其特征在于, 所述測試驅動模塊還包括腳本判定單元,所述腳本判定單元用于檢測是否預設有測試腳本。
7.如權利要求5所述的對基于安卓平臺的設備的自動化測試系統,其特征在于, 所述判定模塊還包括指令刪除單元;所述指令刪除單元用于刪除已執行的測試指令。
8.如權利要求1所述的對基于安卓平臺的設備的自動化測試系統,其特征在于, 還包括分別與所述控制模塊和所述記錄模塊連接的監測模塊;所述監測模塊用于獲取所述數據記錄中的底層數據記錄,并將所述底層數據記錄發送到所述控制模塊進行測試結果判定。
9.如權利要求8所述的對基于安卓平臺的設備的自動化測試系統,其特征在于,所述底層數據記錄包括網絡協議記錄以及數字通信處理記錄。
10.一種對基于安卓平臺的設備的自動化測試方法,其特征在于,具體包括如下步驟: 步驟1.設定測試項; 步驟2.根據預設的測試腳本和所述測試項向所述設備發出測試指令,開始測試; 步驟3.根據測試的返回數據進行判斷,得出測試結果; 步驟4.重復執行所述步驟2至所述步驟3,直至所有的測試項測試完成。
11.如權利要求10所述的對基于安卓平臺的設備的自動化測試方法,其特征在于,所述步驟2中還包括: 步驟21.刪除已執行的測試指令。
12.如權利要求11所述的對基于安卓平臺的設備的自動化測試方法,其特征在于,所述步驟2中還包括: 步驟22.判定是否向被測設備發出測試指令。
13.如權利要求12所述的對基于安卓平臺的設備的自動化測試方法,其特征在于,所述步驟22中還包括: 步驟221.判定是否存在輸入指令;當存在輸入指令時,則執行輸入指令,并退出所述測試方法;否則進入步驟213; 步驟222.判定是否存在測試腳本;當不存在測試腳本時,則退出所述測試方法;否則進入步驟214 ; 步驟223.根據所述測試腳本和所述測試項向被測設備發出測試指令。
14.如權利要求10所述的對基于安卓平臺的設備的自動化測試方法,其特征在于,所述步驟3中還包括: 步驟31.實時記錄被測設備執行所述測試指令后的數據記錄; 步驟32.獲取所述數據記錄中的底層數據記錄,并對所述底層數據記錄進行測試結果判定; 步驟33.根據預設的判定規則對比所述底層數據記錄,判定測試結果。
15.如權利要求14所述的對基于安卓平臺的設備的自動化測試方法,其特征在于,所述步驟32中,所述底層數據記錄包括網絡協議記錄以及數字通信處理記錄。
【文檔編號】G06F11/36GK104424096SQ201310377214
【公開日】2015年3月18日 申請日期:2013年8月26日 優先權日:2013年8月26日
【發明者】常青, 葛瑞 申請人:展訊通信(上海)有限公司