官术网_书友最值得收藏!

1.2.1 測試流程

由于內(nèi)存測試屬于性能測試,Android系統(tǒng)又和Linux有很多相通之處,因此我們可以參考常見的Linux性能測試方法和指標(biāo),來制定客戶端性能測試方案。常見的測試方法包括Monkey/UIAutomator類的常規(guī)壓力測試、大數(shù)據(jù)/操作的峰值壓力測試、長時(shí)間運(yùn)行的穩(wěn)定性測試等。這些方法都可以疊加在內(nèi)存測試的方案中,觀察這類場景下的應(yīng)用內(nèi)存情況,經(jīng)常能夠發(fā)現(xiàn)類似內(nèi)存泄漏或OOM的問題。

參考了常見性能測試的方案,以及總結(jié)了以往對內(nèi)存性能測試的經(jīng)驗(yàn)后,我們總結(jié)出了一套進(jìn)行內(nèi)存測試的經(jīng)驗(yàn)性流程,下面介紹這個(gè)流程中的要點(diǎn)。

1. 代碼

通常用來進(jìn)行內(nèi)存測試的版本是純凈版本,不應(yīng)該附加多余的Log和調(diào)試用組件。例如有些情況下,為了測試界面延遲/函數(shù)執(zhí)行時(shí)間等性能,會加入一些樁點(diǎn)代碼。在內(nèi)存測試中這些代碼是不必要的,它們可能會分配臨時(shí)內(nèi)存,引起更多的GC,導(dǎo)致應(yīng)用出現(xiàn)運(yùn)行緩慢、卡頓等現(xiàn)象。

2. 測試場景

測試場景通常有兩類。一類是當(dāng)前有新開發(fā)或改動的某項(xiàng)功能,需要對該功能進(jìn)行性能測試。因此測試場景主要針對該功能組織,包括功能的開啟前、運(yùn)行、結(jié)束后等測試點(diǎn)。另一類是整體性能,考察應(yīng)用的常見場景,在綜合使用情況下的性能指標(biāo)。測試場景應(yīng)當(dāng)包括啟動后待機(jī),切換到后臺,執(zhí)行主要功能,以及反復(fù)執(zhí)行各功能后。

在各類場景中,經(jīng)常作為測試重點(diǎn)的有:

·包含了圖片顯示的界面。

·網(wǎng)絡(luò)傳輸大量數(shù)據(jù)。

·需要緩存數(shù)據(jù)的場景。

3. 場景轉(zhuǎn)換成用例

選取了測試場景后,用例設(shè)計(jì)也要考慮內(nèi)存測試的特點(diǎn)。一些常見的方法是:

·結(jié)合場景比較操作前后或不同版本的內(nèi)存變化。

·顯示多張圖片的前臺進(jìn)程。

·多個(gè)場景來回切換。

·長時(shí)間運(yùn)行進(jìn)程的內(nèi)存增長。

4. 執(zhí)行

由于GC和廣播機(jī)制的存在,應(yīng)用內(nèi)存通常都在不停地波動,幅度可能會達(dá)到幾百KB,因此執(zhí)行時(shí)需要考慮這種情況。在采集數(shù)據(jù)時(shí),需要多次采集并計(jì)算平均值。

執(zhí)行完成,我們就可以根據(jù)數(shù)據(jù)進(jìn)行比較初步的分析以確定方向。一方面是我們熟悉的Dalvik Heap部分,即由Java代碼直接分配的內(nèi)存,可以通過IDE直接觀察到使用情況,也可以使用MAT進(jìn)行細(xì)致的分析。

另一方面,假如我們發(fā)現(xiàn)Dalvik Heap沒怎么增長,而其他部分增長了許多,這種情況下的分析就要復(fù)雜一些,我們留待后面的章節(jié)再說。

主站蜘蛛池模板: 平乡县| 濉溪县| 罗源县| 滨州市| 全椒县| 古浪县| 阳江市| 昆山市| 岳普湖县| 连平县| 临江市| 和田县| 清远市| 环江| 团风县| 玛纳斯县| 固始县| 鹿泉市| 龙陵县| 万宁市| 丰原市| 唐海县| 南安市| 泰安市| 保康县| 措美县| 馆陶县| 新河县| 二手房| 友谊县| 炎陵县| 分宜县| 济宁市| 浏阳市| 玛纳斯县| 乌恰县| 红河县| 南乐县| 东辽县| 黔南| 思茅市|