本發(fā)明屬于數(shù)據(jù)處理領(lǐng)域,尤其涉及一種頁面開啟耗時的測試方法及測試系統(tǒng)。
背景技術(shù):
使用瀏覽器訪問互聯(lián)網(wǎng),是計算機(jī)網(wǎng)絡(luò)技術(shù)的基礎(chǔ)應(yīng)用之一。諸多第三方應(yīng)用,如社交軟件、直播軟件、游戲軟件等,都是基于瀏覽器提供的頁面進(jìn)行數(shù)據(jù)的請求和訪問。因此,在第三方應(yīng)用進(jìn)行設(shè)計與開發(fā)時,對網(wǎng)頁的響應(yīng)性能進(jìn)行測試,都是非常重要的環(huán)節(jié)。
傳統(tǒng)的響應(yīng)性能測試方案,常見如系統(tǒng)調(diào)試信息和錄屏分幀。其中,系統(tǒng)調(diào)試信息,指系統(tǒng)會記錄每個組件(activity)的打開時間,并通過調(diào)試(androiddebugbridge,adb)命令來獲取該時間(thistime),比如輸出thistime:882。錄屏分幀,需要先錄制頁面打開過程的視頻,然后再把視頻按照一定時間間隔(假設(shè)時間間隔為t)分成一個一個的圖片,再從分得的圖片中,找出整個頁面打開過程的圖片數(shù)n,那么整個頁面的打開耗時為n*(t-1)。
傳統(tǒng)技術(shù)的缺點在于:系統(tǒng)調(diào)試信息,過于依賴于頁面的實現(xiàn)方式,只能統(tǒng)計組件開啟的頁面,而無法統(tǒng)計通過網(wǎng)頁視窗(webview)開啟的頁面,具有很大的局限性。錄屏分幀,需要每次錄制視屏再分幀,非常消耗系統(tǒng)資源,計算過程復(fù)雜,且統(tǒng)計效率低。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種頁面開啟耗時的測試方法及測試系統(tǒng),旨在提高測試效率,降低對系統(tǒng)資源的消耗,且不受頁面實現(xiàn)方式的限制。
為解決上述技術(shù)問題,本發(fā)明實施例提供以下技術(shù)方案:
一種頁面開啟耗時的測試方法,包括:
根據(jù)頁面測試指令,獲取并緩存頁面的初始像素數(shù)組,并獲取初始像素數(shù)組對應(yīng)的獲取時間,以生成為第一時間戳;
每隔預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組,直到所述當(dāng)前像素數(shù)組與當(dāng)前像素數(shù)組的前一像素數(shù)組中的像素值完全相同,并獲取當(dāng)前像素數(shù)組對應(yīng)的獲取時間,以生成第二時間戳;以及
通過第一時間戳和第二時間戳生成頁面開啟耗時。
為解決上述技術(shù)問題,本發(fā)明實施例還提供以下技術(shù)方案:
一種頁面開啟耗時的測試系統(tǒng),包括:
初始模塊,用于根據(jù)頁面測試指令,獲取并緩存頁面的初始像素數(shù)組,并獲取初始像素數(shù)組對應(yīng)的獲取時間,以生成為第一時間戳;
間隔模塊,用于每隔預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組,直到所述當(dāng)前像素數(shù)組與當(dāng)前像素數(shù)組的前一像素數(shù)組中的像素值完全相同,并獲取當(dāng)前像素數(shù)組對應(yīng)的獲取時間,以生成第二時間戳;以及
耗時模塊,用于通過第一時間戳和第二時間戳生成頁面開啟耗時。
本發(fā)明實施例提供的頁面開啟耗時的測試方法及測試系統(tǒng),基于幀緩沖區(qū)(framebuffer)技術(shù),獲取頁面的像素數(shù)組從觸發(fā)到穩(wěn)定不變所需的時間,進(jìn)而計算頁面開啟耗時,不僅操作簡單,對系統(tǒng)資源的消耗低,且測試速度快,不受頁面實現(xiàn)方式等因素的限制,具有良好的兼容性。
附圖說明
下面結(jié)合附圖,通過對本發(fā)明的具體實施方式詳細(xì)描述,將使本發(fā)明的技術(shù)方案及其它有益效果顯而易見。
圖1是本發(fā)明實施例提供的頁面開啟耗時的測試方法的流程示意圖;
圖2是本發(fā)明實施例提供的頁面開啟耗時的測試方法的另一流程示意圖;
圖3是本發(fā)明實施例提供的像素數(shù)組的數(shù)據(jù)結(jié)構(gòu)示意圖;
圖4是本發(fā)明實施例提供的頁面開啟耗時的測試系統(tǒng)的模塊示意圖;
圖5是本發(fā)明實施例提供的頁面開啟耗時的測試系統(tǒng)的另一模塊示意圖;
圖6是本發(fā)明實施例提供的頁面開啟耗時的測試方法及測試系統(tǒng)的硬件環(huán)境示意圖。
具體實施方式
請參照圖式,其中相同的組件符號代表相同的組件,本發(fā)明的原理是以實施在一適當(dāng)?shù)倪\算環(huán)境中來舉例說明。以下的說明是基于所例示的本發(fā)明具體實施例,其不應(yīng)被視為限制本發(fā)明未在此詳述的其它具體實施例。
在以下的說明中,本發(fā)明的具體實施例將參考由一部或多部計算機(jī)所執(zhí)行的步驟及符號來說明,除非另有述明。因此,這些步驟及操作將有數(shù)次提到由計算機(jī)執(zhí)行,本文所指的計算機(jī)執(zhí)行包括了由代表了以一結(jié)構(gòu)化型式中的數(shù)據(jù)的電子信號的計算機(jī)處理單元的操作。此操作轉(zhuǎn)換該數(shù)據(jù)或?qū)⑵渚S持在該計算機(jī)的內(nèi)存系統(tǒng)中的位置處,其可重新配置或另外以本領(lǐng)域技術(shù)人員所熟知的方式來改變該計算機(jī)的運作。該數(shù)據(jù)所維持的數(shù)據(jù)結(jié)構(gòu)為該內(nèi)存的實體位置,其具有由該數(shù)據(jù)格式所定義的特定特性。但是,本發(fā)明原理以上述文字來說明,其并不代表為一種限制,本領(lǐng)域技術(shù)人員將可了解到以下所述的多種步驟及操作亦可實施在硬件當(dāng)中。
本文所使用的術(shù)語「模塊」、「單元」可看做為在該運算系統(tǒng)上執(zhí)行的軟件對象。本文所述的不同組件、模塊、引擎及服務(wù)可看做為在該運算系統(tǒng)上的實施對象。而本文所述的裝置及方法優(yōu)選的以軟件的方式進(jìn)行實施,當(dāng)然也可在硬件上進(jìn)行實施,均在本發(fā)明保護(hù)范圍之內(nèi)。
請參閱圖1,圖1是本發(fā)明實施例提供的頁面開啟耗時的測試方法的流程示意圖。所述測試方法可應(yīng)用各類操作系統(tǒng)的頁面,如linux系統(tǒng)、安卓系統(tǒng)、或蘋果系統(tǒng)。
所述頁面開啟耗時的測試方法,包括如下步驟:
在步驟s101中,根據(jù)頁面測試指令,獲取并緩存頁面的初始像素數(shù)組,并獲取初始像素數(shù)組對應(yīng)的獲取時間,以生成為第一時間戳。
具體而言,本步驟根據(jù)頁面測試指令,從幀緩沖區(qū)(framebuffer)中讀取初始像素數(shù)組。
所述幀緩沖區(qū),用于緩存完整的幀數(shù)據(jù),以便視頻輸出設(shè)備對視頻顯示設(shè)備進(jìn)行驅(qū)動。以linux系統(tǒng)為例,幀緩沖區(qū)被默認(rèn)在/dev/graphics/fb0路徑下。所述幀數(shù)據(jù),是每一靜止畫面的像素點的數(shù)據(jù),以數(shù)組形式進(jìn)行展現(xiàn)。
可以理解的是,所述第一時間戳(timestamp)t1,即為測試開始的時間。
在步驟s102中,每隔預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組,直到所述當(dāng)前像素數(shù)組與當(dāng)前像素數(shù)組的前一像素數(shù)組中的像素值完全相同,并獲取當(dāng)前像素數(shù)組對應(yīng)的獲取時間,以生成第二時間戳。
具體而言,本步驟可執(zhí)行為:
(1)在預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組。
其中,所述時間間隔的設(shè)置,取決于顯示屏幕的刷新頻率。以目前手機(jī)常用的刷新頻率為每秒60次為例,即,每幀的間隔為16.7毫秒。在本步驟中,可將時間間隔設(shè)置為16.7毫秒,既可以保障每次屏幕的變化,又不會因為更新頻率太高而消耗系統(tǒng)資源。
(2)對比所述當(dāng)前像素數(shù)組與當(dāng)前像素數(shù)組的前一像素數(shù)組中的像素值完全相同。
可以理解的是,如果顯示屏幕變化,則幀緩沖區(qū)中的幀數(shù)據(jù)必然會發(fā)生變化;相反,如果顯示屏幕沒有變化,那么幀緩沖區(qū)中的幀數(shù)據(jù)也是不變的。因此,在本步驟中,通過對比當(dāng)前緩存的像素數(shù)組是否與之前緩存的像素數(shù)組發(fā)生變化,來確定網(wǎng)頁是否完全打開。
其中,當(dāng)完全相同時執(zhí)行步驟(3),當(dāng)不完全相同時執(zhí)行步驟(4)。
(3)獲取當(dāng)前像素數(shù)組對應(yīng)的獲取時間,以生成第二時間戳。
可以理解的是,在當(dāng)前像素數(shù)組與其前一像素數(shù)組中的像素值全部相同時,表示網(wǎng)頁已全部打開,則記錄當(dāng)前的時間作為第二時間戳t2。
(4)將所述當(dāng)前像素數(shù)組更新為前一像素數(shù)組,并返回執(zhí)行步驟(2),直至生成第二時間戳。
舉例而言,比如:獲取初始像素數(shù)組,并生成第一時間戳t1;在第一個時間間隔內(nèi)獲取第二像素數(shù)組,對比結(jié)果為第二像素數(shù)組與初始像素數(shù)組不同;在第二個時間間隔內(nèi)獲取第三像素數(shù)組,對比結(jié)果為第三像素數(shù)組與第二像素數(shù)組相同,則根據(jù)獲取第三像素數(shù)組的時間生成第二時間戳t2。
在步驟s103中,通過第一時間戳和第二時間戳生成頁面開啟耗時。
具體而言,頁面開啟耗時(t)=第二時間戳(t2)-第一時間戳(t1)。
可以理解的是,每隔預(yù)設(shè)時間間隔t0,才讀取一次像素數(shù)組。因此計算的頁面開啟耗時與實際的頁面開啟耗時相比,會存在一定的計算誤差。但計算誤差會被控制在預(yù)設(shè)時間間隔之內(nèi)。但由于時間間隔通常會非常小,比如10-20毫秒,因此可被忽略不計。
本發(fā)明實施例提供的頁面開啟耗時的測試方法,基于幀緩沖區(qū)技術(shù),獲取頁面的像素數(shù)組從測試觸發(fā)到穩(wěn)定不變所需的時間,進(jìn)而計算頁面開啟耗時,不僅操作簡單,對系統(tǒng)資源的消耗低,且測試速度快,不受頁面實現(xiàn)方式等因素的限制,具有良好的兼容性。
請參閱圖2,圖2是本發(fā)明實施例提供的頁面開啟耗時的測試方法的另一流程示意圖。所述測試方法可應(yīng)用各類操作系統(tǒng)的頁面,如linux系統(tǒng)、安卓系統(tǒng)、或蘋果系統(tǒng)。
所述頁面開啟耗時的測試方法,包括如下步驟:
在步驟s201中,根據(jù)頁面測試指令,從幀緩沖區(qū)獲取并緩存頁面的初始像素數(shù)組。
具體而言,本步驟包括:
(1)接收頁面測試指令。
(2)響應(yīng)所述頁面測試指令,以獲取顯示屏幕的分辨率、和刷新頻率。
其中,所述分辨率包括水平像素數(shù)和垂直像素數(shù),所述分辨率用于確定初始像素數(shù)組的數(shù)據(jù)格式??梢岳斫獾氖?,首先,可以所述根據(jù)分辨率確定頁面的像素個數(shù),通常是分辨率與像素個數(shù)為1:1的關(guān)系;并進(jìn)一步確定像素數(shù)組的格式。
請參閱圖3,所示為像素數(shù)組的數(shù)據(jù)結(jié)構(gòu)示意圖。其中,幀緩沖區(qū)32的幀數(shù)據(jù)與手機(jī)31的顯示屏幕上的像素值的一一對應(yīng)。以分辨率為480*800的手機(jī)31來說,幀緩沖區(qū)32就是一個480*800的數(shù)組。其中,像素值是用32位的整數(shù)表示。
其中,所述刷新頻率用于決定時間間隔,即根據(jù)所述刷新頻率計算時間間隔,并將所述時間間隔作為預(yù)設(shè)時間間隔。比如,目前手機(jī)常用的刷新頻率為每秒60次??蓪⒐皆O(shè)置為:時間間隔=1/刷新頻率,則計算時間間隔后,約為16.7毫秒。如此既可以保障每次屏幕的變化,又不會因為更新頻率太高而消耗系統(tǒng)資源。
(3)按照所述數(shù)據(jù)格式,從幀緩沖區(qū)獲取并緩存頁面的初始像素數(shù)組。
所述幀緩沖區(qū),用于緩存完整的幀數(shù)據(jù),以便視頻輸出設(shè)備對視頻顯示設(shè)備進(jìn)行驅(qū)動。以linux系統(tǒng)為例,幀緩沖區(qū)被默認(rèn)在/dev/graphics/fb0路徑下。所述幀數(shù)據(jù),是每一靜止畫面的像素點的數(shù)據(jù),以數(shù)組形式進(jìn)行展現(xiàn)。
在步驟s202中,獲取初始像素數(shù)組對應(yīng)的獲取時間,以生成為第一時間戳。
可以理解的是,所述第一時間戳t1,即為測試開始的時間。
在步驟s203中,在預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組。
在步驟s204中,對比所述當(dāng)前像素數(shù)組與當(dāng)前像素數(shù)組的前一像素數(shù)組中的像素值完全相同。
可以理解的是,如果顯示屏幕變化,則幀緩沖區(qū)中的幀數(shù)據(jù)必然會發(fā)生變化;相反,如果顯示屏幕沒有變化,那么幀緩沖區(qū)中的幀數(shù)據(jù)也是不變的。因此,在本步驟中,通過對比當(dāng)前緩存的像素數(shù)組是否與之前緩存的像素數(shù)組發(fā)生變化,來確定網(wǎng)頁是否完全打開。
當(dāng)完全相同時,執(zhí)行步驟s205;當(dāng)不完全相同時,執(zhí)行步驟s206。
在步驟s205中,獲取當(dāng)前像素數(shù)組對應(yīng)的獲取時間,以生成第二時間戳。
可以理解的是,當(dāng)初始像素數(shù)組與第二像素數(shù)組中的像素值全部相同時,表示網(wǎng)頁已打開,記錄當(dāng)前的時間作為第二時間戳t2。
在步驟s206中,將所述當(dāng)前像素數(shù)組更新為前一像素數(shù)組,并返回步驟s203,直至生成第二時間戳。
舉例而言,比如:獲取初始像素數(shù)組,并生成第一時間戳t1;在第一個時間間隔內(nèi)獲取第二像素數(shù)組,對比第二像素數(shù)組與初始像素數(shù)組中的像素值,對比結(jié)果為全部或部分不同;在第二個時間間隔內(nèi)繼續(xù)獲取第三像素數(shù)組,對比第三像素數(shù)組與第二像素數(shù)組中的像素值,對比結(jié)果為全部相同,則將獲取第三像素數(shù)組的時間,作為第二時間戳t2。
在步驟s207中,通過第一時間戳、第二時間戳、和時間間隔,生成頁面開啟耗時。
具體而言,本步驟包括:
(1)計算所述第二時間戳(t2)和所述第一時間戳(t1)的差值,得到所述頁面開啟耗時(t),即t=t2-t1。
(2)標(biāo)注計算誤差,所述計算誤差在所述預(yù)設(shè)時間間隔t0之內(nèi)。
可以理解的是,每隔預(yù)設(shè)時間間隔t0,才讀取一次像素數(shù)組。因此計算的頁面開啟耗時與實際的頁面開啟耗時相比,會存在一定的計算誤差。但計算誤差會被控制在預(yù)設(shè)時間間隔之內(nèi)。但由于時間間隔通常會非常小,比如10-20毫秒,因此可被忽略不計。
在步驟s208中,判斷所述頁面開啟耗時是否小于標(biāo)準(zhǔn)耗時。
可以理解的是,用戶對于不同類型的應(yīng)用,其可接受的等待時間不同,因此,標(biāo)準(zhǔn)耗時會因應(yīng)用類型的不同而有所差異。比如,以社交類第三方應(yīng)用為例,經(jīng)過測試得知,用戶的可接受的等待時間為1分鐘,則將標(biāo)準(zhǔn)耗時設(shè)置為1分鐘。
其中,若所述頁面開啟耗時小于所述標(biāo)準(zhǔn)耗時,則執(zhí)行步驟s209;若所述頁面開啟耗時不小于所述標(biāo)準(zhǔn)耗時,則執(zhí)行步驟s210。
在步驟s209中,輸出測試通過。
在步驟s210中,輸出測試失敗。
可以理解的是,無論是新應(yīng)用上線之前、還是應(yīng)用的更新版本上線之前,都會對其頁面開啟耗時進(jìn)行測試。當(dāng)測試失敗后,測試人員會進(jìn)一步對頁面所加載的內(nèi)容進(jìn)行分析,直至通過響應(yīng)性能測試為止。
本發(fā)明實施例提供的頁面開啟耗時的測試方法,基于幀緩沖區(qū)技術(shù),獲取頁面的像素數(shù)組從測試觸發(fā)到穩(wěn)定不變所需的時間,進(jìn)而計算頁面開啟耗時,不僅操作簡單,對系統(tǒng)資源的消耗低,且測試速度快,不受頁面實現(xiàn)方式等因素的限制,具有良好的兼容性。
請參閱圖4,圖4是本發(fā)明實施例提供的頁面開啟耗時的測試系統(tǒng)的模塊示意圖。所述測試系統(tǒng)可應(yīng)用各類操作系統(tǒng)的頁面,如linux系統(tǒng)、安卓系統(tǒng)、或蘋果系統(tǒng)。
所述頁面開啟耗時的測試系統(tǒng)400,包括:存儲器41和處理器42,用于分別存儲和執(zhí)行初始模塊43、間隔模塊44、和耗時模塊45中的操作指令。
其中,所述初始模塊43,用于根據(jù)頁面測試指令,從幀緩沖區(qū)(framebuffer)410中獲取并緩存頁面的初始像素數(shù)組,并獲取初始像素數(shù)組對應(yīng)的獲取時間,以生成為第一時間戳。
其中,所述幀緩沖區(qū)410屬于存儲器41,用于緩存完整的幀數(shù)據(jù),以便視頻輸出設(shè)備對視頻顯示設(shè)備進(jìn)行驅(qū)動。以linux系統(tǒng)為例,幀緩沖區(qū)被默認(rèn)在/dev/graphics/fb0路徑下。所述幀數(shù)據(jù),是每一靜止畫面的像素點的數(shù)據(jù),以數(shù)組形式進(jìn)行展現(xiàn)。
可以理解的是,所述第一時間戳(timestamp)t1,即為測試的開始時間。
所述間隔模塊44,連接于所述初始模塊43,用于每隔預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組,直到所述當(dāng)前像素數(shù)組與當(dāng)前像素數(shù)組的前一像素數(shù)組中的像素值完全相同,并獲取當(dāng)前像素數(shù)組對應(yīng)的獲取時間,以生成第二時間戳。
其中,所述間隔模塊44,包括:存儲單元441、對比單元442、循環(huán)單元443、和第二時間戳單元444。
具體而言,存儲單元441,用于在預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組。
其中,所述時間間隔的設(shè)置,取決于顯示屏幕的刷新頻率。以目前手機(jī)常用的刷新頻率為每秒60次為例,即,每幀的間隔為16.7毫秒。在存儲單元441中,可將時間間隔設(shè)置為16.7毫秒,既可以保障每次屏幕的變化,又不會因為更新頻率太高而消耗系統(tǒng)資源。
對比單元442,連接于存儲單元441,用于對比所述當(dāng)前像素數(shù)組與當(dāng)前像素數(shù)組的前一像素數(shù)組中的像素值完全相同。
可以理解的是,如果顯示屏幕變化,則幀緩沖區(qū)中的幀數(shù)據(jù)必然會發(fā)生變化;相反,如果顯示屏幕沒有變化,那么幀緩沖區(qū)中的幀數(shù)據(jù)也是不變的。因此,在對比單元442中,通過對比當(dāng)前緩存的像素數(shù)組是否與之前緩存的像素數(shù)組發(fā)生變化,來確定網(wǎng)頁是否完全打開。
循環(huán)單元443,連接于對比單元442和存儲單元441,用于當(dāng)不完全相同時,將所述當(dāng)前像素數(shù)組更新為前一像素數(shù)組,并通知所述存儲模塊在預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組。
舉例而言,比如:獲取初始像素數(shù)組,并生成第一時間戳t1;在第一個時間間隔內(nèi)獲取第二像素數(shù)組,對比結(jié)果為第二像素數(shù)組與初始像素數(shù)組不同;在第二個時間間隔內(nèi)獲取第三像素數(shù)組,對比結(jié)果為第三像素數(shù)組與第二像素數(shù)組相同,則根據(jù)獲取第三像素數(shù)組的時間生成第二時間戳t2。
第二時間戳單元444,連接于對比單元442,用于當(dāng)完全相同時,獲取當(dāng)前像素數(shù)組對應(yīng)的獲取時間,以生成第二時間戳。
可以理解的是,在當(dāng)前像素數(shù)組與其前一像素數(shù)組中的像素值全部相同時,表示網(wǎng)頁已全部打開,則記錄當(dāng)前的時間作為第二時間戳t2。
所述耗時模塊45,連接于所述初始模塊43和所述間隔模塊44,用于通過第一時間戳和第二時間戳生成頁面開啟耗時。
具體而言,頁面開啟耗時(t)=第二時間戳(t2)-第一時間戳(t1)。
可以理解的是,每隔預(yù)設(shè)時間間隔t0,才讀取一次像素數(shù)組。因此計算的頁面開啟耗時與實際的頁面開啟耗時相比,會存在一定的計算誤差。但計算誤差會被控制在預(yù)設(shè)時間間隔之內(nèi)。但由于時間間隔通常會非常小,比如10-20毫秒,因此可被忽略不計。
本發(fā)明實施例提供的頁面開啟耗時的測試系統(tǒng),基于幀緩沖區(qū)技術(shù),獲取頁面的像素數(shù)組從測試觸發(fā)到穩(wěn)定不變所需的時間,進(jìn)而計算頁面開啟耗時,不僅操作簡單,對系統(tǒng)資源的消耗低,且測試速度快,不受頁面實現(xiàn)方式等因素的限制,具有良好的兼容性。
請參閱圖5,圖5是本發(fā)明實施例提供的頁面開啟耗時的測試系統(tǒng)的另一模塊示意圖。所述測試系統(tǒng)可應(yīng)用各類操作系統(tǒng)的頁面,如linux系統(tǒng)、安卓系統(tǒng)、或蘋果系統(tǒng)。
所述頁面開啟耗時的測試系統(tǒng)500,包括:存儲器51和處理器52,用于分別存儲和執(zhí)行初始模塊53、設(shè)置模塊54、間隔模塊55、耗時模塊56、和測試模塊57中的操作指令。
所述初始模塊53,根據(jù)頁面測試指令,從幀緩沖區(qū)510獲取并緩存頁面的初始像素數(shù)組。
其中,所述初始模塊53包括:指令接收單元531、分辨率單元532、數(shù)據(jù)格式單元533、和第一時間戳單元534。
具體而言,指令接收單元531,用于接收頁面測試指令。
分辨率單元532,連接于指令接收單元531,用于響應(yīng)所述頁面測試指令,以獲取顯示屏幕的分辨率,所述分辨率包括水平像素數(shù)和垂直像素數(shù),所述分辨率用于確定初始像素數(shù)組的數(shù)據(jù)格式。可以理解的是,首先,可以所述根據(jù)分辨率確定頁面的像素個數(shù),通常是分辨率與像素個數(shù)為1:1的關(guān)系;并進(jìn)一步確定像素數(shù)組的格式。
請參閱圖3,所示為像素數(shù)組的數(shù)據(jù)結(jié)構(gòu)示意圖。其中,幀緩沖區(qū)32的幀數(shù)據(jù)與手機(jī)31的顯示屏幕上的像素值的一一對應(yīng)。以分辨率為480*800的手機(jī)31來說,幀緩沖區(qū)32就是一個480*800的數(shù)組。其中,像素值是用32位的整數(shù)表示。
數(shù)據(jù)格式單元533,連接于分辨率單元532,用于按照所述數(shù)據(jù)格式,獲取并緩存頁面的初始像素數(shù)組。
其中,所述幀緩沖區(qū)510,屬于存儲器51的一部分,用于緩存完整的幀數(shù)據(jù),以便視頻輸出設(shè)備對視頻顯示設(shè)備進(jìn)行驅(qū)動。以linux系統(tǒng)為例,幀緩沖區(qū)被默認(rèn)在/dev/graphics/fb0路徑下。所述幀數(shù)據(jù),是每一靜止畫面的像素點的數(shù)據(jù),以數(shù)組形式進(jìn)行展現(xiàn)。
第一時間戳單元534,連接于數(shù)據(jù)格式單元533,用于獲取所述初始像素數(shù)組對應(yīng)的獲取時間,以生成為第一時間戳。
可以理解的是,所述第一時間戳t1,即為測試開始的時間。
設(shè)置模塊54,連接于初始模塊53、和間隔模塊55,用于設(shè)置時間間隔。
其中,所述設(shè)置模塊54包括:刷新頻率單元541和間隔設(shè)置單元542。
具體而言,所述刷新頻率單元541,用于響應(yīng)所述頁面測試指令,獲取顯示屏幕的刷新頻率。
所述間隔設(shè)置單元542,連接于所述刷新頻率單元541,用于根據(jù)所述刷新頻率計算時間間隔,并將所述時間間隔作為預(yù)設(shè)時間間隔。
其中,所述刷新頻率用于決定時間間隔,即根據(jù)所述刷新頻率計算時間間隔,并將所述時間間隔作為預(yù)設(shè)時間間隔。比如,目前手機(jī)常用的刷新頻率為每秒60次??蓪⒐皆O(shè)置為:時間間隔=1/刷新頻率,則計算時間間隔后,約為16.7毫秒。如此既可以保障每次屏幕的變化,又不會因為更新頻率太高而消耗系統(tǒng)資源。
所述間隔模塊55,連接于所述初始模塊53和設(shè)置模塊54,用于每隔預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組,直到所述當(dāng)前像素數(shù)組與當(dāng)前像素數(shù)組的前一像素數(shù)組中的像素值完全相同,并獲取當(dāng)前像素數(shù)組對應(yīng)的獲取時間,以生成第二時間戳。
其中,所述間隔模塊55包括:存儲單元551、對比單元552、循環(huán)單元553、和第二時間戳單元554。
具體而言,存儲單元551,用于在預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組。
其中,所述時間間隔的設(shè)置,取決于顯示屏幕的刷新頻率。以目前手機(jī)常用的刷新頻率為每秒60次為例,即,每幀的間隔為16.7毫秒。在存儲單元551中,可將時間間隔設(shè)置為16.7毫秒,既可以保障每次屏幕的變化,又不會因為更新頻率太高而消耗系統(tǒng)資源。
對比單元552,連接于存儲單元551,用于對比所述當(dāng)前像素數(shù)組與當(dāng)前像素數(shù)組的前一像素數(shù)組中的像素值完全相同。
可以理解的是,如果顯示屏幕變化,則幀緩沖區(qū)中的幀數(shù)據(jù)必然會發(fā)生變化;相反,如果顯示屏幕沒有變化,那么幀緩沖區(qū)中的幀數(shù)據(jù)也是不變的。因此,在對比單元552中,通過對比當(dāng)前緩存的像素數(shù)組是否與之前緩存的像素數(shù)組發(fā)生變化,來確定網(wǎng)頁是否完全打開。
循環(huán)單元553,連接于對比單元552和存儲單元551,用于當(dāng)不完全相同時,將所述當(dāng)前像素數(shù)組更新為前一像素數(shù)組,并通知所述存儲模塊551在預(yù)設(shè)時間間隔后,繼續(xù)獲取并緩存頁面的當(dāng)前像素數(shù)組。
舉例而言,比如:獲取初始像素數(shù)組,并生成第一時間戳t1;在第一個時間間隔內(nèi)獲取第二像素數(shù)組,對比結(jié)果為第二像素數(shù)組與初始像素數(shù)組不同;在第二個時間間隔內(nèi)獲取第三像素數(shù)組,對比結(jié)果為第三像素數(shù)組與第二像素數(shù)組相同,則根據(jù)獲取第三像素數(shù)組的時間生成第二時間戳t2。
第二時間戳單元554,連接于對比單元552,用于當(dāng)完全相同時,獲取當(dāng)前像素數(shù)組對應(yīng)的獲取時間,以生成第二時間戳。
可以理解的是,在當(dāng)前像素數(shù)組與其前一像素數(shù)組中的像素值全部相同時,表示網(wǎng)頁已全部打開,則記錄當(dāng)前的時間作為第二時間戳t2。
耗時模塊56,連接于初始模塊53和間隔模塊55,用于通過第一時間戳、第二時間戳、和時間間隔,生成頁面開啟耗時。
其中,所述耗時模塊56包括:差值單元561、和誤差單元562。
具體而言,差值單元561,用于計算所述第二時間戳(t2)和所述第一時間戳(t1)的差值,得到所述頁面開啟耗時(t),即t=t2-t1。
誤差單元562,用于標(biāo)注計算誤差。其中,所述計算誤差在所述預(yù)設(shè)時間間隔t0之內(nèi)。
可以理解的是,每隔預(yù)設(shè)時間間隔t0,才讀取一次像素數(shù)組。因此計算的頁面開啟耗時與實際的頁面開啟耗時相比,會存在一定的計算誤差。但計算誤差會被控制在預(yù)設(shè)時間間隔之內(nèi)。但由于時間間隔通常會非常小,比如10-20毫秒,因此可被忽略不計。
測試模塊57,連接于耗時模塊56,用于判斷所述頁面開啟耗時是否小于標(biāo)準(zhǔn)耗時,并輸出測試結(jié)果。
其中,所述測試模塊57包括:標(biāo)準(zhǔn)判斷單元571、和結(jié)果輸出單元572。
具體而言,標(biāo)準(zhǔn)判斷單元571,用于判斷所述頁面開啟耗時是否小于標(biāo)準(zhǔn)耗時。
可以理解的是,用戶對于不同類型的應(yīng)用,其可接受的等待時間不同,因此,標(biāo)準(zhǔn)耗時會因應(yīng)用類型的不同而有所差異。比如,以社交類第三方應(yīng)用為例,經(jīng)過測試得知,用戶的可接受的等待時間為1分鐘,則將標(biāo)準(zhǔn)耗時設(shè)置為1分鐘。
結(jié)果輸出單元572,連接于標(biāo)準(zhǔn)判斷單元571,用于當(dāng)所述頁面開啟耗時小于所述標(biāo)準(zhǔn)耗時,輸出測試通過;以及當(dāng)所述頁面開啟耗時不小于所述標(biāo)準(zhǔn)耗時,輸出測試失敗。
可以理解的是,無論是新應(yīng)用上線之前、還是應(yīng)用的更新版本上線之前,都會對其頁面開啟耗時進(jìn)行測試。當(dāng)測試失敗后,測試人員會進(jìn)一步對頁面所加載的內(nèi)容進(jìn)行分析,直至通過響應(yīng)性能測試為止。
本發(fā)明實施例提供的頁面開啟耗時的測試系統(tǒng),基于幀緩沖區(qū)技術(shù),獲取頁面的像素數(shù)組從測試觸發(fā)到穩(wěn)定不變所需的時間,進(jìn)而計算頁面開啟耗時,不僅操作簡單,對系統(tǒng)資源的消耗低,且測試速度快,不受頁面實現(xiàn)方式等因素的限制,具有良好的兼容性。
相應(yīng)的,本發(fā)明實施例還提供一種終端設(shè)備,用于展示頁面開啟耗時的測試方法及測試系統(tǒng)的硬件環(huán)境示意圖。如圖6所示,所述終端設(shè)備用于執(zhí)行圖1-2中的頁面開啟耗時的測試方法、或運行圖4-5中的頁面開啟耗時的測試系統(tǒng)。所述終端設(shè)備600包括:一個或者一個以上處理核心的處理器601、一個或一個以上計算機(jī)可讀存儲介質(zhì)的存儲器602、輸入單元603、短距離無線傳輸(wifi)模塊604、顯示屏幕605、以及電源606等部件。
其中,存儲器602用于進(jìn)一步提供幀緩沖區(qū)。所述幀緩沖區(qū),用于緩存幀數(shù)據(jù),以便對顯示屏幕605進(jìn)行驅(qū)動。以linux系統(tǒng)為例,幀緩沖區(qū)被默認(rèn)在/dev/graphics/fb0路徑下。
本領(lǐng)域技術(shù)人員可以理解,上述結(jié)構(gòu)并不構(gòu)成對終端設(shè)備600的限定,可以包括比上述更多或更少的部件、組合某些部件、或不同的部件布置。其中:
具體在本實施例中,在終端設(shè)備600中,處理器601會按照如下的指令,將一個或一個以上的應(yīng)用程序的進(jìn)程對應(yīng)的可執(zhí)行文件加載到存儲器602中,并由處理器601來運行存儲在存儲器602中的應(yīng)用程序,從而實現(xiàn)各種功能,如下:根據(jù)頁面測試指令,獲取并緩存頁面的初始像素數(shù)組,并獲取初始像素數(shù)組對應(yīng)的獲取時間,以生成為第一時間戳;每隔預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組,直到所述當(dāng)前像素數(shù)組與當(dāng)前像素數(shù)組的前一像素數(shù)組中的像素值完全相同,并獲取當(dāng)前像素數(shù)組對應(yīng)的獲取時間,以生成第二時間戳;通過第一時間戳和第二時間戳生成頁面開啟耗時。
優(yōu)選的,所述處理器601還可以用于:接收頁面測試指令;響應(yīng)所述頁面測試指令,以獲取顯示屏幕的分辨率,所述分辨率包括水平像素數(shù)和垂直像素數(shù),所述分辨率用于確定初始像素數(shù)組的數(shù)據(jù)格式;按照所述數(shù)據(jù)格式,獲取并緩存頁面的初始像素數(shù)組;獲取所述初始像素數(shù)組對應(yīng)的獲取時間,以生成為第一時間戳。
優(yōu)選的,所述處理器601還可以用于:獲取顯示屏幕的刷新頻率;根據(jù)所述刷新頻率計算時間間隔,并將所述時間間隔作為預(yù)設(shè)時間間隔。
優(yōu)選的,所述處理器601還可以用于:在預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組;對比所述當(dāng)前像素數(shù)組與當(dāng)前像素數(shù)組的前一像素數(shù)組中的像素值完全相同;當(dāng)不完全相同時,將所述當(dāng)前像素數(shù)組更新為前一像素數(shù)組,并返回步驟在預(yù)設(shè)時間間隔后,獲取并緩存頁面的當(dāng)前像素數(shù)組;當(dāng)完全相同時,獲取當(dāng)前像素數(shù)組對應(yīng)的獲取時間,以生成第二時間戳。
優(yōu)選的,所述處理器601還可以用于:計算所述第二時間戳和所述第一時間戳的差值,得到所述頁面開啟耗時,其中,耗時的計算誤差在所述預(yù)設(shè)時間間隔之內(nèi)。
優(yōu)選的,所述處理器601還可以用于:判斷所述頁面開啟耗時是否小于標(biāo)準(zhǔn)耗時;若所述頁面開啟耗時小于所述標(biāo)準(zhǔn)耗時,則測試通過;若所述頁面開啟耗時不小于所述標(biāo)準(zhǔn)耗時,則測試失敗。
本發(fā)明實施例提供的終端設(shè)備,基于幀緩沖區(qū)技術(shù),獲取頁面的像素數(shù)組從測試觸發(fā)到穩(wěn)定不變所需的時間,進(jìn)而計算頁面開啟耗時,不僅操作簡單,對系統(tǒng)資源的消耗低,且測試速度快,不受頁面實現(xiàn)方式等因素的限制,具有良好的兼容性。
本發(fā)明實施例提供的所述終端設(shè)備,與上文實施例中的頁面開啟耗時的測試方法及測試系統(tǒng)屬于同一構(gòu)思。
需要說明的是,對本發(fā)明所述頁面開啟耗時的測試方法而言,本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)本發(fā)明實施例中的全部或部分流程,是可以通過計算機(jī)程序來控制相關(guān)的硬件來完成,所述計算機(jī)程序可存儲于一計算機(jī)可讀取存儲介質(zhì)中,如存儲在終端設(shè)備的存儲器中,并被該終端設(shè)備內(nèi)的至少一個處理器執(zhí)行,在執(zhí)行過程中可包括如所述信息分享方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲器(rom,readonlymemory)、隨機(jī)存取記憶體(ram,randomaccessmemory)等。
對本發(fā)明實施例的所述頁面開啟耗時的測試方法系統(tǒng)而言,其各功能模塊可以集成在一個處理芯片中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中,所述存儲介質(zhì)譬如為只讀存儲器,磁盤或光盤等。
以上對本發(fā)明實施例所提供的一種頁面開啟耗時的測試方法、測試系統(tǒng)及終端設(shè)備進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。