軍規(guī)十二 重點測試高內(nèi)存占用的功能
移動設(shè)備的內(nèi)存是有限的菠隆,而用戶以及App希望數(shù)據(jù)的欲望是無止境的辈毯,所以這些有限的內(nèi)存終究會被App消耗完。雖然隨著Android和iOS操作系統(tǒng)的升級和完善,對于App內(nèi)存的限制也更加清晰和合理了扁达。但是測試人員在設(shè)計和測試App的時候還是需要根據(jù)這些限制條件來更好地指導(dǎo)測試掌敬。
1惯豆,iOS操作系統(tǒng)的內(nèi)存管理機制以及對App使用內(nèi)存的限制是很不透明的
由于iOS上并沒有真正的多任務(wù),也沒有swap機制奔害,所以iOS操作系統(tǒng)在內(nèi)存不足時會先對App進(jìn)行內(nèi)存占用預(yù)警楷兽,如果App持續(xù)消耗內(nèi)存直到iOS操作系統(tǒng)允許的最大值,iOS會直接“殺掉”App進(jìn)程华临。
測試人員可以使用App所支持的iOS設(shè)備總內(nèi)存最小的設(shè)備芯杀,使用Xcode來檢查App對內(nèi)存的使用是否超出了限制,盡量減少App對內(nèi)存的不必要使用雅潭,順便檢查App是否有內(nèi)存泄漏揭厚。
打開Xcode,Xcode中的Open Developer Tool里有Instruments扶供。在Instruments中打開進(jìn)程監(jiān)控工具Activity Monitor筛圆。
選擇需要監(jiān)控的App,從所有進(jìn)出中篩選出需要顯示信息的App進(jìn)程椿浓。此外太援,還可以通過iOS Simulator的模擬內(nèi)在報警(“Simulate Memory Warning”)來測試App在設(shè)備內(nèi)存不足時會做出什么樣的處理漾岳。
在真實設(shè)備上安裝App,從App的特性出發(fā)粉寞,進(jìn)行需要大量使用內(nèi)存的操作尼荆,也可以進(jìn)行內(nèi)存使用量的測試。
2唧垦,Android操作系統(tǒng)的內(nèi)存管理機制更加透明捅儒,對App使用內(nèi)存的限制也更加靈活
在不同Android設(shè)備上,每個App可以使用的內(nèi)存量是不同的振亮,測試人員可以通過打開/system/build.prop文件來查看App最大可用Dalvik內(nèi)存大小是多少巧还。
軍規(guī)十三 降低流量和電量消耗
流量和電量的使用,不是App直接提供的功能坊秸,但是會影響到用戶使用App時的體驗麸祷,所以我們在測試App的過程中也是需要關(guān)注的。
1褒搔,測試App安裝文件的大小和安裝過程
App公司在2015年2月12日已經(jīng)提升App的最大容量至4GB阶牍,但是仍然維持通過OTA方式下載App的容量限制為100MB。與iOS操作系統(tǒng)類似星瘾,Android操作系統(tǒng)允許App使用的最大存儲空間是2*2GB+50MB走孽,即兩個2GB的apk擴展文件和apk安裝文件本身最大可以使用的50MB。雖然Android操作系統(tǒng)沒有限制用戶通過數(shù)據(jù)網(wǎng)絡(luò)可下載的最大App的大小琳状,但是apk安裝文件本身的局限磕瓷,App不會超過50MB。
如果App的安裝文件相對較小念逞,而App所需要的資料文件很多的情況困食,一般App都會要求用戶在第一次打開App時下載資源文件,否則就不能使用App翎承。在App下載資源文件的過程中硕盹,測試人員需要考慮測試在下載過程中設(shè)備是否會鎖屏(自動或手動),解鎖后App下載的資源是否會保留审洞,以及重新打開在下載資源文件中被關(guān)閉打App是否可以斷點續(xù)傳這些場景莱睁。
對于iOS操作系統(tǒng)待讳,由于對App管理機制比較特殊芒澜,一般情況下,App在鎖屏后10min之內(nèi)就會被切換到后臺创淡,導(dǎo)致下載操作也會停止痴晦,這時App下載資源文件就會出現(xiàn)錯誤。
2琳彩,測試App占用的存儲空間
通過對占用存儲空間進(jìn)行測試誊酌,可以避免App存儲過多的資源文件而導(dǎo)致用戶設(shè)備上存儲占用空間過大的問題部凑。可以通過系統(tǒng)自帶的App占用數(shù)據(jù)空間的統(tǒng)計功能可以用來查看App占用的存儲大小碧浊。
3涂邀,測試App的流量消耗
測試人員需要關(guān)注App的流量消耗,在這方面iOS和Android操作系統(tǒng)本身提供了不少工具可供使用箱锐。
4比勉,測試App對于設(shè)備電量的消耗
測試人員可以通過系統(tǒng)自帶的工具來查看App的電量消耗。
軍規(guī)十四 增量升級必不可少
絕大多數(shù)的App為了給用戶帶來新的功能和體驗都會選擇持續(xù)更新App驹止。用戶進(jìn)行App升級通常采用的是增量安裝活著覆蓋安裝的方式浩聋,而不會先刪除App再進(jìn)行全新安裝。
我們可以針對全新安裝的App進(jìn)行重點測試臊恋,而針對App的升級可以進(jìn)行冒煙測試衣洁,或者對改變的功能進(jìn)行有重點的測試。
需要注意的細(xì)節(jié)有:
1抖仅,在App升級之前登錄的用戶信息在App升級之后是否顯示正常坊夫;
2,如果App中有內(nèi)購的功能撤卢,需要保證用戶在之前版本App購買的商品在新的App版本中可以同樣適用践樱;
3,App升級涉及到的數(shù)據(jù)庫結(jié)構(gòu)變化時凸丸,需要確定升級后保存升級之前的數(shù)據(jù)庫中的數(shù)據(jù)顯示正常拷邢;
4,保證App升級后功能和顯示正常的同時屎慢,也需要保證App升級之前版本的功能和顯示正常瞭稼。
不僅App的升級需要進(jìn)行測試,對于App的刪除也同樣需要測試腻惠。例如环肘,如果用戶在刪除App并再次安裝時發(fā)現(xiàn)App能夠自動登錄,會感覺到App的安全性不足集灌。因此悔雹,需要測試App的刪除,保證用戶信息欣喧,緩存文件不會泄漏腌零。
測試人員還需要測試App數(shù)據(jù)的刪除,如用戶清楚App的緩存唆阿,用戶清楚App的數(shù)據(jù)等益涧。
軍規(guī)十五 確保成功集成和調(diào)用第三方App
如果App不具備分享功能,沒有外部鏈接驯鳖,沒有集成廣告闲询,不可能使用社交媒體賬號登錄久免,沒有使用推送服務(wù),不需要關(guān)聯(lián)其他文件扭弧,App幾乎就沒有和別的App交互的可能阎姥。測試人員需要注意的是:
1,App對第三方App的直接集成鸽捻,如微信“我的錢包”里的滴滴打車丁寄、京東等;
2泊愧,測試App的分享功能伊磺,確保App的內(nèi)容可以被正確地分享到別的App中;
3删咱,測試App顯示外部鏈接的功能屑埋;
4,測試免費App中集成廣告的功能痰滋;
5摘能,測試App使用社交媒體等賬號登錄的功能;
6敲街,測試App的推送服務(wù)团搞;
7,測試App關(guān)聯(lián)其他文件的功能多艇;
8逻恐,測試App和輸入法等App交互功能。
軍規(guī)十六 盡量不使用非標(biāo)準(zhǔn)空間
如果想App支持某種特性峻黍,可是操作系統(tǒng)并沒有提供這種特性复隆,開發(fā)人員可能自己設(shè)計控件,或者使用第三方庫來實現(xiàn)這個功能姆涩。當(dāng)iOS操作系統(tǒng)更新時挽拂,操作系統(tǒng)只會保證更新的代碼對原生代碼的兼容性,而不會保證對第三方的代碼實現(xiàn)和類庫的兼容性骨饿。因此亏栈,在使用第三方的類庫時,需要注意以下幾個問題:
1宏赘,第三方類庫的兼容性問題绒北;
2,第三方類庫的性能問題置鼻;
3镇饮,第三方類庫的維護(hù)問題蜓竹;
最好的方式就是在一開始就盡量少地使用自定義控件和第三方控件以及類庫箕母,盡量使用操作系統(tǒng)原生的控件和代碼來實現(xiàn)App的功能储藐。當(dāng)然也不可能完全不使用自定義的控件和第三方控件或類庫,因此測試人員要注意新的操作系統(tǒng)版本對這些特性的支持嘶是,可以采用自動化測試來保證相應(yīng)的功能钙勃,更麻煩的是手動執(zhí)行回歸測試。
軍規(guī)十七 提前關(guān)注操作系統(tǒng)的升級
每當(dāng)iOS和Android操作系統(tǒng)升級新的版本聂喇,尤其是大版本的升級時辖源,總是會帶給用戶很多新的功能。因此希太,測試人員要對新的操作系統(tǒng)的新特性進(jìn)行了解克饶,并在測試過程中注意系統(tǒng)升級對App的影響。
軍規(guī)十八 盡量減少依賴
如果App的依賴越多誊辉,出現(xiàn)問題和錯誤的可能性也就越大矾湃,要解決問題付出的成本越多。因此堕澄,要進(jìn)來減少App的依賴邀跃。減少依賴可以從App的系統(tǒng)架構(gòu)入手。
1蛙紫,既有Web版本又有App版本的App
很多App開發(fā)時都已經(jīng)先有了Web的版本拍屑,如果只是把Web的內(nèi)容展示在移動設(shè)備上,就會讓App很多功能依賴于Web事先實現(xiàn)的方式坑傅。但是App屏幕大小僵驰,設(shè)備性能,網(wǎng)絡(luò)環(huán)境等都與桌面環(huán)境有很大的差異唁毒,如果單純在App上使用Web的service矢渊,很有可能造成App性能和樣式出現(xiàn)問題。
測試人員首要分析已有Web的service使用在App上枉证,哪些場景會正常使用矮男,哪些場景會有性能和樣式的問題;其次室谚,選擇在App上直接食用可能會出現(xiàn)問題的那些Web service來實現(xiàn)獨立的service毡鉴。
系統(tǒng)架構(gòu)的設(shè)計并不是測試人員負(fù)責(zé)忿危,但是測試人員有必要對App使用場景和需要用到的具體service足夠熟悉瘸右。
2,沒有Web版本的App也需要注意依賴問題
App基本是用來展示數(shù)據(jù)的富岳,真實的操作時后臺的服務(wù)器和數(shù)據(jù)庫來實現(xiàn)入篮,前臺App和后臺服務(wù)器是通過service的形式交換數(shù)據(jù)的陈瘦。App是沒有辦法避免對后臺服務(wù)器的依賴,因此需要對service進(jìn)行API和集成測試潮售,以確保這些service的可用性和準(zhǔn)確性痊项,尤其是前端和后臺的開發(fā)團(tuán)隊不同時锅风。測試人員在此需要對service測試隔離后臺服務(wù)器的變化對App產(chǎn)生的影響,這也極大的簡化了測試的復(fù)雜性鞍泉。