亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

代碼測試方法、代碼測試裝置及代碼測試系統(tǒng)與流程

文檔序號:11230340閱讀:889來源:國知局
代碼測試方法、代碼測試裝置及代碼測試系統(tǒng)與流程

本申請涉及軟件測試技術(shù),特別涉及一種代碼測試方法、代碼測試裝置及代碼測試系統(tǒng)。



背景技術(shù):

持續(xù)集成(continuousintegration,ci)作為一種軟件開發(fā)實踐,通過自動化的構(gòu)建(包括編譯,發(fā)布,自動化測試)來驗證代碼,從而盡早地發(fā)現(xiàn)代碼問題。通常,持續(xù)集成通過版本庫服務(wù)器及持續(xù)集成服務(wù)器(ci服務(wù)器)來實現(xiàn)。

現(xiàn)有技術(shù)中,在軟件項目開發(fā)的過程中,通常將ci服務(wù)器對代碼進(jìn)行測試的周期設(shè)定成固定的。這樣,隨著開發(fā)人員不斷地向版本庫服務(wù)器提交代碼,ci服務(wù)器每隔一定的時間間隔(對應(yīng)于上述固定的周期),便從版本庫服務(wù)器獲取在最近一個周期內(nèi)提交的代碼,并對這些代碼執(zhí)行測試動作。

現(xiàn)有技術(shù)中,由于在上述固定的周期內(nèi),可能存在多個開發(fā)人員提交的多個代碼版本,并且每個開發(fā)人員還可能在一個周期內(nèi)提交多次代碼的情況,代碼更迭速度較快。舉例而言,在一個周期內(nèi),某個分支的代碼被開發(fā)人員提交了n次,每個提交動作對應(yīng)一次代碼版本的更新,假設(shè)該周期的起始時刻的代碼版本為vm,則該分支的代碼版本從vm變更成vm+n。在該周期結(jié)束時,便觸發(fā)對該分支的代碼版本vm+n的測試動作,如果在測試過程中發(fā)現(xiàn)代碼版本vm+n存在問題,則必須回溯該問題是在哪一個代碼版本出現(xiàn)的。然而,由于在上述周期內(nèi),該分支的代碼版本已經(jīng)經(jīng)歷了多個版本的變化,這樣便增加在發(fā)現(xiàn)代碼問題時回溯問題所在的困難性。



技術(shù)實現(xiàn)要素:

本申請實施例的目的是提供一種代碼測試方法、代碼測試裝置及代碼測試系統(tǒng),以解決現(xiàn)有技術(shù)中存在的上述問題。

為解決上述技術(shù)問題,本申請各實施例提供的代碼測試方法、代碼測試裝置及代碼測試系統(tǒng)是這樣實現(xiàn)的:

一種代碼測試方法,包括:

版本庫服務(wù)器監(jiān)測工作機(jī)提交代碼的命令;

版本庫服務(wù)器在監(jiān)測到工作機(jī)提交代碼的命令時,接收所述工作機(jī)提交的代碼并生成與當(dāng)前提交的代碼對應(yīng)的攜帶測試參數(shù)的值的測試任務(wù)命令;

版本庫服務(wù)器向持續(xù)集成服務(wù)器發(fā)送所述測試任務(wù)命令以觸發(fā)對所述代碼的測試任務(wù)。

一種代碼測試方法,包括:

持續(xù)集成服務(wù)器接收版本庫服務(wù)器發(fā)送的與當(dāng)前提交到版本庫服務(wù)器上的代碼對應(yīng)的并攜帶測試參數(shù)的值的測試任務(wù)命令;其中,所述測試任務(wù)命令是所述版本庫服務(wù)器在監(jiān)測到工作機(jī)提交代碼的命令時生成的;

持續(xù)集成服務(wù)器從所述版本庫服務(wù)器獲取當(dāng)前提交的代碼,并觸發(fā)對當(dāng)前提交的代碼執(zhí)行與所述測試任務(wù)命令對應(yīng)的測試任務(wù),得到測試結(jié)果數(shù)據(jù);

持續(xù)集成服務(wù)器向所述工作機(jī)發(fā)送攜帶與當(dāng)前提交動作對應(yīng)的id的所述測試結(jié)果數(shù)據(jù)。

一種代碼測試方法,包括:

服務(wù)器監(jiān)測工作機(jī)提交代碼的命令;

