高蕾
摘 要 隨著我國Android軟件產(chǎn)業(yè)發(fā)展的加快,Android軟件企業(yè)如雨后春筍般迅速增長,Android軟件產(chǎn)品層出不窮,市場對(duì)Android軟件產(chǎn)品質(zhì)量的重視程度逐漸加大,“軟件質(zhì)量”的號(hào)角開始吹響,促使Android軟件測試逐漸發(fā)展成一個(gè)獨(dú)立的產(chǎn)業(yè),先進(jìn)的軟件測試技術(shù)應(yīng)運(yùn)而生,靜態(tài)測試、動(dòng)態(tài)測試等方面涌現(xiàn)了許多優(yōu)秀的Android軟件測試技術(shù)。
【關(guān)鍵詞】動(dòng)態(tài)測試 靜態(tài)測試 自動(dòng)化測試技術(shù)
1 Android國內(nèi)外測試現(xiàn)狀
發(fā)達(dá)國家,尤其是美國,軟件測試在軟件公司占有重要地位,在谷歌,一個(gè)典型Android開發(fā)項(xiàng)目組中測試工程師數(shù)量比軟件工程師多的多,花費(fèi)在測試上的時(shí)間要比花費(fèi)在編碼上的時(shí)間多很多。在中國,1990年成立國家級(jí)中國軟件測評(píng)中心,Android行業(yè)軟件測試則起步更晚,無論是Android軟件測試?yán)碚撗芯?,還是Android測試實(shí)踐,和國外發(fā)達(dá)國家存在不小的差距。
2 常用Android測試技術(shù)分析
Android測試技術(shù)可以分為靜態(tài)測試技術(shù)和動(dòng)態(tài)測試技術(shù)。靜態(tài)測試技術(shù)是對(duì)程序源代碼的語法、結(jié)構(gòu)、接口等進(jìn)行非運(yùn)行的檢查;對(duì)軟件設(shè)計(jì)說明書、需求規(guī)格說明書等軟件周期產(chǎn)生的文檔進(jìn)行評(píng)審和驗(yàn)證。動(dòng)態(tài)軟件測試技術(shù)是對(duì)運(yùn)行程序進(jìn)行檢查、分析程序的執(zhí)行狀態(tài)和程序的外部表現(xiàn),驗(yàn)證運(yùn)行結(jié)果與預(yù)期結(jié)果的差異,分析軟件的性能等指標(biāo)。
2.1 靜態(tài)測試技術(shù)
Findbugs是一款典型的靜態(tài)測試工具,它通過檢查類或JAR文件,對(duì)字節(jié)碼與缺陷模式盡行比較,試圖檢索可能的問題,F(xiàn)indbugs可以幫助Android程序員在不運(yùn)行代碼的情況下查找代碼缺陷,并在檢測完畢后生成一份詳細(xì)的報(bào)告,統(tǒng)計(jì)代碼中存在的高優(yōu)先級(jí)報(bào)警和低優(yōu)先級(jí)報(bào)警,對(duì)所有報(bào)警進(jìn)行歸類,并進(jìn)行詳細(xì)羅列。Findbugs使用節(jié)點(diǎn)包括開發(fā)階段和維護(hù)階段。研發(fā)工程師完成獨(dú)立模塊編寫后,準(zhǔn)備模塊整合階段,通過該工具對(duì)Java文件進(jìn)行第一次掃描,用以檢測自身不易發(fā)現(xiàn)的賦值、比較和循環(huán)等錯(cuò)誤,整個(gè)項(xiàng)目組完成所有功能后,執(zhí)行第二次掃描,經(jīng)過兩輪掃描,去除掉所有典型BUG,系統(tǒng)的穩(wěn)定性會(huì)更上一層樓。所產(chǎn)生的Findbugs報(bào)告可以作為一項(xiàng)輸出文檔用于存檔,以備后續(xù)相關(guān)人員查驗(yàn)。
2.2 動(dòng)態(tài)軟件測試技術(shù)
2.2.1 Monkey
Monkey測試是Android SDK自動(dòng)化測試命令行工具,向系統(tǒng)發(fā)送偽隨機(jī)用戶數(shù)據(jù)(模擬用戶觸摸屏、按鍵輸入等)使用隨機(jī)重復(fù)的方式去對(duì)開發(fā)的應(yīng)用進(jìn)行壓力測試,Monkey測試過程中系統(tǒng)所產(chǎn)生的日志保存在Android設(shè)備數(shù)據(jù)目錄下,發(fā)生系統(tǒng)崩潰、無響應(yīng)或者強(qiáng)制關(guān)閉時(shí),分析日志文件,能夠有效幫助開發(fā)人員鎖定問題發(fā)生位置,更快找到解決辦法。Monkey命令參數(shù)組合很復(fù)雜,主要?jiǎng)澐譃槌S眠x項(xiàng)、事件選項(xiàng)、約束選項(xiàng)和調(diào)試選項(xiàng)四大類,測試人員通過配置這四大類中的參數(shù)來確定Monkey測試命令。Monkey測試所有事件都是隨機(jī)的,不帶任何人的主觀性,而且可以長時(shí)間不間斷自動(dòng)測試,在一定程度上解放了測試員的雙手。
2.2.2 UiAntomator
UiAntomator是一款主流安卓用戶界面自動(dòng)化測試框架,改革了測試人員通過點(diǎn)擊每個(gè)控件元素,對(duì)比輸出結(jié)果是否符合預(yù)期的測試方法,該框架通過自動(dòng)創(chuàng)建功能UI測試示例,允許測試工程師在一個(gè)或者多個(gè)安卓設(shè)備運(yùn)行測試程序,測試原生的安卓應(yīng)用用戶界面,測試用例可以跨越不同進(jìn)程,可以大大提高界面測試效率,這款工具要求測試工程師掌握J(rèn)ava軟件編程,需要編寫UiAntomator測試案例,通過調(diào)用UiAntomator提供的API從主界面模擬用戶操作。該框架也存在一些局限性,僅支持API16或者更高級(jí)別的版本,不能支持Web視圖測試,無法直接訪問安卓對(duì)象。
2.2.3 Robotium
Robotium是安卓之初使用最廣泛的安卓測試框架,擴(kuò)展于JUnit開源庫,提供非常強(qiáng)大的自動(dòng)化黑盒測試范例,它提供與安卓相似的框架,支持控制控件的各種API,使測試變得非常簡單。通過該框架可以編寫單元、系統(tǒng)和驗(yàn)收等測試方案,應(yīng)用非常廣泛。但是這款測試框架也存在硬傷,就是使用該框架的測試工程師要了解Android基本組件,并且該框架不能支持跨應(yīng)用測試。
3 結(jié)束語
Android軟件測試技術(shù)發(fā)展很快,但是仍然跟不上Android軟件技術(shù)發(fā)展的步伐,未來Android軟件測試仍面臨巨大挑戰(zhàn)。當(dāng)下,Android軟件測試行業(yè)正處于一個(gè)飛速發(fā)展的階段,Android軟件測試的重要性越來越得到人們的重視,相信經(jīng)過一段時(shí)間的努力,我們會(huì)逐漸縮小與國外發(fā)達(dá)國家的差距,帶動(dòng)整個(gè)Android軟件產(chǎn)業(yè)的健康發(fā)展。
參考文獻(xiàn)
[1][阿根廷]迭戈D.(Diego Torres Milano)Android應(yīng)用測試指南[M].人民郵電出版社,2016-04-01.ISBN 978-7-115-41708-4.
[2]柳純錄,黃子河,陳淥萍.軟件評(píng)測師教程[M].清華大學(xué)出版社,2005-03.ISBN 978-7-302-10536-7.