Android自動(dòng)化測(cè)試解決方案
桌面應(yīng)用程序與瀏覽器端的自動(dòng)化測(cè)試都已經(jīng)歷了十年的發(fā)展,無(wú)論是從工具上還是項(xiàng)目管理方 法論上都已經(jīng)趨于成熟。而移動(dòng)設(shè)備端應(yīng)用程序的自動(dòng)化測(cè)試近兩年才剛起步,似乎一切尚處于探討與研究階段。但我們似乎已經(jīng)看到其爆炸性的需求增長(zhǎng)勢(shì)頭??? 以從這兩方面著眼分析:其一,移動(dòng)應(yīng)用從數(shù)量上和邏輯復(fù)雜程度上的增長(zhǎng),以及產(chǎn)品發(fā)布周期的緊縮,使得快速回歸測(cè)試迫在眉睫;其二,安卓系統(tǒng)的開放性造成 硬件廠商百家爭(zhēng)鳴的局面,設(shè)備款式之多,迫使移動(dòng)應(yīng)用的兼容性測(cè)試提上日程??v觀當(dāng)前智能手機(jī)兩 大主流陣營(yíng)iPhone與Android,似乎安卓應(yīng)用開發(fā)商與設(shè)備制造商更能體會(huì)兼容性測(cè)試的切膚之痛。鑒于此,并結(jié)合傳統(tǒng)桌面系統(tǒng)上的自動(dòng)化測(cè)試經(jīng) 驗(yàn),我們?cè)诖颂接懟贏ndroid平臺(tái)應(yīng)用程序的關(guān)鍵字驅(qū)動(dòng)自動(dòng)化測(cè)試的可能性,并摸索一條適合在移動(dòng)應(yīng)用開發(fā)過(guò)程日新月異的現(xiàn)實(shí)情況中切實(shí)有效的實(shí)現(xiàn) 和實(shí)施自動(dòng)化測(cè)試的路子。
理論基礎(chǔ)
在傳統(tǒng)的桌面應(yīng)用軟件與瀏覽器端應(yīng)用的自動(dòng)化測(cè)試領(lǐng)域,已經(jīng)有相當(dāng)成熟的工具可供用戶選擇,例如商業(yè)工具HP QTP,IBM Robot/RFT,Borland SilkTest等;開源工具如Selenium,Watir等。剖析這些工具,它們似乎都有著相同的功能結(jié)構(gòu):
● 對(duì)被測(cè)應(yīng)用界面對(duì)象/界面元素的捕獲與識(shí)別,并對(duì)其進(jìn)行管理與操作;
● 對(duì)于測(cè)試腳本的編輯功能與語(yǔ)法解析功能;
● 對(duì)于測(cè)試數(shù)據(jù)的組織與管理;
● 對(duì)于腳本執(zhí)行結(jié)果的分析與輸出;
如果細(xì)說(shuō),還可以牽扯到如腳本錄制功能,插件管理功能,與測(cè)試管理工具、缺陷跟蹤工具的整合等內(nèi)容,涵蓋面相當(dāng)廣泛。但所有這些都是為了一個(gè)目的:模擬測(cè)試人員行為,達(dá)到功能性回歸測(cè)試的目的。本文嘗試從以下最關(guān)鍵的幾點(diǎn)來(lái)分析自動(dòng)化測(cè)試工具的核心構(gòu)成部分。
1、關(guān)鍵字驅(qū)動(dòng)
關(guān)鍵字測(cè)試的主要思路是以面向?qū)ο蟮姆绞絹?lái)管理被測(cè)應(yīng)用的對(duì)象、對(duì)象的相關(guān)操作、測(cè)試數(shù)據(jù)以及這些測(cè)試數(shù)據(jù)之間的組合關(guān)系。關(guān)鍵字驅(qū)動(dòng)是自動(dòng)化測(cè)試中行之有效的方式,它可以幫助測(cè)試工程師更方便的維護(hù)測(cè)試腳本、構(gòu)建復(fù)雜的業(yè)務(wù)邏輯測(cè)試用例、并節(jié)省手工測(cè)試的執(zhí)行時(shí)間(尤其是在回歸測(cè)試階段)。關(guān)鍵字驅(qū)動(dòng)主要由以下三種元素構(gòu)成:
1)被測(cè)對(duì)象,即被測(cè)應(yīng)用界面上的元素;
2)針對(duì)這些對(duì)象的操作,如點(diǎn)擊(按鈕)、填充(文字)、選擇(單選框/多選框);
3)以及基于這些操作的數(shù)值;
上述三種元素可以描述為以下表格:
對(duì)象 |
操作 |
數(shù)值 |
文本框 |
輸入 |
文本值 |
按鈕 |
點(diǎn)擊 |
無(wú) |
選擇框 |
選擇 |
選項(xiàng)值 |
或者以面向?qū)ο蟮奈姆ū硎鰹椋?/p>
對(duì)象.操作(值)
該語(yǔ)句是關(guān)鍵字驅(qū)動(dòng)腳本的構(gòu)成基礎(chǔ)。
2、對(duì)象庫(kù)
對(duì)象庫(kù)是用于儲(chǔ)存被測(cè)應(yīng)用程序界面對(duì)象(界面元素)的地方。它是關(guān)鍵字驅(qū)動(dòng)測(cè)試工具的關(guān)鍵點(diǎn)。有了它,用戶可以更容易的維護(hù)被測(cè)對(duì)象、更快速的構(gòu)建測(cè)試腳本。它是如何做到這些的呢?讓我們看看下面的結(jié)構(gòu):
探討完上述關(guān)于不同測(cè)試工具的使用特點(diǎn),更準(zhǔn)確的說(shuō),是安卓應(yīng)用自動(dòng)化測(cè)試工具的特點(diǎn),我們不妨來(lái)實(shí)踐(其實(shí)是模擬)一個(gè)移動(dòng)應(yīng)用的測(cè)試過(guò)程。這里我們選用API Demo作為被測(cè)應(yīng)用,選用DroidPilot作為測(cè)試工具。
分析被測(cè)應(yīng)用
被測(cè)應(yīng)用API Demo使用標(biāo)準(zhǔn)Android SDK作為開發(fā)控件,且被測(cè)應(yīng)用未加擾碼,因此,界面上所有元素可以被DroidPilot識(shí)別。
對(duì)于一些非標(biāo)準(zhǔn)Android SDK控件開發(fā)的應(yīng)用,這里有兩種情況:一種情況控件完全由自己開發(fā),如果是這種情況,DroidPilot完全無(wú)法識(shí)別對(duì)象;另一種情況是在標(biāo)準(zhǔn)控件基 礎(chǔ)上做了二次開發(fā),這樣的話DroidPilot只能識(shí)別到原生SDK那一層。對(duì)于這兩種情況,都可以聯(lián)系DroidPilot開發(fā)團(tuán)隊(duì)為非標(biāo)準(zhǔn)控件度身 定制專屬插件,用于識(shí)別被測(cè)控件。
對(duì)于擾碼問(wèn)題,正如上述《前置條件》章節(jié)所描述的,DroidPilot本身是無(wú)能為力的,只能請(qǐng)開發(fā)團(tuán)隊(duì)去掉擾碼,打包一個(gè)不加擾碼的測(cè)試包給測(cè)試團(tuán)隊(duì)使用了。
設(shè)計(jì)測(cè)試用例
這里我們假設(shè)一個(gè)測(cè)試用例是進(jìn)入\App\Activity\Animation\Fade in\界面,對(duì)界面的元素(按鈕、文本框、多選框、單選框、下拉列表)進(jìn)行操作,并驗(yàn)證文本框的文字是否符合我的預(yù)期結(jié)果。測(cè)試步驟如下:
測(cè)試用例1 -驗(yàn)證\App\Activity\Animation\Fade in\界面元素 |
||
前置條件:API Demo已經(jīng)啟動(dòng),停留在起始頁(yè) |
||
步驟 |
動(dòng)作 |
期望結(jié)果 |
1 |
點(diǎn)擊App項(xiàng) |
|
|
點(diǎn)擊Activity項(xiàng) |
|
|
點(diǎn)擊Animation項(xiàng) |
|
|
點(diǎn)擊Fade in項(xiàng) |
|
|
在文本框輸入"put your text here" |
|
|
勾選Checkbox1 |
|
|
向下滑動(dòng)一次屏幕 |
|
|
點(diǎn)擊下拉框 |
|
|
勾選Venus |
|
|
檢查文本框 |
文字="textColorPrimary" |
開發(fā)測(cè)試腳本
先使用DroidPilot腳本編輯工具抓取各個(gè)屏幕的對(duì)象,然后把這些對(duì)象選入腳本設(shè)計(jì)器,按照測(cè)試用例的順序來(lái)排列,如下圖:
如下圖,傳統(tǒng)模式,測(cè)試工程師可能在第一輪測(cè)試才有一次Full Test,在后續(xù)的回歸測(cè)試中,可能只能做到部分回歸。
如果引入自動(dòng)化測(cè)試工程師,同步開發(fā)測(cè)試腳本(理想情況,每個(gè)應(yīng)用自動(dòng)化比率達(dá)到70%~80%,整體自動(dòng)化比率達(dá)到60%~70%),有可能使得回歸測(cè)試比率有所提高。
從零做起
既然如此,何不從現(xiàn)在開始,從零開始,在項(xiàng)目中嘗試引入自動(dòng)化測(cè)試,哪怕只是抽調(diào)部分人力著手部分應(yīng)用的自動(dòng)化測(cè)試,至少可以達(dá)到Daily Build Smoke Test的效果。再者,移動(dòng)應(yīng)用自動(dòng)化測(cè)試行業(yè)正處于起步階段,此時(shí)介入也不失為一個(gè)好時(shí)機(jī)。
結(jié)論
回顧上述討論的內(nèi)容,我們?cè)O(shè)想能在移動(dòng)應(yīng)用自動(dòng)化測(cè)試領(lǐng)域延續(xù)桌面系統(tǒng)自動(dòng)化測(cè)試的成功經(jīng)驗(yàn),從理論基礎(chǔ)、工具支持、以及后續(xù)項(xiàng)目管理方面都做了一番探討。盡管主要還是局限于安卓應(yīng)用的自動(dòng)化方面,對(duì)于iOS提及較少。不難理解,iOS本身支持的機(jī)型有限,對(duì)于設(shè)備 兼容性測(cè)試并不是重點(diǎn)關(guān)注的內(nèi)容。而在功能性回歸測(cè)試方面,它本身也有相關(guān)工具支持。至于像Blackberry之類的平臺(tái),因?yàn)楸旧聿](méi)有呈現(xiàn)爆炸性的 應(yīng)用增長(zhǎng),所以也沒(méi)有列在討論范圍。所以,本文仍以安卓平臺(tái)作為自動(dòng)化測(cè)試的突破口,希望從中能結(jié)合市面上的一些商用工具,嘗試實(shí)踐以“關(guān)鍵字驅(qū)動(dòng)”為基 礎(chǔ)的自動(dòng)化測(cè)試,而非原始的以“坐標(biāo)點(diǎn)”為基礎(chǔ)的屏幕點(diǎn)擊測(cè)試。對(duì)于開源工具也沒(méi)有提及,原因是考慮到像Robotium和MonkeyRunner之類 的流行工具可能更貼近于開發(fā)工程師使用,而非更貼近于測(cè)試工程師。所以,我們希望在上述的討論中能帶給讀者在測(cè)試項(xiàng)目中新的啟發(fā)。