用于跨各種移動裝置協(xié)調(diào)移動應(yīng)用的現(xiàn)場用戶測試結(jié)果的系統(tǒng)和方法
【專利說明】用于跨各種移動裝置協(xié)調(diào)移動應(yīng)用的現(xiàn)場用戶測試結(jié)果的系統(tǒng)和方法
[0001]相關(guān)串請的交叉引用
[0002]本申請要求于2013年3月15日提交的美國專利申請序列號N0.13/837,851的權(quán)益,通過引用方式將其全部內(nèi)容并入本文中。
技術(shù)領(lǐng)域
[0003]本發(fā)明涉及用于跨各種移動裝置協(xié)調(diào)移動應(yīng)用的現(xiàn)場用戶測試結(jié)果的系統(tǒng)和方法。
【背景技術(shù)】
[0004]移動應(yīng)用的現(xiàn)場用戶測試(field user testing)涉及在移動裝置的相應(yīng)工作環(huán)境中測試在該移動裝置上運行的應(yīng)用。例如,應(yīng)用開發(fā)者可以選擇用戶組,以在具有不同硬件和一個或者多個版本的一個或者多個操作系統(tǒng)的各種移動裝置上測試應(yīng)用。用戶可以向應(yīng)用開發(fā)者報告用戶在測試期間遇到的錯誤。
[0005]—些傳統(tǒng)系統(tǒng)可以使用半自動現(xiàn)場用戶測試。例如,一些傳統(tǒng)現(xiàn)場用戶測試系統(tǒng)可以促進在測試期間出現(xiàn)的錯誤傳輸?shù)脚c移動裝置通信的服務(wù)器。其它傳統(tǒng)系統(tǒng)可以經(jīng)由即時消息能力向其它移動裝置傳輸在測試期間出現(xiàn)的錯誤。
[0006]無論是使用用戶報告還是使用一些類型的自動錯誤報告,傳統(tǒng)系統(tǒng)通常經(jīng)歷了錯誤的出現(xiàn)與那個錯誤的分析之間的滯后。那個滯后可能影響錯誤的再現(xiàn)性和確定錯誤如何出現(xiàn)的能力。
[0007]用于移動應(yīng)用的現(xiàn)場用戶測試的傳統(tǒng)系統(tǒng)遭受了這些缺陷及其它缺陷。
【發(fā)明內(nèi)容】
[0008]解決傳統(tǒng)系統(tǒng)的這些缺陷及其它缺陷的本發(fā)明涉及用于在跨各種移動裝置協(xié)調(diào)移動應(yīng)用的現(xiàn)場用戶測試結(jié)果的系統(tǒng)和方法。
[0009]根據(jù)本發(fā)明的一個方面,應(yīng)用開發(fā)者可能希望使用移動裝置的選擇來現(xiàn)場測試應(yīng)用(“測試應(yīng)用”)。選擇的移動裝置可以包括具有不同屬性(例如不同硬件、一個或者多個操作系統(tǒng)、一個或者多個操作系統(tǒng)的一個或者多個版本和/或其它不同屬性)的移動裝置。
[0010]應(yīng)用開發(fā)者可以選擇部署測試應(yīng)用的預(yù)先確定數(shù)量的移動裝置。例如,應(yīng)用開發(fā)者可以選擇一個或者多個移動裝置集合,其中,在給定集合中的移動裝置相差單個屬性。例如,屬性可以包括硬件組件、軟件組件、操作系統(tǒng)、操作系統(tǒng)的版本和/或其它屬性。在另一個示例中,應(yīng)用開發(fā)者可以選擇預(yù)先確定數(shù)量的移動裝置,其中,該裝置可以相差超過一個屬性。
[0011]移動裝置可以通過測試應(yīng)用執(zhí)行一個或者多個操作來對測試應(yīng)用進行測試。在一個實現(xiàn)方式中,應(yīng)用開發(fā)者可以準(zhǔn)備用于對測試應(yīng)用進行測試的一個或者多個測試腳本。測試腳本可以包括多個操作、這些操作待被執(zhí)行的順序、用于多個操作中的一個或者多個操作的輸入數(shù)據(jù)和/或用于對測試應(yīng)用進行測試的其它信息。其上部署測試應(yīng)用的移動裝置可以使用一個或者多個測試腳本以用于對測試應(yīng)用進行測試。在一個實現(xiàn)方式中,移動裝置的一個或者多個用戶可以由測試應(yīng)用執(zhí)行一個或者多個操作,其中,該一個或者多個操作可以與測試腳本不相關(guān)。
[0012]其上部署測試應(yīng)用的移動裝置可以彼此通信并且與可以提供與測試有關(guān)的分析的計算裝置通信。例如,移動裝置和計算裝置可以彼此通信,以跟蹤,復(fù)制并且/或者另外分析在測試應(yīng)用的測試期間出現(xiàn)的錯誤。移動裝置和/或計算裝置可以確定與遇到錯誤的裝置相關(guān)聯(lián)的特征。移動裝置可以通過在網(wǎng)絡(luò)(例如內(nèi)部網(wǎng))上廣播數(shù)據(jù),通過向計算裝置處的組播套接口(multicast socket)傳輸數(shù)據(jù)(其可以向能夠連接到組播套接口的所有移動裝置廣播),通過向計算裝置傳輸數(shù)據(jù)借此計算裝置向移動裝置傳輸數(shù)據(jù),通過向相應(yīng)移動裝置處存儲的裝置列表中包括的每一個裝置傳輸數(shù)據(jù),通過向要從計算裝置傳輸數(shù)據(jù)的那個裝置請求移動裝置列表并且向在那個列表中包括的每個裝置傳輸數(shù)據(jù)或者以其它方式來進行通信。
[0013]根據(jù)本發(fā)明的一個方面,移動裝置的選擇中的每一個移動裝置可以接收測試應(yīng)用。測試應(yīng)用可以在移動裝置可用于用戶來對應(yīng)用進行測試之前存儲在移動裝置上,可以經(jīng)由計算裝置(例如經(jīng)由下載)來接收,可以經(jīng)由互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)和/或其它網(wǎng)絡(luò)來接收,可以經(jīng)由移動裝置可存取的應(yīng)用存儲來接收,可以經(jīng)由通過移動裝置可存取的另一個應(yīng)用來接收,可以從電子存儲介質(zhì)來上傳,可以從主控計算裝置的云計算環(huán)境中的一個或者多個裝置接收,并且/或可以以其他方式獲得。在其中在測試應(yīng)用的測試期間使用測試腳本的一個實現(xiàn)方式中,與測試應(yīng)用相關(guān)聯(lián)的一個或者多個測試腳本可以存儲在移動裝置處,(例如經(jīng)由下載)從計算裝置存取,經(jīng)由網(wǎng)絡(luò)從另一個裝置存取,從另一個裝置上傳,以與測試應(yīng)用相同或者相似方式獲得,并且/或者以其他方式獲得。
[0014]在一個實現(xiàn)方式中,被配置為提供與測試應(yīng)用有關(guān)的分析的計算裝置可以駐留在云計算環(huán)境中。計算裝置可以由應(yīng)用開發(fā)者、由第三方服務(wù)提供者和/或由另一個實體來主控并且/或者監(jiān)視。
[0015]在一個實現(xiàn)方式中,第三方服務(wù)提供商(或者其它實體)可以促進測試應(yīng)用的現(xiàn)場用戶測試。例如,第三方服務(wù)提供商可以選擇其上待部署測試應(yīng)用的移動裝置,準(zhǔn)備用于對測試應(yīng)用進行測試的一個或者多個測試腳本,促進測試應(yīng)用到移動裝置的選擇的部署,并且/或者另外促進測試應(yīng)用的現(xiàn)場用戶測試。第三方服務(wù)提供商可以促進應(yīng)用開發(fā)者對與測試應(yīng)用有關(guān)的數(shù)據(jù)和分析的存取。在一個實現(xiàn)方式中,第三方服務(wù)提供商可以促進一個或者多個應(yīng)用開發(fā)者的一個或者多個測試應(yīng)用的現(xiàn)場用戶測試。
[0016]根據(jù)本發(fā)明的一個方面,用于跨各種移動裝置協(xié)調(diào)移動應(yīng)用的現(xiàn)場用戶測試結(jié)果的系統(tǒng)可以包括:多個移動裝置,其被配置為促進測試應(yīng)用的現(xiàn)場用戶測試;以及計算裝置,其被配置為提供與測試應(yīng)用的現(xiàn)場用戶測試有關(guān)的分析。
[0017]移云力裝詈.
[0018]移動裝置可以包括:存儲操作系統(tǒng)的非暫時電子存儲介質(zhì)、被配置為執(zhí)行計算機模塊的一個或者多個物理處理器、和/或其它組件。非暫時電子存儲介質(zhì)可以被配置為存儲測試應(yīng)用、與測試應(yīng)用有關(guān)的度量、和/或與測試應(yīng)用和/或移動裝置有關(guān)的其它信息。移動裝置的計算機模塊可以包括:網(wǎng)絡(luò)模塊,其被配置為促進與其它移動裝置和計算裝置的通信;測試模塊,其被配置為使能測試應(yīng)用的現(xiàn)場用戶測試;和/或其它模塊。
[0019](移動裝置的)測試模塊可以被配置作為移動裝置的操作系統(tǒng)的一部分。例如,測試模塊可以包括構(gòu)建到操作系統(tǒng)的框架中的數(shù)據(jù)收集設(shè)施。在一個非限制實現(xiàn)方式中,移動裝置可以包括Android操作系統(tǒng)。在該實現(xiàn)方式中,測試模塊可以由Android操作系統(tǒng)的系統(tǒng)_服務(wù)器處理而啟動并且/或者管理。Android操作系統(tǒng)的粘合處理可以經(jīng)由應(yīng)用程序接口( “API”)將移動裝置的應(yīng)用連接到系統(tǒng)_服務(wù)器處理和測試模塊。測試模塊可以對測試應(yīng)用和對與測試應(yīng)用的執(zhí)行有關(guān)的數(shù)據(jù)具有與操作系統(tǒng)相同或者類似的特權(quán)和存取。測試模塊自身可以包括各種模塊,例如,度量收集模塊、錯誤處理模塊、錯誤復(fù)制模塊和/或其它模塊。
[0020]度量收集模塊可以被配置為在非暫時電子存儲介質(zhì)處收集且存儲來自測試應(yīng)用的執(zhí)行中的度量以及來自移動裝置的操作中的度量。例如,針對執(zhí)行的測試應(yīng)用的每個操作,度量收集模塊可以收集并且/或者存儲與執(zhí)行的一個或者多個在前操作有關(guān)的信息、測試應(yīng)用的狀態(tài)、移動裝置的狀態(tài)、與操作相關(guān)聯(lián)的一個或者多個參數(shù)、至操作的一個或者多個輸入、來自操作的一個或者多個輸出、操作的結(jié)果、相關(guān)聯(lián)的測試腳本和/或與操作有關(guān)的其它信息。由測試應(yīng)用執(zhí)行的操作可以對應(yīng)于與測試應(yīng)用有關(guān)的一個或多個測試腳本中的一個或多個操作。例如,測試腳本可以由移動裝置的用戶執(zhí)行,可以由移動裝置自動執(zhí)行,可以由測試模塊自動執(zhí)行,并且/或者可以以其它方式執(zhí)行。在一個實現(xiàn)方式中,執(zhí)行的一個或者多個操作可以是與測試腳本不對應(yīng)的隨機操作。
[0021]度量收集模塊可以在非暫時電子存儲介質(zhì)處收集并且存儲與移動裝置的操作有關(guān)的信息。例如,度量收集模塊可以收集且存儲與以下有關(guān)的信息:當(dāng)應(yīng)用(例如包括測試應(yīng)用)在移動裝置上崩潰時,當(dāng)移動裝置不能執(zhí)行與任何應(yīng)用有關(guān)的任何操作時,操作系統(tǒng)的重置是否出現(xiàn),裝置溫度,電池使用,蜂窩數(shù)據(jù)使用,W1-Fi數(shù)據(jù)使用,網(wǎng)絡(luò)狀態(tài),是否掛掉任何電話呼叫,與經(jīng)由移動裝置的操作存儲的記錄有關(guān)的信息,和/或與移動裝置的操作有關(guān)的其它信息。
[0022]度量收集模塊可以向計算裝置傳輸與測試應(yīng)用的執(zhí)行和移動裝置的操作有關(guān)的信息。例如,度量收集模塊可以基于由計算裝置的請求、基于移動裝置的用戶的請求并且/或者對其他信息響應(yīng)來在預(yù)先確定的間隔處傳輸信息。
[0023]測試模塊的錯誤處理模塊可以被配置為檢測在測試應(yīng)用中出現(xiàn)的錯誤,向其它移動裝置傳輸與檢測到的錯誤有關(guān)的信息,從其他移動裝置接收與復(fù)制嘗試有關(guān)的信息,確定錯誤是否出現(xiàn)在一個或者多個其它移動裝置處,基于來自其它移動裝置的復(fù)制信息來確定與檢測到的錯誤有關(guān)的特征,并且/或者執(zhí)行與錯誤處理有關(guān)的其它功能。
[0024]當(dāng)操作與測試腳本相關(guān)聯(lián)時,非暫時電子存儲介質(zhì)可以存儲與基于操作的執(zhí)行的期望結(jié)果有關(guān)的信息。錯誤處理模塊可以將與操作有關(guān)的、由度量收集模塊收集的信息和與操作有關(guān)的、在非暫時電子存儲介質(zhì)處存儲的信息進行比較。響應(yīng)于由度量收集模塊收集到的信息未匹配與期望結(jié)果有關(guān)的信息的確定,錯誤處理模塊可以指示出錯誤與該操作一起出現(xiàn)。
[0025]非暫時電子存儲介質(zhì)可以存儲與指示錯誤出現(xiàn)的一個或者多個事件有關(guān)的信息。與一個或者多個事件有關(guān)的信息可以指示出錯誤與測試應(yīng)用的操作和移動裝置的操作一起出現(xiàn),并且/或者指示出另一種類型的錯誤的出現(xiàn)。錯誤處理模塊可以將與該操作有關(guān)的、由度量收集模塊收集的信息和與一個或者多個事件有關(guān)的、在非暫時電子存儲介質(zhì)處存儲的信息進行比較。響應(yīng)于由度量收集模塊收集到的信息匹配與一個或者多個事件有關(guān)的信息的確定,錯誤處理模塊可以指示出錯誤與該操作一起出現(xiàn)。
[0026]響應(yīng)于由錯誤處理模塊進行的錯誤出現(xiàn)的指示,錯誤處理模塊可以使用與該操作一起出現(xiàn)的錯誤的指示來增加與該操作有關(guān)的存儲信息。在一個實現(xiàn)方式中,非暫時電子存儲可以從由度量收集模塊收集的信息中單獨存儲與錯誤有關(guān)的信息。例如,非暫時電子存儲介質(zhì)可以存儲與錯誤記錄中的錯誤有關(guān)的錯誤信息。例如,錯誤信息可以包括以下一個或者多個:測試應(yīng)用的識別、錯誤出現(xiàn)處的操作的識別、與錯誤出現(xiàn)處的操作相關(guān)聯(lián)的一個或多個參數(shù)、用于錯誤出現(xiàn)處的操作的輸入數(shù)據(jù)、用于錯誤出現(xiàn)處的操作的輸出數(shù)據(jù)、錯誤出現(xiàn)處的操作的一個或者多個結(jié)果、與在錯誤出現(xiàn)處的操作之前出現(xiàn)的一個或者多個操作有關(guān)的信息、用于該一個或者多個操作中的每一個操作的一個或者多個參數(shù)、用于該一個或者多個操作中的每一個操作的輸入數(shù)據(jù)、用于該一個或者多個操作中的每一個操作的輸出數(shù)據(jù)、當(dāng)錯誤出現(xiàn)時的測試應(yīng)用的狀態(tài)、相關(guān)聯(lián)的測試腳本、和/或與錯誤有關(guān)的其它信息等。在一個實現(xiàn)方式中,錯誤處理模塊可以響應(yīng)于錯誤在測試應(yīng)用的執(zhí)行期間在預(yù)先確定間隔處出現(xiàn)的確定和/或響應(yīng)于其它信息,來向計算裝置傳輸與錯誤有關(guān)的錯誤信息。
[0027]在一個實現(xiàn)方式中,例如,用于錯誤信息的格式可以包括:與幻數(shù)有關(guān)的第一部分、與時間戳有關(guān)的第二部分、與數(shù)據(jù)類型有關(guān)的第三部分、與記錄的長度有關(guān)的第四部分、與上下文具體數(shù)據(jù)有關(guān)的第五部分和/或描述記錄的格式的其它部分。例如,時間戳可以包括表示為48位無符號整數(shù)的多個毫秒。數(shù)據(jù)類型可以為16位無符號整數(shù)、16位帶符號整數(shù)、字符串和/或其它類型數(shù)據(jù)。記錄的長度可以表示為16位無符號整數(shù)。例如,上下文具體數(shù)據(jù)可以包括日志、內(nèi)核消息(kmsg)和/或其它上下文具體數(shù)據(jù)。
[0028]響應(yīng)于錯誤與所述操作一起出現(xiàn)的確定,錯誤處理模塊可以向其它移動裝置傳輸與該錯誤有關(guān)的錯誤信息。錯誤處理模塊可以向在非暫時電子存儲介質(zhì)中存儲的列表中包括的移動裝置傳輸與該錯誤有關(guān)的錯誤信息。在一個實現(xiàn)方式中,錯誤處理模塊可以從計算裝置請求向其傳輸錯誤信息的移動裝置的列表。在一個實現(xiàn)方式中,錯誤處理模塊可以在網(wǎng)絡(luò)(例如內(nèi)聯(lián)網(wǎng))上廣播錯誤信息,使得連接到網(wǎng)絡(luò)的所有其它裝置可以接收錯誤信息。在一個實現(xiàn)方式中,錯誤處理模塊可以向計算裝置處的組播套接口傳輸數(shù)據(jù)(經(jīng)由其,數(shù)據(jù)可以被廣播至能夠連接到組播套接口的所有移動裝置)。