張恩海+王鐸+于晉瑄
摘要:隨著移動互聯(lián)行業(yè)和物聯(lián)網(wǎng)的興起,應(yīng)用層軟件比之以往無論在功能還是結(jié)構(gòu)的復(fù)雜程度上都有很大的提高,隨之而來的質(zhì)量問題也大大增多。故對應(yīng)用層軟件的高效測試工作變得尤為重要。本文設(shè)計與實現(xiàn)了一種高效的自動化軟件測試系統(tǒng)。本系統(tǒng)利用云管理平臺的高性能計算能力實現(xiàn)對整個測試系統(tǒng)的監(jiān)控管理。在測試腳本編寫方面,采用流行的Python和JavaScript腳本語言,并建立了靈活安全的腳本管理系統(tǒng),適用性廣泛。測試應(yīng)用模塊,通過圖像匹配,成功兼容不同移動終端。對于測試結(jié)果,采用實時上報、分類存儲的模式。測試結(jié)果顯示,該系統(tǒng)工作良好,能夠滿足高效軟件測試的要求。
關(guān)鍵詞:智能移動終端應(yīng)用層軟件自動化測試云管理平臺
中圖分類號:TP31 文獻標識碼:A 文章編號:1672-3791(2015)01(c)-0000-00
引言
隨著4G網(wǎng)絡(luò)的快速發(fā)展,智能終端的迅速普及,數(shù)十萬的App應(yīng)用、不計其數(shù)的移動Web和HTML5的蓬勃興起,人們正在享受越來越便捷的移動互聯(lián)生活。隨著應(yīng)用的普及,用戶對App、移動Web、HTML應(yīng)用的體驗要求也越來越高,各個服務(wù)提供商在比拼客戶服務(wù)質(zhì)量時候,愈發(fā)關(guān)注用戶使用的真實體驗。Android平臺以其良好的開放性,各類基于Android的智能移動終端在快速發(fā)布。故對于Android App的開發(fā)也日趨熱門。然而各類Android App因為智能終端不能正常安裝、意外錯誤、強制退出等嚴重影響用戶體驗的缺陷越來越多[1],開發(fā)者對于全球移動設(shè)備的質(zhì)量和性能掌握甚少,App與移動設(shè)備的兼容性問題常常導(dǎo)致用戶投訴。App測試與服務(wù)質(zhì)量保障矛盾十分突出,最顯著的情況是,APP無法與移動終端有效適配,這給開發(fā)者帶去大量的損失。
1 系統(tǒng)概述
為解決上述問題,故建設(shè)基于云平臺的自動化撥測系統(tǒng),實現(xiàn)對不同應(yīng)用的功能與性能的測試,實現(xiàn)根據(jù)腳本進行的定制的功能性測試,使其具有良好的可擴展性和可重復(fù)性[2]。所謂軟件自動化測試就是執(zhí)行由某種程序設(shè)計語言編制的自動測試程序控制被測軟件的行為, 模擬手工測試步驟,完成全自動或半自動測試[3]。系統(tǒng)由兩部分組成,分別是云管理平臺和移動應(yīng)用軟件測試客戶端。云管理平臺是整個系統(tǒng)的核心,完成包括與中央平臺通信,下載測試腳本及測試任務(wù),上報測試結(jié)果,以及管理和驅(qū)動整個測試過程的任務(wù)[4];客戶端部分即是真正實現(xiàn)測試行為的部分,完成包括測試腳本解析,測試任務(wù)執(zhí)行,測試用例實現(xiàn),測試結(jié)果上報,測試日志記錄的任務(wù),并具有一定的差錯控制能力,保障整個測試過程的完整與精確。
系統(tǒng)功能架構(gòu)如下圖1所示。
圖1 自動化測試系統(tǒng)功能架構(gòu)
2 系統(tǒng)設(shè)計方案
本系統(tǒng)的設(shè)計重點就著眼于以比較小的維護代價有效地幫助用戶降低測試成本,同時提高軟件產(chǎn)品的質(zhì)量監(jiān)控,并降低測試工程師的工作強度和復(fù)雜度。
本自動化測試系統(tǒng)將分為三個部分,測試管理服務(wù)器(Test Management & Repository),測試PC客戶端(IDE & Test Runner)和智能移動設(shè)備測試代理程序(Test Agent)。系統(tǒng)覆蓋了設(shè)計開發(fā)測試腳本,測試資源(測試PC,測試設(shè)備,測試腳本和測試日志)管理,測試任務(wù)運行,測試任務(wù)管理,測試狀態(tài)監(jiān)控,測試日志管理和測試報告上報的全部測試流程。系統(tǒng)架構(gòu)如下圖2所示。
圖2 系統(tǒng)架構(gòu)圖
2.1測試管理服務(wù)器
負責(zé)管理系統(tǒng)中所有的測試資源,包括測試PC,測試設(shè)備,測試腳本和測試日志;管理測試任務(wù);監(jiān)控測試狀態(tài);發(fā)送測試報告;保存測試日志。
用戶登陸到服務(wù)器,選擇測試腳本,配置測試PC和測試設(shè)備后,創(chuàng)建測試集合,啟動自動化測試。測試進行過程中,用戶可以登陸到服務(wù)器監(jiān)控當(dāng)前的測試狀態(tài)。同時測試管理服務(wù)器將會增加測試腳本版本控制功能,幫助用戶高效的管理開發(fā)設(shè)計的測試腳本。測試集合由1個或多個測試工程組合而成,測試工程之間可以由一定邏輯關(guān)系組合而成,方便用戶自定義所需的測試集合內(nèi)容。
2.2 測試PC客戶端
由兩部分組成,IDE和Test Runner。支持Python和JavaScript兩種流行腳本引擎,監(jiān)控當(dāng)前連接的測試設(shè)備運行狀態(tài)。其中IDE為用戶提供開發(fā)設(shè)計測試腳本的環(huán)境,并同步顯示測試設(shè)備的屏幕內(nèi)容,提高用戶開發(fā)效率。Test Runner接受并運行測試管理服務(wù)器下達的測試任務(wù),同步更新測試狀態(tài)和測試日志到服務(wù)器端。
2.3 智能移動設(shè)備測試代理程序
安裝在測試設(shè)備上,負責(zé)接收測試指令,解析并執(zhí)行測試指令,返回測試結(jié)果。系統(tǒng)支持目前市場上流行的智能移動設(shè)備,包括Android、Symbian、BlackBerry和WinCE系統(tǒng)的設(shè)備,可使用USB或WIFI的通訊方式和測試PC客戶端進行數(shù)據(jù)通訊。
3 系統(tǒng)實現(xiàn)
系統(tǒng)根據(jù)測試需求的邏輯編寫測試腳本[5],可支持Python和JavaScript兩種流行腳本引擎。系統(tǒng)通過測試腳本驅(qū)動測試接口,測試設(shè)備根據(jù)測試接口執(zhí)行測試動作并回饋測試結(jié)果,并根據(jù)回饋的測試接口的執(zhí)行結(jié)果判定測試結(jié)果。同時系統(tǒng)采取分布式結(jié)構(gòu)來部署整體測試系統(tǒng),各個模塊的功能相對獨立,以通信協(xié)議方式進行聯(lián)動工作,形成高效自動化測試系統(tǒng)。本系統(tǒng)是開放式系統(tǒng),即任何符合通信協(xié)議的被測試終端都可以被此自動化測試系統(tǒng)所支持。
3.1 自動化測試腳本編寫工作流程
測試腳本編寫流程,具體分為6個步驟,每個步驟的工作描述如下。
1)用戶使用IDE進行測試腳本編寫調(diào)試工作。用戶根據(jù)測試需求和當(dāng)前的測試設(shè)備編寫調(diào)試測試腳本和錄制測試驗證點,按測試需求填寫測試數(shù)據(jù)到測試用例描述表中。
2)執(zhí)行測試腳本。IDE根據(jù)編寫好的測試腳本執(zhí)行測試腳本。
3)IDE發(fā)送測試指令到測試設(shè)備。IDE按通信協(xié)議格式發(fā)送測試指令到測試設(shè)備。
4)測試設(shè)備解析并執(zhí)行測試指令。測試設(shè)備按通信協(xié)議規(guī)則解析出測試指令并執(zhí)行測試指令。
5)測試設(shè)備回饋測試指令執(zhí)行結(jié)果。測試設(shè)備按通信協(xié)議規(guī)則打包發(fā)送測試指令的執(zhí)行結(jié)果數(shù)據(jù)。
6)IDE傳輸完成編寫調(diào)試的測試腳本工程到測試管理服務(wù)器。IDE按通信協(xié)議打包壓將完成編寫調(diào)試的測試腳本工程上傳到測試管理服務(wù)器。
3.2 自動化測試工作流程
自動化測試工作流程,具體分為8個步驟,每個步驟的工作描述如下。
1) 用戶通過測試管理服務(wù)器創(chuàng)建測試規(guī)則、測試任務(wù)、啟動測試。用戶根據(jù)已有或新建的測試規(guī)則創(chuàng)建應(yīng)用于某一測試設(shè)備的測試任務(wù)并填寫發(fā)送測試報告的郵箱地址等信息后開始這一測試任務(wù)。
2) 測試管理服務(wù)器發(fā)送測試任務(wù)數(shù)據(jù)包到測試執(zhí)行單元。測試管理服務(wù)器根據(jù)用戶創(chuàng)建的測試任務(wù)將需要測試的測試數(shù)據(jù)壓縮包發(fā)送給測試執(zhí)行單元。
3) 測試執(zhí)行單元解析測試任務(wù)數(shù)據(jù),開始測試。測試執(zhí)行單元解析出測試任務(wù)中包含的測試腳本并執(zhí)行測試腳本。
4) 測試執(zhí)行單元發(fā)送測試指令到測試設(shè)備。測試執(zhí)行單元按通信協(xié)議格式發(fā)送測試指令到測試設(shè)備。
5) 測試設(shè)備解析并執(zhí)行測試指令。測試設(shè)備按通信協(xié)議規(guī)則解析出測試指令并執(zhí)行測試指令。
6) 測試設(shè)備回饋測試指令執(zhí)行結(jié)果。測試設(shè)備按通信協(xié)議規(guī)則打包發(fā)送測試指令的執(zhí)行結(jié)果數(shù)據(jù)。
7) 測試執(zhí)行單元同步傳輸測試日志到測試管理服務(wù)器。測試執(zhí)行單元按通信協(xié)議規(guī)則打包發(fā)送測試日志到測試管理服務(wù)器。
8) 測試管理服務(wù)器展示測試日志和發(fā)送測試報告給用戶。測試管理服務(wù)器展示測試日志信息,根據(jù)測試日志信息匯總為測試報告發(fā)送給用戶指定郵箱。
4 系統(tǒng)運行結(jié)果分析
選取一些待測應(yīng)用軟件進行測試腳本的編寫,并在實體設(shè)備上進行測試。分析測試過程和測試結(jié)果可見,本自動化測試系統(tǒng)可以大大提高測試效率,降低測試成本,并將系統(tǒng)維護成本最小化。原本手動測試需要600分鐘的工作,本系統(tǒng)只需要300分鐘,且完全自動化測試,不需要人工操作,大大節(jié)省的勞工成本。
相比于目前流行測試系統(tǒng)的TestQuest[6],本系統(tǒng)可降低自動化測試腳本的維護成本,提高自動化測試腳本的重用度。下舉例說明。當(dāng)測試點的圖片發(fā)生改變時,TestQuest系統(tǒng)需重新錄制所有測試用例所需的測試點圖片;但是本系統(tǒng)只需要修改相應(yīng)的發(fā)生改變的測試點圖片匹配率即可滿足測試用例的新的要求,大大提高了自動化測試腳本的重用度。
5 總結(jié)與展望
本文針對應(yīng)用層軟件無法與移動終端有效適配的問題,設(shè)計與實現(xiàn)了移動終端應(yīng)用層軟件的自動化測試系統(tǒng),在保證移動終端軟件質(zhì)量和友好的用戶體驗的同時,大大降低了軟件工程師工作的強度和復(fù)雜度,并且起到了幫助企業(yè)降低測試成本的作用。未來可對此系統(tǒng)進行進一步的優(yōu)化,根據(jù)用戶需求的改變來適配,并推廣到更廣闊的市場中去。同時也可以考慮對測試步驟進行進一步的精簡,以使測試系統(tǒng)更加靈活簡潔。
本文所實現(xiàn)的自動化測試系統(tǒng),支持所有目前市場上流行的智能移動設(shè)備,并且覆蓋智能移動設(shè)備的軟件功能測試、軟件性能測試、設(shè)備基本功能測試等多種測試種類,應(yīng)用廣泛。隨著移動互聯(lián)網(wǎng)的飛速發(fā)展,智能終端應(yīng)用層軟件在功能和結(jié)構(gòu)上的復(fù)雜程度都大大提高了,應(yīng)用本文所提出的測試系統(tǒng)對其進行自動化測試,可大大提高軟件測試效率,故本文所提出的軟件自動化測試系統(tǒng)有較大的實際意義與設(shè)計價值。
參考文獻:
[1] 常遠. 手機軟件自動化測試的研究與實現(xiàn)[D]. 北京郵電大學(xué), 2010.
[2] FEWSTER Mark,GRAHAM Dorothy.軟件測試自動化技術(shù)[M].北京:電子工業(yè)出版社,2000.
[3]蔡建平,李金鳳.軟件測試大學(xué)教程[M].北京:清華大學(xué)出版杜,2009:240~269.
[4] 張新玲, 趙霞, 張東. 云管理平臺自動化測試框架研究[J]. 軟件導(dǎo)刊, 2013, 12(10): 15-17.
[5] 陳計喜, 姜麗紅. 自動化功能測試的方法與實現(xiàn)[J]. 計算機工程, 2005, 30(B12): 168-169.
[6]陸澄澹, 周華, 聞宏強. 淺析基于TestQuest的移動終端應(yīng)用軟件測試方法[J]. 電子世界, 2014 (16): 114-114.