服務(wù)器在監(jiān)測到工作機(jī)提交代碼的命令時,接收所述工作機(jī)提交的代碼并生成與當(dāng)前提交的代碼對應(yīng)的并攜帶測試參數(shù)的值的測試任務(wù)命令;

服務(wù)器從所述版本庫服務(wù)器獲取當(dāng)前提交的代碼,并觸發(fā)對當(dāng)前提交的代碼執(zhí)行與所述測試任務(wù)命令對應(yīng)的測試任務(wù),得到測試結(jié)果數(shù)據(jù);

服務(wù)器向所述工作機(jī)發(fā)送攜帶與當(dāng)前提交動作對應(yīng)的id的所述測試結(jié)果 數(shù)據(jù)。

一種代碼測試裝置,包括:

監(jiān)測單元,用于監(jiān)測工作機(jī)提交代碼的命令;

命令生成單元,用于在監(jiān)測到工作機(jī)提交代碼的命令時,接收所述工作機(jī)提交的代碼并生成與當(dāng)前提交的代碼對應(yīng)的攜帶測試參數(shù)的值的測試任務(wù)命令;

命令發(fā)送單元,用于向持續(xù)集成服務(wù)器發(fā)送所述測試任務(wù)命令以觸發(fā)對所述代碼的測試任務(wù)。

一種代碼測試裝置,包括:

命令接收單元,用于接收版本庫服務(wù)器發(fā)送的與當(dāng)前提交到版本庫服務(wù)器上的代碼對應(yīng)的并攜帶測試參數(shù)的值的測試任務(wù)命令;其中,所述測試任務(wù)命令是所述版本庫服務(wù)器在監(jiān)測到工作機(jī)提交代碼的命令時生成的;

測試任務(wù)觸發(fā)單元,用于從所述版本庫服務(wù)器獲取當(dāng)前提交的代碼,并觸發(fā)對當(dāng)前提交的代碼執(zhí)行與所述測試任務(wù)命令對應(yīng)的測試任務(wù),得到測試結(jié)果數(shù)據(jù);

測試結(jié)果發(fā)送單元,用于向所述工作機(jī)發(fā)送攜帶與當(dāng)前提交動作對應(yīng)的id的所述測試結(jié)果數(shù)據(jù)。

一種代碼測試系統(tǒng),包括:

監(jiān)測單元,用于監(jiān)測工作機(jī)提交代碼的命令;

命令生成單元,用于在監(jiān)測到工作機(jī)提交代碼的命令時,接收所述工作機(jī)提交的代碼并生成與當(dāng)前提交的代碼對應(yīng)的并攜帶測試參數(shù)的值的測試任務(wù)命令;

測試任務(wù)觸發(fā)單元,用于從所述版本庫服務(wù)器獲取當(dāng)前提交的代碼,并觸發(fā)對當(dāng)前提交的代碼執(zhí)行與所述測試任務(wù)命令對應(yīng)的測試任務(wù),得到測試結(jié)果數(shù)據(jù);

測試結(jié)果發(fā)送單元,用于向所述工作機(jī)發(fā)送攜帶與當(dāng)前提交動作對應(yīng)的id 的所述測試結(jié)果數(shù)據(jù)。

由以上本申請各實施例提供的技術(shù)方案可見,在本申請實施例中,在監(jiān)測到工作機(jī)提交代碼的命令并且工作機(jī)提交的代碼為業(yè)務(wù)代碼時,生成與當(dāng)前提交的業(yè)務(wù)代碼對應(yīng)的測試任務(wù)命令,從而通過該測試任務(wù)命令觸發(fā)對提交的業(yè)務(wù)代碼的測試動作。相較于現(xiàn)有技術(shù)中以固定周期為粒度,本申請實施例通過以提交為粒度,這樣,只要監(jiān)測到一次業(yè)務(wù)代碼的提交動作,便觸發(fā)一次對當(dāng)前提交的業(yè)務(wù)代碼的測試動作,從而通過測試及時發(fā)現(xiàn)每次提交的代碼版本中存在的問題,從而可以避免現(xiàn)有技術(shù)中因業(yè)務(wù)代碼更迭速度較快,而導(dǎo)致代碼出現(xiàn)問題時無法快速回溯問題所在的情況,進(jìn)而提升代碼開發(fā)效率。

附圖說明

為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本申請示例性的系統(tǒng)架構(gòu)圖;

圖2為本申請一實施例提供的代碼測試方法的流程圖;

