本申請涉及軟件測試技術(shù)領(lǐng)域,特別涉及一種代碼覆蓋率獲取方法、服務(wù)器及待測應(yīng)用裝置。
背景技術(shù):
代碼覆蓋(Code coverage)測試是一種描述軟件代碼測試過程中代碼被執(zhí)行的程度的度量,代碼覆蓋率是衡量軟件代碼測試質(zhì)量的一個指標。
一般地,對于任何框架而言,軟件測試過程大致分為本地過程調(diào)用(Local Procedure Call,LPC)和遠程過程調(diào)用(Remote Procedure Call,RPC)。遠程過程調(diào)用RPC指的是一臺計算機上的程序調(diào)用另一臺計算機上的程序的過程?,F(xiàn)有技術(shù)中,在本地過程調(diào)用LPC的軟件測試過程中,通常在待測的本地機器上安裝用于分析代碼覆蓋率的工具,如:Jacoco、Emma,從而通過上述工具來獲取本地過程調(diào)用LPC的軟件測試過程的代碼覆蓋率。
在實現(xiàn)本申請的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
目前還沒有獲取遠程過程調(diào)用RPC的軟件測試過程中的代碼覆蓋率的技術(shù)方案。
技術(shù)實現(xiàn)要素:
本申請實施例的目的是提供一種代碼覆蓋率獲取方法、服務(wù)器及待測應(yīng)用裝置,以解決現(xiàn)有技術(shù)中無法獲取遠程過程調(diào)用RPC的軟件測試過程中的代碼覆蓋率的問題。
為解決上述技術(shù)問題,本申請實施例提供的代碼覆蓋率獲取方法、服務(wù)器及待測應(yīng)用裝置是這樣實現(xiàn)的:
一種代碼覆蓋率獲取方法,包括:
接收用戶終端發(fā)送的標識信息;
根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置;
在第一時刻向至少一個所述待測應(yīng)用裝置發(fā)送開始指令;
在第二時刻向至少一個所述待測應(yīng)用裝置發(fā)送結(jié)束指令;
接收至少一個所述待測應(yīng)用裝置上傳的通過所述覆蓋率采集客戶端采集的覆蓋率數(shù)據(jù)文件;所述上傳的覆蓋率數(shù)據(jù)文件是所述第一時刻到所述第二時刻的數(shù)據(jù);
根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
一種代碼覆蓋率獲取方法,包括:
接收用戶終端發(fā)送的標識信息;
根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置;
向至少一個所述待測應(yīng)用裝置發(fā)送攜帶有測試時長的上傳指令;
接收至少一個所述待測應(yīng)用裝置上傳的與所述測試時長對應(yīng)的覆蓋率數(shù)據(jù)文件;所述上傳的覆蓋率數(shù)據(jù)文件是通過所述覆蓋率采集客戶端采集的;
根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
一種代碼覆蓋率獲取方法,包括:
接收用戶終端發(fā)送的標識信息;
根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置;
向至少一個所述待測應(yīng)用裝置發(fā)送上傳指令;
接收至少一個所述待測應(yīng)用裝置上傳的通過所述覆蓋率采集客戶端采集 的覆蓋率數(shù)據(jù)文件;
根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
一種代碼覆蓋率獲取方法,包括:
在預(yù)設(shè)的上報時刻達到時,接收至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置上傳的覆蓋率數(shù)據(jù)文件;所述覆蓋率數(shù)據(jù)文件是通過所述覆蓋率采集客戶端采集的;
根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
一種代碼覆蓋率獲取方法,包括:
在第一時刻接收服務(wù)器發(fā)送的開始指令,觸發(fā)待測應(yīng)用裝置上安裝的覆蓋率采集客戶端的采集開始動作;
在第二時刻接收服務(wù)器發(fā)送的結(jié)束指令,觸發(fā)所述覆蓋率采集客戶端的采集結(jié)束動作;
將所述第一時刻到所述第二時刻采集得到的覆蓋率數(shù)據(jù)文件上傳至所述服務(wù)器。
一種代碼覆蓋率獲取方法,包括:
接收服務(wù)器發(fā)送的攜帶有測試時長的上傳指令;
根據(jù)所述測試時長,通過待測應(yīng)用裝置上安裝的覆蓋率采集客戶端采集與所述測試時長對應(yīng)的覆蓋率數(shù)據(jù)文件;
將采集的所述覆蓋率數(shù)據(jù)文件上傳至所述服務(wù)器。
一種服務(wù)器,包括:
第一接收模塊,用于接收用戶終端發(fā)送的標識信息;
確定模塊,用于根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置;
第一指令發(fā)送模塊,用于在第一時刻向至少一個所述待測應(yīng)用裝置發(fā)送開 始指令;
第二指令發(fā)送模塊,用于在第二時刻向至少一個所述待測應(yīng)用裝置發(fā)送結(jié)束指令;
第二接收模塊,用于接收至少一個所述待測應(yīng)用裝置上傳的通過所述覆蓋率采集客戶端采集的覆蓋率數(shù)據(jù)文件;所述上傳的覆蓋率數(shù)據(jù)文件是所述第一時刻到所述第二時刻的數(shù)據(jù);
覆蓋率獲取模塊,用于根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
一種服務(wù)器,包括:
第一接收模塊,用于接收用戶終端發(fā)送的標識信息;
確定模塊,用于根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置;
指令發(fā)送模塊,用于向至少一個所述待測應(yīng)用裝置發(fā)送攜帶有測試時長的上傳指令;
第二接收模塊,用于接收至少一個所述待測應(yīng)用裝置上傳的與所述測試時長對應(yīng)的覆蓋率數(shù)據(jù)文件;所述上傳的覆蓋率數(shù)據(jù)文件是通過所述覆蓋率采集客戶端采集的;
覆蓋率獲取模塊,用于根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
一種服務(wù)器,包括:
第一接收模塊,用于接收用戶終端發(fā)送的標識信息;
確定模塊,用于根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置;
指令發(fā)送模塊,用于向至少一個所述待測應(yīng)用裝置發(fā)送上傳指令;
第二接收模塊,用于接收至少一個所述待測應(yīng)用裝置上傳的通過所述覆蓋率采集客戶端采集的覆蓋率數(shù)據(jù)文件;
覆蓋率獲取模塊,用于根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
一種服務(wù)器,包括:
接收模塊,用于在預(yù)設(shè)的上報時刻達到時,接收至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置上傳的覆蓋率數(shù)據(jù)文件;所述覆蓋率數(shù)據(jù)文件是通過所述覆蓋率采集客戶端采集的;
覆蓋率獲取模塊,用于根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
一種待測應(yīng)用裝置,包括:
第一指令接收模塊,用于在第一時刻接收服務(wù)器發(fā)送的開始指令;
第一觸發(fā)模塊,用于觸發(fā)待測應(yīng)用裝置上安裝的覆蓋率采集客戶端的采集開始動作;
第二指令接收模塊,用于在第二時刻接收服務(wù)器發(fā)送的結(jié)束指令;
第二觸發(fā)模塊,用于觸發(fā)所述覆蓋率采集客戶端的采集結(jié)束動作;
上傳模塊,用于將所述第一時刻到所述第二時刻采集得到的覆蓋率數(shù)據(jù)文件上傳至所述服務(wù)器。
一種待測應(yīng)用裝置,包括:
指令接收模塊,用于接收服務(wù)器發(fā)送的攜帶有測試時長的上傳指令;
數(shù)據(jù)采集模塊,根據(jù)所述測試時長,通過待測應(yīng)用裝置上安裝的覆蓋率采集客戶端采集與所述測試時長對應(yīng)的覆蓋率數(shù)據(jù)文件;
上傳模塊,用于將采集的所述覆蓋率數(shù)據(jù)文件上傳至所述服務(wù)器。
由以上本申請實施例提供的技術(shù)方案可見,本申請實施例通過在待測應(yīng)用裝置上安裝覆蓋率采集客戶端,在遠程過程調(diào)用RPC的代碼測試過程中,利用上述覆蓋率采集客戶端來采集所述待測應(yīng)用裝置的覆蓋率數(shù)據(jù)文件,并將采集的覆蓋率數(shù)據(jù)文件上傳至服務(wù)器上,最終服務(wù)器根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到各個待測應(yīng)用裝置對應(yīng)的覆蓋率信息,從而實現(xiàn)了遠程過程調(diào)用RPC 的代碼覆蓋率的獲取。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請實施例中遠程過程調(diào)用RPC的軟件測試系統(tǒng)的架構(gòu)圖;
圖2為本申請第一實施例中以服務(wù)器為主體的代碼覆蓋率獲取方法的流程圖;
圖3為本申請第二實施例中以服務(wù)器為主體的代碼覆蓋率獲取方法的流程圖;
圖4為本申請第三實施例中以服務(wù)器為主體的代碼覆蓋率獲取方法的流程圖;
圖5為本申請第四實施例中以服務(wù)器為主體的代碼覆蓋率獲取方法的流程圖;
圖6為本申請第一實施例中以待測應(yīng)用裝置為主體的代碼覆蓋率獲取方法的流程圖;
圖7為本申請第二實施例中以待測應(yīng)用裝置為主體的代碼覆蓋率獲取方法的流程圖;
圖8為本申請第一實施例中的服務(wù)器的模塊圖;
圖9為本申請第二實施例中的服務(wù)器的模塊圖;
圖10為本申請第三實施例中的服務(wù)器的模塊圖;
圖11為本申請第一實施例中的待測應(yīng)用裝置的模塊圖;
圖12為本申請第二實施例中的待測應(yīng)用裝置的模塊圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請中的技術(shù)方案,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當屬于本申請保護的范圍。
圖1為本申請實施例中遠程過程調(diào)用RPC的軟件測試系統(tǒng)的架構(gòu)圖。該系統(tǒng)包括覆蓋率采集服務(wù)器100、測試服務(wù)器200、用戶終端300以及至少一個待測應(yīng)用裝置。其中,上述待測應(yīng)用裝置可以是服務(wù)器或終端,該待測應(yīng)用裝置上安裝有待測代碼、及用于在遠程過程調(diào)用RPC的測試過程中采集代碼覆蓋率數(shù)據(jù)的覆蓋率采集客戶端應(yīng)用,相應(yīng)地,上述覆蓋率采集服務(wù)器100上安裝有覆蓋率采集服務(wù)器端應(yīng)用。測試服務(wù)器200(或稱CI(Continuous integration)平臺)主要用于代碼編譯、發(fā)布及自動化測試,其利用預(yù)先存儲在該測試服務(wù)器200上的測試用例來執(zhí)行遠程過程調(diào)用RPC的代碼測試。用戶終端300與上述測試服務(wù)器200通信,從而通過訪問該測試服務(wù)器200來獲取覆蓋率信息。
圖2為本申請第一實施例中以服務(wù)器為主體的代碼覆蓋率獲取方法的流程圖。結(jié)合圖1和圖2,本實施例中,所述服務(wù)器可以是覆蓋率采集服務(wù)器100和所述測試服務(wù)器200的組合,則上述方法包括:
S101:接收用戶終端發(fā)送的標識信息。
在測試開始時,用戶通過用戶終端300訪問覆蓋率采集服務(wù)器100,本實施例中,用戶終端300通過上述測試服務(wù)器200訪問上述覆蓋率采集服務(wù)器100。具體地,用戶終端可以通過網(wǎng)頁或應(yīng)用APP的形式向上述覆蓋率采集服務(wù)器100發(fā)送所需測試的應(yīng)用裝置的標識信息,該標識信息可以是與應(yīng)用裝置對應(yīng)的統(tǒng)一資源定位符(Uniform Resource Locator,URL)、或設(shè)備ID等。
S102:根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測 應(yīng)用裝置。
預(yù)先將各個安裝有待測代碼的應(yīng)用裝置所對應(yīng)的標識信息,如:URL,存儲于數(shù)據(jù)庫中,當覆蓋率采集服務(wù)器100接收到該標識信息后,可以通過查詢上述數(shù)據(jù)庫來確定當前用戶所需測試的應(yīng)用裝置是哪些。當然,用戶可以選擇測試一個或多個待測應(yīng)用裝置。
因為需要采集遠程過程調(diào)用RPC的測試過程的覆蓋率數(shù)據(jù)文件,所以在每個待測應(yīng)用裝置上會安裝相應(yīng)的用以采集上述覆蓋率數(shù)據(jù)文件的覆蓋率采集客戶端(應(yīng)用APP),在測試服務(wù)器200調(diào)用測試用例進行軟件測試的過程中,上述覆蓋率采集客戶端便可以采集到各個應(yīng)用裝置的覆蓋率數(shù)據(jù)文件。具體地,覆蓋率采集客戶端通過在源代碼文件或二進制文件中作插樁,并統(tǒng)計軟件測試過程中代碼被執(zhí)行的情況,最終得到用以分析得到覆蓋率信息的覆蓋率數(shù)據(jù)文件。所述插樁是指:在保證待測代碼程序的原有邏輯完整性的基礎(chǔ)上,在待測代碼程序中插入一些探針,通過上述探針的執(zhí)行并拋出程序運行的特征數(shù)據(jù),通過對這些數(shù)據(jù)的分析,可以獲得程序的控制流信息和數(shù)據(jù)流信息,進而得到代碼覆蓋率數(shù)據(jù)等信息,從而實現(xiàn)測試目的。由于采集覆蓋率數(shù)據(jù)文件的過程是本領(lǐng)域普通技術(shù)人員所熟知的,故不再予以詳細描述。
S103:在第一時刻向至少一個所述待測應(yīng)用裝置發(fā)送開始指令StartRecord。
S104:在第二時刻向至少一個所述待測應(yīng)用裝置發(fā)送結(jié)束指令StopRecord。
本實施例中,覆蓋率采集服務(wù)器100在接收到用戶終端發(fā)送的標識信息時,測試服務(wù)器200會開始遠程過程調(diào)用RPC的軟件測試過程,此刻覆蓋率采集服務(wù)器100會隨即向上述確定的待測應(yīng)用裝置發(fā)送開始采集覆蓋率數(shù)據(jù)文件的開始指令StartRecord,以觸發(fā)上述覆蓋率采集客戶端的采集開始動作。待測應(yīng)用裝置在接收到該開始指令后,會首先將該待測應(yīng)用裝置的內(nèi)存中的覆蓋率數(shù)據(jù)導(dǎo)出(dump),并將導(dǎo)出的覆蓋率數(shù)據(jù)與當前待測應(yīng)用裝置上存放的歷史覆 蓋率數(shù)據(jù)進行合并,隨后將內(nèi)存清空,以便于采集接下來的一段測試時長內(nèi)的覆蓋率數(shù)據(jù)。
相應(yīng)地,在測試服務(wù)器200的測試過程結(jié)束時,覆蓋率采集服務(wù)器100會向上述各個待測應(yīng)用裝置結(jié)束采集覆蓋率數(shù)據(jù)文件的結(jié)束指令StopRecord,以觸發(fā)上述覆蓋率采集客戶端的采集結(jié)束動作。
S105:接收至少一個所述待測應(yīng)用裝置上傳的通過所述覆蓋率采集客戶端采集的覆蓋率數(shù)據(jù)文件。所述上傳的覆蓋率數(shù)據(jù)文件是所述第一時刻到所述第二時刻的數(shù)據(jù)。
S106:根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
如前所述,結(jié)束指令StopRecord發(fā)送之后,各個待測應(yīng)用裝置上的覆蓋率采集客戶端均采集得到一段測試時長內(nèi)的覆蓋率數(shù)據(jù)文件,上述測試時長即第一時刻到第二時刻的時長。隨后,覆蓋率采集客戶端會將采集到的覆蓋率數(shù)據(jù)文件上傳至所述覆蓋率采集服務(wù)器100。在步驟S106中,覆蓋率采集服務(wù)器100接收到各個應(yīng)用裝置上傳的覆蓋率數(shù)據(jù)文件后,通過采集服務(wù)器端的分析工具來分析各個覆蓋率數(shù)據(jù)文件rpc_coverage.exec,確定實際被執(zhí)行的代碼行數(shù)及總共需要執(zhí)行的代碼行數(shù),從而計算得出各個覆蓋率數(shù)據(jù)文件rpc_coverage.exec所對應(yīng)的覆蓋率信息。最終生成計算得到的覆蓋率信息與各個待測應(yīng)用裝置的標識信息(如:URL)的映射關(guān)系并存儲。
最終,計算得到的覆蓋率信息會被存放到測試服務(wù)器200上,用戶終端300可以通過訪問上述測試服務(wù)器200來查看相應(yīng)的覆蓋率信息,從而實現(xiàn)了遠程過程調(diào)用RPC的軟件測試過程的覆蓋率信息的獲取。
圖3為本申請第二實施例中以服務(wù)器為主體的代碼覆蓋率獲取方法的流程圖。結(jié)合圖1和圖3,本實施例中,所述服務(wù)器可以是覆蓋率采集服務(wù)器100和所述測試服務(wù)器200的組合,則上述方法包括:
S201:接收用戶終端發(fā)送的標識信息。
S202:根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置。
S203:向至少一個所述待測應(yīng)用裝置發(fā)送攜帶有測試時長的上傳指令。
S204:接收至少一個所述待測應(yīng)用裝置上傳的與所述測試時長對應(yīng)的覆蓋率數(shù)據(jù)文件;所述上傳的覆蓋率數(shù)據(jù)文件是通過所述覆蓋率采集客戶端采集的。
S205:根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
本實施例中的具體技術(shù)細節(jié)如前所述,與上述實施例的區(qū)別在于:上述步驟S203通過向各個待測應(yīng)用裝置發(fā)送一個攜帶有測試時長的上傳指令,來觸發(fā)各個待測應(yīng)用裝置上傳與測試時長對應(yīng)的覆蓋率數(shù)據(jù)文件。也就是說,本實施例只需要發(fā)送一個指令即可實現(xiàn)某段測試時長的覆蓋率數(shù)據(jù)文件的獲取。例如,測試時長是5分鐘,則用戶需要獲取的是當前時刻開始后的5分鐘內(nèi)的覆蓋率數(shù)據(jù)文件。
值得一提的是,本實施例中,在測試服務(wù)器200的測試過程中,各個待測應(yīng)用裝置上的覆蓋率數(shù)據(jù)文件的采集動作是一直進行的,即可以不是由上述上傳指令來觸發(fā)的。
圖4為本申請第三實施例中以服務(wù)器為主體的代碼覆蓋率獲取方法的流程圖。結(jié)合圖1和圖4,本實施例中,所述服務(wù)器可以是覆蓋率采集服務(wù)器100和所述測試服務(wù)器200的組合,則上述方法包括:
S301:接收用戶終端發(fā)送的標識信息。
S302:根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置。
S303:向至少一個所述待測應(yīng)用裝置發(fā)送上傳指令。
S304:接收至少一個所述待測應(yīng)用裝置上傳的通過所述覆蓋率采集客戶端采集的覆蓋率數(shù)據(jù)文件。
S305:根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
本實施例中的具體技術(shù)細節(jié)如前所述,與上述實施例的區(qū)別在于:上述步驟S303通過向至少一個所述待測應(yīng)用裝置發(fā)送上傳指令,來獲取該待測應(yīng)用裝置上所采集到的覆蓋率數(shù)據(jù)文件。也就是說,隨著測試服務(wù)器200的軟件測試過程的進行,各個待測應(yīng)用裝置的覆蓋率采集動作一直在進行,但是采集到的覆蓋率數(shù)據(jù)文件的上傳動作需要上述上傳指令來觸發(fā)。一旦待測應(yīng)用裝置接收到上述上傳指令,即會將本待測應(yīng)用裝置的覆蓋率采集客戶端所采集到的覆蓋率數(shù)據(jù)文件上傳至所述覆蓋率采集服務(wù)器100。具體地,上傳的覆蓋率數(shù)據(jù)文件可以包括待測應(yīng)用裝置內(nèi)存中的數(shù)據(jù)、或該待測應(yīng)用裝置上存放的歷史覆蓋率數(shù)據(jù)。
圖5為本申請第四實施例中以服務(wù)器為主體的代碼覆蓋率獲取方法的流程圖。結(jié)合圖1和圖5,本實施例中,所述服務(wù)器可以是覆蓋率采集服務(wù)器100和所述測試服務(wù)器200的組合,則上述方法包括:
S401:在預(yù)設(shè)的上報時刻達到時,接收至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置上傳的覆蓋率數(shù)據(jù)文件。所述覆蓋率數(shù)據(jù)文件是通過所述覆蓋率采集客戶端采集的。
S402:根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
本實施例中的具體技術(shù)細節(jié)如前所述,與上述實施例的區(qū)別在于:通過預(yù)先設(shè)置定時上傳覆蓋率數(shù)據(jù)文件的上報時刻,來觸發(fā)各個待測應(yīng)用裝置的覆蓋率數(shù)據(jù)文件。例如,各個待測應(yīng)用裝置每5分鐘向覆蓋率采集服務(wù)器100上報一次所采集到的覆蓋率數(shù)據(jù)文件,其可以是歷史覆蓋率數(shù)據(jù)、或在上一次上報時刻和本次上報時刻之間的時長內(nèi)所采集到的覆蓋率數(shù)據(jù)。
圖6為本申請第一實施例中以待測應(yīng)用裝置為主體的代碼覆蓋率獲取方法的流程圖。結(jié)合圖1和圖6,本實施例的方法包括:
S501:在第一時刻接收服務(wù)器發(fā)送的開始指令,觸發(fā)待測應(yīng)用裝置上安裝的覆蓋率采集客戶端的采集開始動作。
S502:在第二時刻接收服務(wù)器發(fā)送的結(jié)束指令,觸發(fā)所述覆蓋率采集客戶端的采集結(jié)束動作。
S503:將所述第一時刻到所述第二時刻采集得到的覆蓋率數(shù)據(jù)文件上傳至所述服務(wù)器。
本實施例中,所述服務(wù)器可以是上述測試服務(wù)器200和覆蓋率采集服務(wù)器100的組合。在測試開始時,安裝有待測代碼的待測應(yīng)用裝置通過接收覆蓋率采集服務(wù)器100發(fā)送的開始指令,來觸發(fā)覆蓋率數(shù)據(jù)文件的采集開始動作。在測試結(jié)束時,待測應(yīng)用裝置通過接收覆蓋率采集服務(wù)器100發(fā)送的結(jié)束指令,來觸發(fā)覆蓋率數(shù)據(jù)文件的采集結(jié)束動作?;谏鲜鲞^程,可以通過覆蓋率采集客戶端采集到所述第一時刻到所述第二時刻內(nèi)的覆蓋率數(shù)據(jù)文件,并將該覆蓋率數(shù)據(jù)文件上傳到覆蓋率采集服務(wù)器100進行分析,以計算得出相應(yīng)的覆蓋率信息,覆蓋率采集服務(wù)器100將計算到的覆蓋率信息發(fā)送至測試服務(wù)器200進行存儲。
本申請實施例中,所述方法還包括:
將所述第一時刻到所述第二時刻的代碼覆蓋率數(shù)據(jù)與所述待測應(yīng)用裝置上存儲的歷史覆蓋率數(shù)據(jù)進行合并,得到與當前待測應(yīng)用裝置對應(yīng)的歷史覆蓋率數(shù)據(jù)文件。
本實施例中,待測應(yīng)用裝置在接收到該開始指令后,會首先將該待測應(yīng)用裝置的內(nèi)存中的覆蓋率數(shù)據(jù)導(dǎo)出(dump),并將導(dǎo)出的覆蓋率數(shù)據(jù)與當前待測應(yīng)用裝置上存放的歷史覆蓋率數(shù)據(jù)進行合并,隨后將內(nèi)存清空,以便于采集接下來的一段測試時長內(nèi)的覆蓋率數(shù)據(jù)。本實施例可以在獲取某個時長內(nèi)的覆蓋率數(shù)據(jù)的同時,確保各個待測應(yīng)用裝置上的歷史覆蓋率數(shù)據(jù)的完整性。
圖7為本申請第二實施例中以待測應(yīng)用裝置為主體的代碼覆蓋率獲取方法的流程圖。結(jié)合圖1和圖7,本實施例的方法包括:
S601:接收服務(wù)器發(fā)送的攜帶有測試時長的上傳指令。
S602:根據(jù)所述測試時長,通過待測應(yīng)用裝置上安裝的覆蓋率采集客戶端采集與所述測試時長對應(yīng)的覆蓋率數(shù)據(jù)文件。
S603:將采集的所述覆蓋率數(shù)據(jù)文件上傳至所述服務(wù)器。
本實施例中的具體技術(shù)細節(jié)如前所述,與上述實施例的區(qū)別在于:上述步驟S601接收的是覆蓋率采集服務(wù)器100發(fā)送的攜帶有測試時長的上傳指令,步驟S602中,覆蓋率采集客戶端根據(jù)上傳指令中的測試時長來采集與上述測試時長相應(yīng)的覆蓋率數(shù)據(jù)文件。也就是說,本實施例只需要接收一個指令即可實現(xiàn)某段測試時長的覆蓋率數(shù)據(jù)文件的獲取。
本申請實施例中,所述方法還包括:
將所述第一時刻到所述第二時刻的代碼覆蓋率數(shù)據(jù)與所述待測應(yīng)用裝置上存儲的歷史覆蓋率數(shù)據(jù)進行合并,得到與當前待測應(yīng)用裝置對應(yīng)的歷史覆蓋率數(shù)據(jù)文件。本實施例可以在獲取某個時長內(nèi)的覆蓋率數(shù)據(jù)的同時,確保各個待測應(yīng)用裝置上的歷史覆蓋率數(shù)據(jù)的完整性。
接下來將結(jié)合圖8至圖12介紹本申請實施例中服務(wù)器及待測應(yīng)用裝置的技術(shù)方案,所述服務(wù)器及待測應(yīng)用裝置是基于上述代碼覆蓋率獲取方法的原理的,故服務(wù)器、待測應(yīng)用裝置的具體技術(shù)特征可參照以上內(nèi)容。
圖8為本申請第一實施例中的服務(wù)器的模塊圖。本實施例中,所述服務(wù)器可以是覆蓋率采集服務(wù)器100和所述測試服務(wù)器200的組合,本實施例的服務(wù)器包括:
第一接收模塊11,用于接收用戶終端發(fā)送的標識信息。該標識信息可以是與應(yīng)用裝置對應(yīng)的統(tǒng)一資源定位符(Uniform Resource Locator,URL)、或設(shè)備ID等。
確定模塊12,用于根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置。
第一指令發(fā)送模塊13,用于在第一時刻向至少一個所述待測應(yīng)用裝置發(fā)送 開始指令。
第二指令發(fā)送模塊14,用于在第二時刻向至少一個所述待測應(yīng)用裝置發(fā)送結(jié)束指令。
第二接收模塊15,用于接收至少一個所述待測應(yīng)用裝置上傳的通過所述覆蓋率采集客戶端采集的覆蓋率數(shù)據(jù)文件;所述上傳的覆蓋率數(shù)據(jù)文件是所述第一時刻到所述第二時刻的數(shù)據(jù)。
覆蓋率獲取模塊16,用于根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
圖9為本申請第二實施例中的服務(wù)器的模塊圖。本實施例中,所述服務(wù)器可以是覆蓋率采集服務(wù)器100和所述測試服務(wù)器200的組合,本實施例的服務(wù)器包括:
第一接收模塊21,用于接收用戶終端發(fā)送的標識信息。
確定模塊22,用于根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置。
指令發(fā)送模塊23,用于向至少一個所述待測應(yīng)用裝置發(fā)送攜帶有測試時長的上傳指令。
第二接收模塊24,用于接收至少一個所述待測應(yīng)用裝置上傳的與所述測試時長對應(yīng)的覆蓋率數(shù)據(jù)文件;所述上傳的覆蓋率數(shù)據(jù)文件是通過所述覆蓋率采集客戶端采集的。
覆蓋率獲取模塊25,用于根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
繼續(xù)參照圖9,本申請另一實施例中,上述服務(wù)器包括:
第一接收模塊21,用于接收用戶終端發(fā)送的標識信息。
確定模塊22,用于根據(jù)接收的標識信息確定至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置。
指令發(fā)送模塊23,用于向至少一個所述待測應(yīng)用裝置發(fā)送上傳指令。
第二接收模塊24,用于接收至少一個所述待測應(yīng)用裝置上傳的通過所述覆蓋率采集客戶端采集的覆蓋率數(shù)據(jù)文件。
覆蓋率獲取模塊25,用于根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
圖10為本申請第三實施例中的服務(wù)器的模塊圖。本實施例中,所述服務(wù)器可以是覆蓋率采集服務(wù)器100和所述測試服務(wù)器200的組合,本實施例的服務(wù)器包括:
接收模塊31,用于在預(yù)設(shè)的上報時刻達到時,接收至少一個安裝有覆蓋率采集客戶端的待測應(yīng)用裝置上傳的覆蓋率數(shù)據(jù)文件。所述覆蓋率數(shù)據(jù)文件是通過所述覆蓋率采集客戶端采集的。
覆蓋率獲取模塊32,用于根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到覆蓋率信息,并建立所述覆蓋率信息與所述待測應(yīng)用裝置的標識信息的映射關(guān)系。
圖11為本申請第一實施例中的待測應(yīng)用裝置的模塊圖。本實施例的待測應(yīng)用裝置包括:
第一指令接收模塊41,用于在第一時刻接收服務(wù)器發(fā)送的開始指令。
第一觸發(fā)模塊42,用于觸發(fā)待測應(yīng)用裝置上安裝的覆蓋率采集客戶端的采集開始動作。
第二指令接收模塊43,用于在第二時刻接收服務(wù)器發(fā)送的結(jié)束指令。
第二觸發(fā)模塊44,用于觸發(fā)所述覆蓋率采集客戶端的采集結(jié)束動作。
上傳模塊45,用于將所述第一時刻到所述第二時刻采集得到的覆蓋率數(shù)據(jù)文件上傳至所述服務(wù)器。
本申請實施例中,所述裝置還包括合并模塊,用于:
將所述第一時刻到所述第二時刻的代碼覆蓋率數(shù)據(jù)與所述待測應(yīng)用裝置上存儲的歷史覆蓋率數(shù)據(jù)進行合并,得到與當前待測應(yīng)用裝置對應(yīng)的歷史覆蓋率數(shù)據(jù)文件。
圖12為本申請第二實施例中的待測應(yīng)用裝置的模塊圖。本實施例的待測 應(yīng)用裝置包括:
指令接收模塊51,用于接收服務(wù)器發(fā)送的攜帶有測試時長的上傳指令。
數(shù)據(jù)采集模塊52,根據(jù)所述測試時長,通過待測應(yīng)用裝置上安裝的覆蓋率采集客戶端采集與所述測試時長對應(yīng)的覆蓋率數(shù)據(jù)文件。
上傳模塊53,用于將采集的所述覆蓋率數(shù)據(jù)文件上傳至所述服務(wù)器。
本申請實施例中,所述裝置還包括合并模塊,用于:
將所述第一時刻到所述第二時刻的代碼覆蓋率數(shù)據(jù)與所述待測應(yīng)用裝置上存儲的歷史覆蓋率數(shù)據(jù)進行合并,得到與當前待測應(yīng)用裝置對應(yīng)的歷史覆蓋率數(shù)據(jù)文件。
由以上本申請實施例提供的技術(shù)方案可見,本申請實施例基于以上方法、服務(wù)器及待測應(yīng)用裝置,通過在待測應(yīng)用裝置上安裝覆蓋率采集客戶端,在遠程過程調(diào)用RPC的代碼測試過程中,利用上述覆蓋率采集客戶端來采集所述待測應(yīng)用裝置的覆蓋率數(shù)據(jù)文件,并將采集的覆蓋率數(shù)據(jù)文件上傳至服務(wù)器上,最終服務(wù)器根據(jù)上傳的覆蓋率數(shù)據(jù)文件計算得到各個待測應(yīng)用裝置對應(yīng)的覆蓋率信息,從而實現(xiàn)了遠程過程調(diào)用RPC的代碼覆蓋率的獲取。
值得一提的是,本申請以上實施例中,待測應(yīng)用裝置上安裝的覆蓋率采集客戶端負責覆蓋率數(shù)據(jù)文件的采集工作,而覆蓋率采集服務(wù)器上安裝的覆蓋率采集服務(wù)端負責覆蓋率數(shù)據(jù)文件的分析工作,并通過分析得到各個待測應(yīng)用裝置在特定時長內(nèi)的覆蓋率信息并存儲。當然,在其它實施例中,也可以通過覆蓋率采集客戶端采集并分析得到各個覆蓋率信息,并將分析得到的覆蓋率信息發(fā)送給覆蓋率采集服務(wù)器予以存儲,也就是說,采集和分析的工作均在覆蓋率采集客戶端上進行。
為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當然,在實施本申請時可以把各單元的功能在同一個或多個軟件和/或硬件中實現(xiàn)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié) 合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和 硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本申請可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。
本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應(yīng)包含在本申請的權(quán)利要求范圍之內(nèi)。