監(jiān)視移動應(yīng)用性能的制作方法
【專利說明】監(jiān)視移動應(yīng)用性能
[0001 ] WS
[0002] 當(dāng)前在各種應(yīng)用市場中存在超過百萬個移動應(yīng)用。用戶依賴于這些應(yīng)用來進(jìn)行各 種各樣的任務(wù),諸如在社交聯(lián)網(wǎng)站點上張貼評論、進(jìn)行在線銀行業(yè)務(wù)等。
[0003] 移動應(yīng)用市場是高度競爭性的。結(jié)果,開發(fā)者力圖維護(hù)和改善他們應(yīng)用的質(zhì)量。實 驗室測試提供了一些指導(dǎo),但卻很少是充足的,因為移動應(yīng)用是高度交互性的,并且難以在 實驗室中模擬全部范圍的用戶交互。此外,移動應(yīng)用經(jīng)歷各種各樣的"實地(in the field)"環(huán)境狀況,諸如網(wǎng)絡(luò)連通性(Wi-Fi或3G)、GPS信號質(zhì)量、以及電話硬件,這些環(huán)境狀 況在實際用戶之間可能變動很大。其他狀況也被考慮進(jìn)來,例如,一些平臺API取決于電池 水平而改變它們的行為。這些多樣化的狀況是難以在實驗室中再現(xiàn)的。
[0004] 結(jié)果,為了改善應(yīng)用質(zhì)量,應(yīng)用開發(fā)者/團(tuán)隊需要理解應(yīng)用在實地如何執(zhí)行。然而, 移動應(yīng)用的異步、多線程化的本質(zhì)使得難以跟蹤應(yīng)用使用和應(yīng)用性能來收集數(shù)據(jù)。移動平 臺中固有的資源限制與各種困難復(fù)合,例如添加輔助監(jiān)視應(yīng)用性能的跟蹤代碼不會不利地 影響用戶體驗。
[0005] 挺塗
[0006] 提供本概述以便以簡化形式介紹將在以下的詳細(xì)描述中進(jìn)一步描述的一些代表 性概念的選集。本概述不旨在標(biāo)識出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在 以限制所要求保護(hù)的主題的范圍的任何方式來使用。
[0007] 簡言之,本文描述的主題內(nèi)容的各方面涉及一種其中自動檢測應(yīng)用代碼的技術(shù), 包括將一個或多個記錄函數(shù)以及一個或多個事件處理程序插入應(yīng)用代碼中以記錄事件。還 描述了將代碼插入應(yīng)用代碼中來為異步調(diào)用(asynchronous cal 1)的調(diào)用(invocation)指 派標(biāo)識符,并且使提供給該異步調(diào)用的回調(diào)繞路到繞路代碼以基于標(biāo)識符將該回調(diào)與該異 步調(diào)用相關(guān)聯(lián)。
[0008] 在一方面,檢測器被配置成用記錄功能以及用將異步調(diào)用與回調(diào)相關(guān)聯(lián)的代碼來 檢測應(yīng)用代碼。分析組件處理在應(yīng)用代碼的執(zhí)行期間經(jīng)由記錄功能被記錄到有向無環(huán)圖中 的數(shù)據(jù),這些數(shù)據(jù)表示在執(zhí)行期間發(fā)生的事務(wù)。
[0009] 在一方面,在被檢測應(yīng)用代碼的執(zhí)行期間,經(jīng)由被檢測應(yīng)用代碼來記錄蹤跡數(shù)據(jù)。 蹤跡數(shù)據(jù)對應(yīng)于以下至少一者:用戶界面(UI)操縱、線程執(zhí)行、異步調(diào)用和回調(diào)、UI更新或 線程同步。蹤跡數(shù)據(jù)被上傳以供分析處理。
[0010] 結(jié)合附圖閱讀以下詳細(xì)描述,本發(fā)明的其他優(yōu)點會變得顯而易見。
[0011] 附圖簡述
[0012] 作為示例而非限制,在附圖中示出了本發(fā)明,附圖中相同的附圖標(biāo)記指示相同或 相似的元素,附圖中:
[0013] 圖1是示出根據(jù)一個或多個示例實施例的各種示例組件的框圖,這些示例組件包 括監(jiān)視移動應(yīng)用性能的檢測和分析系統(tǒng)。
[0014] 圖2是示出根據(jù)一個或多個示例實施例的經(jīng)由日志記錄程序和繞路庫來檢測應(yīng)用 的結(jié)構(gòu)的框圖。
[0015] 圖3是根據(jù)一個或多個示例實施例的例如示出用戶事務(wù)的代碼的示例執(zhí)行蹤跡。
[0016] 圖4是根據(jù)一個或多個示例實施例的例如示出用戶事務(wù)和其中的關(guān)鍵路徑的基于 位置的應(yīng)用代碼的示例執(zhí)行蹤跡。
[0017] 圖5是根據(jù)一個或多個示例實施例的示出示例應(yīng)用崩潰/異常路徑的示例執(zhí)行蹤 跡。
[0018] 圖6是示出根據(jù)一個或多個示例實施例的涉及將異步調(diào)用與對應(yīng)回調(diào)進(jìn)行匹配的 示例步驟的流程圖。
[0019] 圖7是根據(jù)一個或多個示例實施例的借此異步調(diào)用可以被繞過以將調(diào)用與對應(yīng)回 調(diào)進(jìn)行匹配的一種示例方式的表示。
[0020]圖8A和8B是根據(jù)一個或多個示例實施例的從用于表示用戶事務(wù)的記錄的蹤跡數(shù) 據(jù)中處理的有向無環(huán)圖的表示。
[0021] 圖9是示出根據(jù)一個或多個示例實施例的可被采用來檢測代碼、執(zhí)行被檢測代碼 以收集蹤跡數(shù)據(jù)以供分析、以及分析蹤跡數(shù)據(jù)的示例步驟的流程圖。
[0022] 圖10是表示移動計算設(shè)備形式的示例計算環(huán)境的框圖,其中本文所描述的主題內(nèi) 容的各方面可被并入該計算環(huán)境中。
[0023] 詳細(xì)描述
[0024] 本文描述的技術(shù)的各方面一般涉及監(jiān)視移動應(yīng)用性能,包括通過檢測移動應(yīng)用代 碼(二進(jìn)制代碼)來收集蹤跡數(shù)據(jù)(蹤跡)。這些蹤跡被分析以自動標(biāo)識用戶事務(wù)中的關(guān)鍵路 徑,包括跨異步調(diào)用邊界,其中一般來說,用戶感知到的等待時間是在關(guān)鍵路徑的概念中來 闡述的,因為關(guān)鍵路徑提供了用戶事務(wù)中的瓶頸路徑,從而改變關(guān)鍵路徑的任一部分的長 度會改變用戶感知到的等待時間。一般來說,關(guān)鍵路徑開始于用戶操縱事件,而結(jié)束于UI更 新事件。如本文描述的用戶"事務(wù)"開始于對UI的用戶操縱,而結(jié)束于完成應(yīng)用中由該操縱 觸發(fā)的同步和異步任務(wù)(線程)。如將理解的,在事務(wù)期間,可以采取許多中間動作。
[0025] 在一方面,提供不要求來自開發(fā)者的輸入也不要求對操作系統(tǒng)的任何改變的輕量 檢測系統(tǒng)。在一種實現(xiàn)中,檢測機制一般通過插入事件處理程序來檢測移動應(yīng)用。性能數(shù)據(jù) 被實地地收集,并且可被上傳到中央服務(wù)器以供離線分析。
[0026] 如將理解的,本文描述的檢測系統(tǒng)幫助應(yīng)用開發(fā)者診斷他們的應(yīng)用實地經(jīng)歷的性 能瓶頸和故障。檢測機制通過用戶事務(wù)的代碼向開發(fā)者提供關(guān)于關(guān)鍵路徑的信息。這一信 息一般可用于將開發(fā)者指向改善用戶體驗所需的優(yōu)化。
[0027] 應(yīng)當(dāng)理解,本文中的任何示例均是非限制的。因此,本發(fā)明不限制于本文所述的任 何具體的實施例、方面、概念、結(jié)構(gòu)、功能或示例。相反,本文中所描述的任何一個實施例、方 面、概念、結(jié)構(gòu)、功能或示例都是非限制性的,并且一般而言可以在計算和成像技術(shù)中提供 好處和優(yōu)點的各種方式來使用本發(fā)明。
[0028] 圖1是示出基于本文描述的技術(shù)的涉及檢測和分析系統(tǒng)102的一種實現(xiàn)(例如架 構(gòu))的示例概念的框圖。示例性系統(tǒng)102用相對較小的開銷來捕捉構(gòu)建用戶事務(wù)的執(zhí)行蹤跡 以及標(biāo)識他們的關(guān)鍵路徑和異常路徑所需的信息。注意到,在決定要捕捉什么的時候,在開 銷與向開發(fā)者給出有用反饋的能力之間存在折衷。
[0029]如圖1所示,應(yīng)用104(例如二進(jìn)制文件)使用進(jìn)入被檢測應(yīng)用108中的檢測工具(檢 測程序106)來檢測,如本文所述。注意到,盡管應(yīng)用二進(jìn)制文件被用于描述該技術(shù),但任何 代碼均可受益于本文描述的技術(shù),例如,操作系統(tǒng)組件、服務(wù)等等可被類似地檢測和分析, 即便它們在技術(shù)上不被認(rèn)為是應(yīng)用。
[0030] 在一種實現(xiàn)中,開發(fā)者僅需要向檢測程序106提供應(yīng)用二進(jìn)制文件;不需要其他輸 入或源代碼注釋。對于電話應(yīng)用,檢測程序106利用這樣一個事實:電話應(yīng)用常常使用較高 級的框架來編寫并且被編譯成中間語言(字節(jié)代碼)。例如,一種或多種實現(xiàn)被設(shè)計成用于 使用Siiverlight? :·框架(被Windows?電話市場中的大部分應(yīng)用所使用)編寫并被編譯成 MSIL(Microsoft(S」中間語言)字節(jié)代碼的應(yīng)用。MSIL保留程序的結(jié)構(gòu),包括類型、方法和繼 承信息。
[0031] 用戶從應(yīng)用商店110獲得被檢測應(yīng)用108的實例。當(dāng)用戶在他們的設(shè)備112上實地 運行被檢測應(yīng)用108時,蹤跡數(shù)據(jù)114被收集并上傳到服務(wù)器116。例如,在基于Windows?l 的電話中,后臺傳輸服務(wù)(BTS)可用于上傳蹤跡數(shù)據(jù)114; 一般而言,在沒有前臺應(yīng)用正在運 行時,BTS上傳數(shù)據(jù),并且在網(wǎng)絡(luò)中斷和丟失的情況下提供可靠傳輸服務(wù)。
[0032] 多個因素影響移動應(yīng)用的性能,包括用戶輸入、環(huán)境條件等等。應(yīng)用執(zhí)行蹤跡可以 用不同詳細(xì)程度來捕捉。
[0033]蹤跡數(shù)據(jù)由分析組件118分析,并且發(fā)現(xiàn)/開發(fā)者反饋120例如經(jīng)由基于web的接口 變得對開發(fā)者/團(tuán)隊122可用。開發(fā)者/團(tuán)隊122接著可以例如經(jīng)由經(jīng)更新的版本來改善應(yīng) 用。習(xí)得的知識還能夠改善其他應(yīng)用。
[0034] 一般而言,蹤跡數(shù)據(jù)114對應(yīng)于捕捉各種類別數(shù)據(jù)的需要,包括用戶何時操縱UI; 應(yīng)用代碼何時在各種線程上執(zhí)行,以及異步調(diào)用與回調(diào)之間的因果關(guān)系。其他類別包括涉 及線程同步點(例如通過Wait(等待)調(diào)用)及其因果關(guān)系、UI何時被更新、以及任何未處理 異常的數(shù)據(jù)。
[0035]附加數(shù)據(jù)可被捕捉以供分析。例如,對于某些異步調(diào)用,諸如web請求和GPS調(diào)用, 可在調(diào)用處以及回調(diào)處收集附加信息。作為更具體的示例,對于web請求調(diào)用,URL和網(wǎng)絡(luò)狀 態(tài)可被記錄;對于GPS調(diào)用,GPS狀態(tài)可被記錄。對要記錄的信息的選擇可以根據(jù)經(jīng)驗以及完 整性與開銷之間的折衷來引導(dǎo)。實際數(shù)據(jù)顯示用戶事務(wù)中的關(guān)鍵路徑常常涉及網(wǎng)絡(luò)或GPS 接入。通過記錄某些點處的小量附加信息,可以將附加的有意義反饋提供給開發(fā)者。<