圖3為本申請一實施例提供的以版本庫服務(wù)器為主體的代碼測試方法的流程圖;

圖4為本申請一實施例提供的以持續(xù)集成服務(wù)器為主體的代碼測試方法的流程圖;

圖5為本申請另一實施例提供的代碼測試方法的流程圖;

圖6為本申請一實施例提供的代碼測試裝置(與版本庫服務(wù)器對應(yīng))的模塊示意圖;

圖7為本申請一實施例提供的代碼測試裝置(與持續(xù)集成服務(wù)器對應(yīng))的模塊示意圖;

圖8為本申請另一實施例提供的代碼測試系統(tǒng)的模塊示意圖。

具體實施方式

為了使本技術(shù)領(lǐng)域的人員更好地理解本申請中的技術(shù)方案,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本申請保護(hù)的范圍。

圖1為本申請實施例提供的示例性的系統(tǒng)架構(gòu)圖,該架構(gòu)包括版本庫服務(wù)器10、持續(xù)集成服務(wù)器20(ci服務(wù)器)及若干工作機(jī)30。其中,版本庫服務(wù)器10用以存儲各個工作機(jī)30提交的代碼并對這些代碼進(jìn)行管理,工作機(jī)30可以定期將代碼提交到上述版本庫服務(wù)器10進(jìn)行存儲,并且也可以隨時從該版本庫服務(wù)器10上獲取任意代碼。該版本庫服務(wù)器10可例如是svn(subversion)、cvs(concurrentversionsystem)等代碼版本控制系統(tǒng)。上述工作機(jī)20是軟件開發(fā)人員所使用的終端(如pc)。上述ci服務(wù)器20用以自動完成軟件代碼的編譯和測試過程,該測試過程包括但不限于單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試、驗收測試、回歸測試、alpha測試、beta測試、pmd檢查測試等。其中,pmd為一種用以分析java代碼錯誤的工具,pmd掃描的問題包括:可能的bug、無效代碼、非最佳的代碼、過于復(fù)雜的表達(dá)式、重復(fù)代碼等。上述ci服務(wù)器20的測試過程需要一套自動化構(gòu)建腳本及一系列圍繞構(gòu)建的可執(zhí)行測試用例,ci服務(wù)器20可例如是travisci、jenkins、hudson等。在需要對代碼測試時,ci服務(wù)器20從版本庫服務(wù)器10上獲取所需進(jìn)行測試的代碼,并且利用該ci服務(wù)器20預(yù)先設(shè)定的測試任務(wù)及相關(guān)測試用例對上述代碼進(jìn)行測試,以得到測試結(jié)果數(shù)據(jù)。其中,所述測試結(jié)果數(shù)據(jù)包括但不限于代碼覆蓋率、pmd掃描的問題、測試用例通過率、錯誤個數(shù)信息等。

為解決現(xiàn)有技術(shù)中存在的在代碼檢測過程中較難回溯代碼問題的情況,本申請實施例中以提交粒度來觸發(fā)代碼測試任務(wù)。

圖2為本申請一實施例提供的代碼測試方法的流程,包括:

s101:工作機(jī)向版本庫服務(wù)器發(fā)送提交代碼的命令,并向版本庫服務(wù)器上傳所需提交的代碼。在軟件開發(fā)過程中,代碼開發(fā)人員可以定期或不定期地通過上述工作機(jī)將當(dāng)前最新版本的代碼提交到版本庫服務(wù)器上。上述工作機(jī)提交的可以是業(yè)務(wù)代碼、或測試代碼、或配置變更、pom(projectobjectmodel)修改等。

s102:版本庫服務(wù)器在監(jiān)測到工作機(jī)提交代碼的命令時,接收所述工作機(jī)提交的代碼并生成與當(dāng)前提交的代碼對應(yīng)的攜帶測試參數(shù)的值的測試任務(wù)命令。

本申請實施例中,版本庫服務(wù)器可以時刻監(jiān)測工作機(jī)提交代碼的命令,這樣,一旦工作機(jī)提交代碼的動作發(fā)生,版本庫服務(wù)器就可以監(jiān)測到工作機(jī)提交代碼的命令。在監(jiān)測到由代碼被提交時,就需要觸發(fā)對該提交的代碼的測試任務(wù)(與上述測試任務(wù)命令對應(yīng))。其中,所述測試參數(shù)的值用以定義測試任務(wù)的范圍,不同的測試參數(shù)的值表示測試任務(wù)的范圍不同,所述測試任務(wù)的范圍包括所采用的測試用例是哪些等。其中,所述測試參數(shù)的值可以是固定的(如:jdk(javadevelopmentkit)版本、java執(zhí)行參數(shù)等)或不固定的(如測試用例名)。

本申請實施例中,在生成與當(dāng)前提交的代碼對應(yīng)的攜帶測試參數(shù)的值的測試任務(wù)命令之前,所述方法還包括如下步驟:

版本庫服務(wù)器在監(jiān)測到工作機(jī)提交代碼的命令時,判斷所述工作機(jī)提交的代碼是否為業(yè)務(wù)代碼;若所述工作機(jī)提交的代碼為業(yè)務(wù)代碼,進(jìn)行上述步驟s102。這樣,可以確保只對業(yè)務(wù)代碼觸發(fā)相應(yīng)的測試任務(wù),而對于其他提交(如測試代碼、配置變更、pom修改),則不觸發(fā)測試任務(wù),從而可以避免較大頻率的測試任務(wù)給服務(wù)器造成較大負(fù)擔(dān)。當(dāng)然,本申請其他實施例中也可以設(shè)定 對其他類型的代碼啟動該測試任務(wù)。

本申請實施例中,在生成與當(dāng)前提交的代碼對應(yīng)的攜帶測試參數(shù)的值的測試任務(wù)命令之前,所述方法還包括如下步驟:

a)版本庫服務(wù)器獲取與所述工作機(jī)當(dāng)前提交的代碼對應(yīng)的上一次提交的代碼。

例如,假設(shè)當(dāng)前提交的代碼版本是v100,并且可以確定該代碼對應(yīng)的分支。通過查找上述版本庫服務(wù)器,可以得到與當(dāng)前提交的代碼屬于同一個分支的上一次提交的代碼版本v99。

b)版本庫服務(wù)器根據(jù)當(dāng)前提交的代碼及上一次提交的代碼,確定所述工作機(jī)當(dāng)前提交的代碼中發(fā)生變更的代碼部分。

通過比對上述代碼版本v100、v99,可以確定本次提交的代碼中較上一個版本發(fā)生變更的代碼部分。所述變更的代碼部分可以是以指定的代碼行、或預(yù)先劃分的與實現(xiàn)某個子功能對應(yīng)的單元。

c)版本庫服務(wù)器根據(jù)預(yù)先設(shè)定的代碼部分與測試參數(shù)的值的映射關(guān)系,確定與當(dāng)前提交的業(yè)務(wù)代碼對應(yīng)的測試參數(shù)的值。

本申請實施例中,為了緩解服務(wù)器的資源消耗,可以設(shè)定每次測試任務(wù)只對變更代碼部分進(jìn)行測試,可以通過預(yù)先設(shè)定代碼部分與測試參數(shù)的值的映射關(guān)系來實現(xiàn)。舉例而言,對于某個分支的代碼,與之對應(yīng)的測試用例集中包含測試用例1、測試用例2和測試用例3,假設(shè)某個分支的代碼可以劃分的代碼部分為:x、y、z,其中,可以預(yù)先設(shè)定的測試用例和代碼部分的映射關(guān)系是:

x→測試用例1;y→測試用例2;z→測試用例3;

假設(shè)上述測試參數(shù)包括與測試任務(wù)對應(yīng)的測試用例的id,則通過確定當(dāng)前提交的代碼中變更的代碼部分,則可以確定上述用以定義測試任務(wù)所用的測試用例的測試參數(shù)的值。當(dāng)然,在本申請其他實施例中,也可以為每個分支的代碼設(shè)定固定的測試任務(wù)的范圍(測試參數(shù)的值固定),這樣,在監(jiān)測到提交的代碼后,通過確定當(dāng)前提交的代碼的分支,即可以確定與之對應(yīng)的測試任務(wù)的 范圍。

s103:版本庫服務(wù)器向ci服務(wù)器發(fā)送所述測試任務(wù)命令。通過向ci服務(wù)器發(fā)送測試任務(wù)命令,可以使得ci服務(wù)器當(dāng)前需要進(jìn)行測試的代碼及對應(yīng)的測試任務(wù)。

s104:持續(xù)集成服務(wù)器從版本庫服務(wù)器獲取當(dāng)前提交的代碼,并觸發(fā)對當(dāng)前提交的代碼執(zhí)行與所述測試任務(wù)命令對應(yīng)的測試任務(wù),得到測試結(jié)果數(shù)據(jù)。

持續(xù)集成服務(wù)器上預(yù)先配置好一些測試任務(wù)(如回歸測試任務(wù)),并且確定了每個測試任務(wù)對應(yīng)的系統(tǒng)及代碼分支等。通過接收上述測試任務(wù)命令,并解析其中攜帶的測試參數(shù)既可觸發(fā)相應(yīng)的對當(dāng)前提交的代碼進(jìn)行的測試任務(wù)。

本申請實施例中,代碼開發(fā)人員每提交一次代碼時,系統(tǒng)便可以生成一個與當(dāng)前提交動作對應(yīng)的id(用以與之后得到的測試結(jié)果數(shù)據(jù)進(jìn)行關(guān)聯(lián)),上述與當(dāng)前提交動作對應(yīng)的id可以與開發(fā)人員的信息、工作機(jī)的id、提交的代碼分支、提交的批次、提交的時間等信息進(jìn)行對應(yīng)。

s106:ci服務(wù)器向工作機(jī)發(fā)送攜帶與當(dāng)前提交動作對應(yīng)的id的所述測試結(jié)果數(shù)據(jù),以供代碼開發(fā)人員進(jìn)行查看。其中,所述測試結(jié)果數(shù)據(jù)可以發(fā)送給相關(guān)的開發(fā)人員(提交人)、測試負(fù)責(zé)人。測試結(jié)果數(shù)據(jù)(如代碼覆蓋率、pmd掃描的問題、測試用例通過率、錯誤個數(shù)信息等)可以是以郵件等方式進(jìn)行發(fā)送,測試結(jié)果的呈現(xiàn)形式可以是表單的形式,本申請并不對測試結(jié)果的發(fā)送方式及測試結(jié)果的呈現(xiàn)形式進(jìn)行限制。

本申請實施例中,在上述步驟s104之后,且在上述步驟s106之前,所述方法還可以包括如下步驟:

s105:持續(xù)集成服務(wù)器將測試結(jié)果數(shù)據(jù)進(jìn)行序列化,得到j(luò)son字符串并存儲;持續(xù)集成服務(wù)器對json字符串進(jìn)行反序列化,得到至少一個預(yù)設(shè)指標(biāo)的測試結(jié)果數(shù)據(jù)。

一般地,ci服務(wù)器測試得到的結(jié)果可以在任務(wù)結(jié)果查看頁面上進(jìn)行查看,然而,如果代碼提交頻率的較高,則會導(dǎo)致測試結(jié)果數(shù)據(jù)的信息量較大,并且 每次測試任務(wù)所得到的測試結(jié)果數(shù)據(jù)可以包括若干個指標(biāo)的結(jié)果,這樣,會導(dǎo)致開發(fā)人員難以直觀地查看到關(guān)鍵信息。鑒于此,本申請實施例需要對測試結(jié)果數(shù)據(jù)進(jìn)行分析并提取其中的一個或多個關(guān)鍵的預(yù)設(shè)指標(biāo)的測試結(jié)果數(shù)據(jù),并發(fā)送給指定人員進(jìn)行查看。

本申請實施例中,可以將原始的與各測試任務(wù)對應(yīng)的測試結(jié)果數(shù)據(jù)以json字符串的形式進(jìn)行存儲并記錄存儲地址,通過對json字符串進(jìn)行反序列化,則可以對測試結(jié)果數(shù)據(jù)中的某些關(guān)鍵的預(yù)設(shè)指標(biāo)(如代碼覆蓋率)進(jìn)行提取。

相應(yīng)地,所述步驟s106具體包括如下步驟:持續(xù)集成服務(wù)器向所述工作機(jī)發(fā)送攜帶與當(dāng)前提交動作對應(yīng)的id的所述至少一個預(yù)設(shè)指標(biāo)(如代碼覆蓋率)的測試結(jié)果數(shù)據(jù)。

本申請實施例中,在所述步驟s104之后,在所述步驟s106之前,所述方法還包括如下步驟:

持續(xù)集成服務(wù)器獲取與當(dāng)前提交之前的上一次提交對應(yīng)的測試結(jié)果數(shù)據(jù)。

持續(xù)集成服務(wù)器將當(dāng)前測試任務(wù)得到的測試結(jié)果數(shù)據(jù)與上一次提交對應(yīng)的測試結(jié)果數(shù)據(jù)進(jìn)行比對,得到與當(dāng)前提交的代碼中發(fā)生變更的代碼部分對應(yīng)的測試結(jié)果數(shù)據(jù)。

舉例而言,針對某個分支的代碼,本次提交的代碼版本是v100,上一次提交的代碼版本是v99,其中,v100對應(yīng)的測試結(jié)果數(shù)據(jù)(如代碼覆蓋率)為90%,v99對應(yīng)的測試結(jié)果數(shù)據(jù)(如代碼覆蓋率)為85%,則可以確定v100較v99發(fā)生變更的代碼部分對應(yīng)的代碼覆蓋率為5%。其他類型的測試結(jié)果數(shù)據(jù)可以參照上述原理。

另外,與上述pmd掃描對應(yīng)的原始的測試結(jié)果數(shù)據(jù)可以是xml文件的形式進(jìn)行存儲,通過解析xml文件,可以得到每次測試任務(wù)發(fā)現(xiàn)的各種pmd問題的數(shù)量,并將該數(shù)量作為一個關(guān)鍵指標(biāo)發(fā)送給相關(guān)人員進(jìn)行查看。此外,如果后續(xù)有新的測試結(jié)果分析需求,則可以通過從ci服務(wù)器獲取原始數(shù)據(jù),便可增加任意數(shù)量的結(jié)果分析模塊實現(xiàn)功能擴(kuò)展。

在本申請實施例中,在監(jiān)測到工作機(jī)提交代碼的命令并且工作機(jī)提交的代碼為業(yè)務(wù)代碼時,生成與當(dāng)前提交的業(yè)務(wù)代碼對應(yīng)的測試任務(wù)命令,從而通過該測試任務(wù)命令觸發(fā)對提交的業(yè)務(wù)代碼的測試動作。相較于現(xiàn)有技術(shù)中以固定周期為粒度,本申請實施例通過以提交為粒度,這樣,只要監(jiān)測到一次業(yè)務(wù)代碼的提交動作,便觸發(fā)一次對當(dāng)前提交的業(yè)務(wù)代碼的測試動作,從而通過測試及時發(fā)現(xiàn)每次提交的代碼版本中存在的問題,從而可以避免現(xiàn)有技術(shù)中因業(yè)務(wù)代碼更迭速度較快,而導(dǎo)致代碼出現(xiàn)問題時無法快速回溯問題所在的情況,進(jìn)而提升代碼開發(fā)效率。此外,測試結(jié)果數(shù)據(jù)中明確提交人信息、以及原始結(jié)果數(shù)據(jù)(以json字符串的形式存儲)的存儲地址,這樣,可以在發(fā)現(xiàn)問題時及時通過上述測試結(jié)果數(shù)據(jù)來回溯代碼問題所在。

參照圖3所示,與上述圖2對應(yīng)的,以版本庫服務(wù)器為主體,上述代碼測試方法包括如下步驟:

s201:版本庫服務(wù)器監(jiān)測工作機(jī)提交代碼的命令;

s202:版本庫服務(wù)器在監(jiān)測到工作機(jī)提交代碼的命令時,接收所述工作機(jī)提交的代碼并生成與當(dāng)前提交的代碼對應(yīng)的攜帶測試參數(shù)的值的測試任務(wù)命令;

s203:版本庫服務(wù)器向持續(xù)集成服務(wù)器發(fā)送所述測試任務(wù)命令以觸發(fā)對所述代碼的測試任務(wù)。

參照圖4所示,與上述圖2對應(yīng)的,以持續(xù)集成服務(wù)器為主體,上述代碼測試方法包括如下步驟:

s301:持續(xù)集成服務(wù)器接收版本庫服務(wù)器發(fā)送的與當(dāng)前提交到版本庫服務(wù)器上的代碼對應(yīng)的并攜帶測試參數(shù)的值的測試任務(wù)命令;其中,所述測試任務(wù)命令是所述版本庫服務(wù)器在監(jiān)測到工作機(jī)提交代碼的命令時生成的;

s302:持續(xù)集成服務(wù)器從所述版本庫服務(wù)器獲取當(dāng)前提交的代碼,并觸發(fā)對當(dāng)前提交的代碼執(zhí)行與所述測試任務(wù)命令對應(yīng)的測試任務(wù),得到測試結(jié)果數(shù)據(jù);

s303:持續(xù)集成服務(wù)器向所述工作機(jī)發(fā)送攜帶與當(dāng)前提交動作對應(yīng)的id的所述測試結(jié)果數(shù)據(jù)。

圖5為本申請另一實施例提供的代碼測試方法的流程圖。在本申請另一種可行的實施例中,可以通過一個服務(wù)器來實現(xiàn)上述版本庫服務(wù)器和ci服務(wù)器的功能。例如,通過在上述版本庫服務(wù)器部署可以實現(xiàn)代碼測試任務(wù)的功能的插件,或通過在上述ci服務(wù)器上部署可以實現(xiàn)代碼版本管理、代碼變更檢測的功能的插件。則,所述代碼測試方法包括:

s401:服務(wù)器監(jiān)測工作機(jī)提交代碼的命令。

s402:服務(wù)器在監(jiān)測到工作機(jī)提交代碼的命令時,接收所述工作機(jī)提交的代碼并生成與當(dāng)前提交的代碼對應(yīng)的并攜帶測試參數(shù)的值的測試任務(wù)命令;

s403:服務(wù)器從所述版本庫服務(wù)器獲取當(dāng)前提交的代碼,并觸發(fā)對當(dāng)前提交的代碼執(zhí)行與所述測試任務(wù)命令對應(yīng)的測試任務(wù),得到測試結(jié)果數(shù)據(jù);

s404:服務(wù)器向所述工作機(jī)發(fā)送攜帶與當(dāng)前提交動作對應(yīng)的id的所述測試結(jié)果數(shù)據(jù)。

上述步驟s401~s404可以參照上述步驟s101~s106的具體內(nèi)容。

與上述方法流程對應(yīng)的,本申請的實施例還提供了一種代碼測試裝置及代碼測試系統(tǒng)。該代碼測試裝置可以通過計算機(jī)軟件程序、或計算機(jī)硬件、或軟硬件的結(jié)合來實現(xiàn)。以下將結(jié)合圖6-圖8對該裝置或系統(tǒng)進(jìn)行敘述,該裝置或系統(tǒng)中各個單元的功能與上述方法中各個步驟的功能均類似,故可以參照上述方法實施例中的內(nèi)容。

圖6為本申請一實施例提供的代碼測試裝置(與版本庫服務(wù)器對應(yīng))的模塊示意圖。本實施例中,一種代碼測試裝置包括:

監(jiān)測單元101,用于監(jiān)測工作機(jī)提交代碼的命令;

命令生成單元102,用于在監(jiān)測到工作機(jī)提交代碼的命令時,接收所述工作機(jī)提交的代碼并生成與當(dāng)前提交的代碼對應(yīng)的攜帶測試參數(shù)的值的測試任務(wù)命令;

命令發(fā)送單元103,用于向持續(xù)集成服務(wù)器發(fā)送所述測試任務(wù)命令以觸發(fā)對所述代碼的測試任務(wù)。

本申請實施例的裝置通過以提交為粒度,只要監(jiān)測到一次業(yè)務(wù)代碼的提交動作,便觸發(fā)一次對當(dāng)前提交的業(yè)務(wù)代碼的測試動作,從而通過測試及時發(fā)現(xiàn)每次提交的代碼版本中存在的問題,從而可以避免現(xiàn)有技術(shù)中因業(yè)務(wù)代碼更迭速度較快,而導(dǎo)致代碼出現(xiàn)問題時無法快速回溯問題所在的情況,進(jìn)而提升代碼開發(fā)效率。

本申請實施例中,所述裝置還包括:

判斷單元,用于在監(jiān)測到工作機(jī)提交代碼的命令時,判斷所述工作機(jī)提交的代碼是否為業(yè)務(wù)代碼;

相應(yīng)地,所述命令生成單元具體用于:若所述工作機(jī)提交的代碼為業(yè)務(wù)代碼,生成與當(dāng)前提交的業(yè)務(wù)代碼對應(yīng)的攜帶測試參數(shù)的值的測試任務(wù)命令。

圖7為本申請一實施例提供的代碼測試裝置(與持續(xù)集成服務(wù)器對應(yīng))的模塊示意圖。本實施例中,一種代碼測試裝置,包括:

命令接收單元201,用于接收版本庫服務(wù)器發(fā)送的與當(dāng)前提交到版本庫服務(wù)器上的代碼對應(yīng)的并攜帶測試參數(shù)的值的測試任務(wù)命令;其中,所述測試任務(wù)命令是所述版本庫服務(wù)器在監(jiān)測到工作機(jī)提交代碼的命令時生成的;

測試任務(wù)觸發(fā)單元202,用于從所述版本庫服務(wù)器獲取當(dāng)前提交的代碼,并觸發(fā)對當(dāng)前提交的代碼執(zhí)行與所述測試任務(wù)命令對應(yīng)的測試任務(wù),得到測試結(jié)果數(shù)據(jù);

測試結(jié)果發(fā)送單元203,用于向所述工作機(jī)發(fā)送攜帶與當(dāng)前提交動作對應(yīng)的id的所述測試結(jié)果數(shù)據(jù)。

本申請實施例的裝置通過以提交為粒度,只要監(jiān)測到一次業(yè)務(wù)代碼的提交動作,便觸發(fā)一次對當(dāng)前提交的業(yè)務(wù)代碼的測試動作,從而通過測試及時發(fā)現(xiàn)每次提交的代碼版本中存在的問題,從而可以避免現(xiàn)有技術(shù)中因業(yè)務(wù)代碼更迭速度較快,而導(dǎo)致代碼出現(xiàn)問題時無法快速回溯問題所在的情況,進(jìn)而提升代 碼開發(fā)效率。

本申請實施例中,所述裝置還包括:

測試結(jié)果整理單元,用于將所述測試結(jié)果數(shù)據(jù)進(jìn)行序列化,得到j(luò)son字符串并存儲;對所述json字符串進(jìn)行反序列化,得到至少一個預(yù)設(shè)指標(biāo)的測試結(jié)果數(shù)據(jù);

相應(yīng)地,所述測試結(jié)果發(fā)送單元具體用于:向所述工作機(jī)發(fā)送攜帶與當(dāng)前提交動作對應(yīng)的id的所述至少一個預(yù)設(shè)指標(biāo)的測試結(jié)果數(shù)據(jù)。

圖8為本申請另一實施例提供的代碼測試系統(tǒng)的模塊示意圖。本實施例中,一種代碼測試系統(tǒng),包括:

監(jiān)測單元301,用于監(jiān)測工作機(jī)提交代碼的命令;

命令生成單元302,用于在監(jiān)測到工作機(jī)提交代碼的命令時,接收所述工作機(jī)提交的代碼并生成與當(dāng)前提交的代碼對應(yīng)的并攜帶測試參數(shù)的值的測試任務(wù)命令;

測試任務(wù)觸發(fā)單元303,用于從所述版本庫服務(wù)器獲取當(dāng)前提交的代碼,并觸發(fā)對當(dāng)前提交的代碼執(zhí)行與所述測試任務(wù)命令對應(yīng)的測試任務(wù),得到測試結(jié)果數(shù)據(jù);

測試結(jié)果發(fā)送單元304,用于向所述工作機(jī)發(fā)送攜帶與當(dāng)前提交動作對應(yīng)的id的所述測試結(jié)果數(shù)據(jù)。

本申請實施例的裝置通過以提交為粒度,只要監(jiān)測到一次業(yè)務(wù)代碼的提交動作,便觸發(fā)一次對當(dāng)前提交的業(yè)務(wù)代碼的測試動作,從而通過測試及時發(fā)現(xiàn)每次提交的代碼版本中存在的問題,從而可以避免現(xiàn)有技術(shù)中因業(yè)務(wù)代碼更迭速度較快,而導(dǎo)致代碼出現(xiàn)問題時無法快速回溯問題所在的情況,進(jìn)而提升代碼開發(fā)效率。

值得一提的是,本申請可以通過上述方法、裝置及系統(tǒng),獲取與每個軟件開發(fā)人員對應(yīng)的代碼質(zhì)量數(shù)據(jù)(即每次提交代碼對應(yīng)的測試結(jié)果數(shù)據(jù)),并利用這些代碼質(zhì)量數(shù)據(jù)對開發(fā)人員進(jìn)行評估,完善代碼開發(fā)周期的管理。

為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當(dāng)然,在實施本申請時可以把各單元的功能在同一個或多個軟件和/或硬件中實現(xiàn)。

本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。

本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括 一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。

本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。

本申請可以在由計算機(jī)執(zhí)行的計算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠(yuǎn)程計算機(jī)存儲介質(zhì)中。

本說明書中的各個實施例均采用遞進(jìn)的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。

以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請的權(quán)利要求范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1