本發(fā)明涉及軟件測(cè)試領(lǐng)域,具體而言,涉及一種基于數(shù)據(jù)回放的測(cè)試方法和測(cè)試裝置。
背景技術(shù):
:回歸測(cè)試是指在對(duì)舊代碼進(jìn)行修改后,重新對(duì)代碼進(jìn)行測(cè)試以確認(rèn)該修改沒有引入新的錯(cuò)誤或?qū)е缕渌a產(chǎn)生錯(cuò)誤。自動(dòng)回歸測(cè)試可以有效地降低系統(tǒng)測(cè)試、維護(hù)升級(jí)等階段的成本。目前,隨著測(cè)試系統(tǒng)中的各個(gè)模塊的快速更新迭代以及繁多的業(yè)務(wù)場(chǎng)景,增大了回歸測(cè)試的工作量,因此,如何提高自動(dòng)化測(cè)試的工作效率成為了測(cè)試人員亟待解決的問題。但是,現(xiàn)有技術(shù)中的自動(dòng)化測(cè)試工具無(wú)法滿足業(yè)務(wù)場(chǎng)景復(fù)雜和代碼處理邏輯復(fù)雜的系統(tǒng),例如接口的請(qǐng)求參數(shù)復(fù)雜以及接口處理過程中需要具有基礎(chǔ)數(shù)據(jù)的多個(gè)模塊并且要求可以請(qǐng)求多個(gè)第三方模塊,上述現(xiàn)有技術(shù)中的問題導(dǎo)致了自動(dòng)化測(cè)試用例編寫復(fù)雜并且維護(hù)困難,無(wú)法在測(cè)試系統(tǒng)中得到廣泛的應(yīng)用。針對(duì)上述現(xiàn)有的軟件測(cè)試方法工作量大、工作效率低的問題,目前尚未提出有效的解決方案。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供了一種基于數(shù)據(jù)回放的測(cè)試方法和測(cè)試裝置,以至少解決現(xiàn)有的軟件測(cè)試方法工作量大、工作效率低的技術(shù)問題。根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種基于數(shù)據(jù)回放的測(cè)試方法,包括:從在線運(yùn)營(yíng)的服務(wù)上復(fù)制數(shù)據(jù),其中,數(shù)據(jù)包括以下至少之一:請(qǐng)求、該請(qǐng)求對(duì)應(yīng)的參數(shù)、該請(qǐng)求對(duì)應(yīng)的返回結(jié)果以及該請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù);保存復(fù)制的數(shù)據(jù);獲取被測(cè)請(qǐng)求;獲取被測(cè)請(qǐng)求在待測(cè)試的環(huán)境中被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù);根據(jù)被測(cè)請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生的數(shù)據(jù)和復(fù)制的數(shù)據(jù)確定測(cè)試結(jié)果。根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種基于數(shù)據(jù)回放的測(cè)試裝置,包括:復(fù)制模塊,用于從在線運(yùn)營(yíng)的服務(wù)上復(fù)制數(shù)據(jù),其中,數(shù)據(jù)包括以下至少之一:請(qǐng)求、該請(qǐng)求對(duì)應(yīng)的參數(shù)、該請(qǐng)求對(duì)應(yīng)的返回結(jié)果以及該請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù);保存模塊,用于保存復(fù)制的數(shù)據(jù);請(qǐng)求獲取模塊,用于獲取被測(cè)請(qǐng)求;結(jié)果獲取模塊,用于獲取被測(cè)請(qǐng)求在待測(cè)試的環(huán)境中以及該請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù);對(duì)比模塊,用于根據(jù)被測(cè)請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生的數(shù)據(jù)和復(fù)制的數(shù)據(jù)確定測(cè)試結(jié)果。在本發(fā)明實(shí)施例中,采用對(duì)數(shù)據(jù)進(jìn)行回放的方式,通過從在線運(yùn)營(yíng)的服務(wù)上復(fù)制數(shù)據(jù),并保存復(fù)制的數(shù)據(jù),從復(fù)制的數(shù)據(jù)中獲取被測(cè)請(qǐng)求以及被測(cè)請(qǐng)求在待測(cè)試的環(huán)境中被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù),根據(jù)被測(cè)請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生的數(shù)據(jù)和復(fù)制的數(shù)據(jù)確定測(cè)試結(jié)果,達(dá)到了對(duì)測(cè)試接口無(wú)依賴的目的,從而實(shí)現(xiàn)了減少了軟件測(cè)試的工作量,并提高工作效率的技術(shù)效果,進(jìn)而解決了現(xiàn)有的軟件測(cè)試方法工作量大、工作效率低的技術(shù)問題。附圖說明此處所說明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:圖1是根據(jù)本發(fā)明實(shí)施例的一種基于數(shù)據(jù)回放的測(cè)試方法的流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的基于數(shù)據(jù)回放的測(cè)試方法的流程圖;圖3是根據(jù)本發(fā)明實(shí)施例的一種可選的基于數(shù)據(jù)回放的測(cè)試方法的流程圖;圖4是根據(jù)本發(fā)明實(shí)施例的一種可選的基于數(shù)據(jù)回放的測(cè)試方法的流程圖;圖5是根據(jù)本發(fā)明實(shí)施例的一種可選的基于數(shù)據(jù)回放的測(cè)試方法的流程圖;圖6是根據(jù)本發(fā)明實(shí)施例的一種可選的基于數(shù)據(jù)回放的測(cè)試方法的流程圖;以及圖7是根據(jù)本發(fā)明實(shí)施例的一種基于數(shù)據(jù)回放的測(cè)試裝置的結(jié)構(gòu)示意圖。其中,上述附圖包括以下附圖標(biāo)記:701、復(fù)制模塊;703、保存模塊;705、請(qǐng)求獲取模塊;707、結(jié)果獲取模塊;709、對(duì)比模塊;711、返回模塊。具體實(shí)施方式為了使本
技術(shù)領(lǐng)域:
的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。實(shí)施例1根據(jù)本發(fā)明實(shí)施例,提供了一種基于數(shù)據(jù)回放的測(cè)試方法的實(shí)施例。圖1是根據(jù)本發(fā)明實(shí)施例的基于數(shù)據(jù)回放的測(cè)試方法流程圖,如圖1所示,該方法包括如下步驟:步驟S102,從在線運(yùn)營(yíng)的服務(wù)上復(fù)制數(shù)據(jù),其中,數(shù)據(jù)包括以下至少之一:請(qǐng)求、該請(qǐng)求對(duì)應(yīng)的參數(shù)、該請(qǐng)求對(duì)應(yīng)的返回結(jié)果以及該請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù)。上述步驟S102可以在自動(dòng)化測(cè)試平臺(tái)上執(zhí)行,自動(dòng)化測(cè)試平臺(tái)可以攔截發(fā)送至服務(wù)的數(shù)據(jù),即在執(zhí)行請(qǐng)求的過程中所產(chǎn)生以及使用的數(shù)據(jù),并對(duì)該數(shù)據(jù)進(jìn)行復(fù)制。作為一種可選的實(shí)施例,在自動(dòng)化測(cè)試平臺(tái)的測(cè)試環(huán)境中,發(fā)送上述請(qǐng)求給在線運(yùn)營(yíng)的服務(wù),并輸出測(cè)試結(jié)果,該測(cè)試結(jié)果即為該請(qǐng)求對(duì)應(yīng)的返回結(jié)果。通過上述步驟S102可以得到在線運(yùn)營(yíng)的服務(wù)的輸入?yún)?shù)和輸出結(jié)果,即請(qǐng)求的參數(shù)以及請(qǐng)求對(duì)應(yīng)的返回結(jié)果。步驟S104,保存復(fù)制的數(shù)據(jù)。在上述步驟S104中,可以將上述復(fù)制的數(shù)據(jù)保存到文件服務(wù)器中,方便之后獲取以及使用。在一種可選的實(shí)施例中,可以將保存在文件服務(wù)器中的數(shù)據(jù)復(fù)制到待測(cè)試的環(huán)境中,并將該數(shù)據(jù)中的請(qǐng)求的返回結(jié)果作為基準(zhǔn)結(jié)果對(duì)待測(cè)試的環(huán)境進(jìn)行評(píng)估。步驟S106,獲取被測(cè)請(qǐng)求。在上述步驟S106中,自動(dòng)化測(cè)試平臺(tái)通過檢測(cè)當(dāng)前的環(huán)境是否為待測(cè)試環(huán)境,如果當(dāng)前環(huán)境為待測(cè)試環(huán)境,則將被測(cè)請(qǐng)求的相應(yīng)的數(shù)據(jù)用在線運(yùn)營(yíng)的服務(wù)上復(fù)制的數(shù)據(jù)替代。在一種可選的實(shí)施例中,自動(dòng)化測(cè)試平臺(tái)可以通過調(diào)用jar包的形式來(lái)獲取被測(cè)請(qǐng)求,測(cè)試人員在待測(cè)試的環(huán)境中引入上述jar包,并在配置文件中進(jìn)行配置,即可在該待測(cè)試的環(huán)境中獲取被測(cè)請(qǐng)求。需要說明的是,僅將在線運(yùn)營(yíng)的服務(wù)上的數(shù)據(jù)中的請(qǐng)求以及該請(qǐng)求對(duì)應(yīng)的參數(shù)替換被測(cè)請(qǐng)求。通過上述步驟S106,可以獲知上述被測(cè)請(qǐng)求的相關(guān)數(shù)據(jù)為在線運(yùn)營(yíng)的服務(wù)上的請(qǐng)求的相關(guān)數(shù)據(jù),由于兩個(gè)請(qǐng)求以及請(qǐng)求的參數(shù)相同,因此,當(dāng)?shù)玫絻蓚€(gè)測(cè)試環(huán)境下的返回結(jié)果后,兩個(gè)返回結(jié)果具有可比性,可以對(duì)測(cè)試結(jié)果進(jìn)行比對(duì),判斷該測(cè)試是否成功。步驟S108,獲取被測(cè)請(qǐng)求在待測(cè)試的環(huán)境中被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù)。在上述步驟S108限定的方案中,上述被測(cè)請(qǐng)求在待測(cè)試的環(huán)境中被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù)包括:該被測(cè)請(qǐng)求、該被測(cè)請(qǐng)求對(duì)應(yīng)的參數(shù)、該被測(cè)請(qǐng)求對(duì)應(yīng)的返回結(jié)果以及該被測(cè)請(qǐng)求在執(zhí)行的過程中所產(chǎn)生以及使用的中間數(shù)據(jù)。其中,該被測(cè)請(qǐng)求對(duì)應(yīng)的返回結(jié)果可以以圖表或數(shù)據(jù)的形式向測(cè)試人員展示,在一種可選的實(shí)施例中,被測(cè)請(qǐng)求返回的結(jié)果以圖片的形式向測(cè)試人員展示,在線運(yùn)營(yíng)的服務(wù)上的返回結(jié)果也以圖片的形式向測(cè)試人員展示,此時(shí),自動(dòng)化測(cè)試平臺(tái)通過圖片比較服務(wù)對(duì)兩張圖片進(jìn)行比對(duì),得到比對(duì)結(jié)果,該比對(duì)結(jié)果作為測(cè)試結(jié)果的一部分,在測(cè)試報(bào)告中向測(cè)試人員展示。步驟S110,根據(jù)被測(cè)請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生的數(shù)據(jù)和復(fù)制到的數(shù)據(jù)確定測(cè)試結(jié)果。在一種可選的實(shí)施例中,在線運(yùn)營(yíng)的服務(wù)上的返回結(jié)果為第一結(jié)果,被測(cè)請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生的結(jié)果為第二結(jié)果,如果第一結(jié)果和第二結(jié)果存在差值,說明測(cè)試失敗,此時(shí)自動(dòng)化測(cè)試平臺(tái)根據(jù)測(cè)試結(jié)果生成測(cè)試報(bào)告,其中,測(cè)試報(bào)告的內(nèi)容包括兩次返回結(jié)果的結(jié)果差異,以及該被測(cè)請(qǐng)求在執(zhí)行的過程中所產(chǎn)生以及使用的中間數(shù)據(jù)與在線運(yùn)營(yíng)的服務(wù)上執(zhí)行請(qǐng)求時(shí)所產(chǎn)生的數(shù)據(jù)的差異。測(cè)試人員通過上述生成的測(cè)試報(bào)告可直觀地看到測(cè)試結(jié)果,并快速地對(duì)該測(cè)試結(jié)果作出分析,提高了測(cè)試工作的效率。在另一種可選的實(shí)施例中,如果上述第一結(jié)果與第二結(jié)果相同,此時(shí),自動(dòng)化測(cè)試平臺(tái)會(huì)再次檢測(cè)該被測(cè)請(qǐng)求在執(zhí)行的過程中所產(chǎn)生的中間數(shù)據(jù)與在線運(yùn)營(yíng)的服務(wù)上執(zhí)行請(qǐng)求時(shí)所產(chǎn)生的數(shù)據(jù)是否存在差異,如果存在差異,說明測(cè)試失敗,并在測(cè)試報(bào)告的內(nèi)容中顯示出現(xiàn)差異的數(shù)據(jù),測(cè)試人員可根據(jù)上述數(shù)據(jù)的差異對(duì)本次測(cè)試失敗的原因進(jìn)行分析,進(jìn)而提高了測(cè)試人員的工作效率。需要說明的是,由于測(cè)試用例需要定期更新,但在更新時(shí),自動(dòng)化測(cè)試平臺(tái)會(huì)刪除原始數(shù)據(jù),并在在線運(yùn)行的服務(wù)上重新復(fù)制數(shù)據(jù),從而使得需要保存的測(cè)試用例被刪除,因此,在進(jìn)行自動(dòng)化測(cè)試時(shí)需要測(cè)試人員手動(dòng)收藏測(cè)試用例,以用于后期的回歸測(cè)試中。基于上述實(shí)施例步驟S102至步驟S110所公開的方案中,可以獲知通過從在線運(yùn)營(yíng)的服務(wù)上復(fù)制數(shù)據(jù),并保存復(fù)制的數(shù)據(jù),從復(fù)制的數(shù)據(jù)中獲取被測(cè)請(qǐng)求以及被測(cè)請(qǐng)求在待測(cè)試的環(huán)境中被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù),根據(jù)被測(cè)請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生的數(shù)據(jù)和復(fù)制的數(shù)據(jù)確定測(cè)試結(jié)果,容易注意到的是,由于自動(dòng)化測(cè)試平臺(tái)采用調(diào)用jar包的形式來(lái)對(duì)測(cè)試環(huán)境進(jìn)行配置,進(jìn)而對(duì)被測(cè)請(qǐng)求進(jìn)行測(cè)試,從而得到測(cè)試結(jié)果,因此,測(cè)試人員不需要再編寫大量的測(cè)試用例,節(jié)省了測(cè)試人員的工作時(shí)間,提高了測(cè)試效率,進(jìn)一步達(dá)到了對(duì)測(cè)試接口無(wú)依賴的目的,實(shí)現(xiàn)了減少了軟件測(cè)試的工作量,并提高工作效率的技術(shù)效果,進(jìn)而解決了現(xiàn)有的軟件測(cè)試方法工作量大、工作效率低的技術(shù)問題。在請(qǐng)求需要調(diào)用第三方接口的情況下,從在線運(yùn)營(yíng)的服務(wù)上復(fù)制數(shù)據(jù)的方法包括:復(fù)制第三方接口返回的參數(shù)和/或返回的結(jié)果,并作為數(shù)據(jù)進(jìn)行保存,其中,第三方接口返回的參數(shù)和/或返回的結(jié)果用于在測(cè)試環(huán)境中提供給被測(cè)請(qǐng)求。作為一種可選的實(shí)施例,上述第三方接口可以為但不限于第三方的支付接口以及第三方的應(yīng)用接口,上述第三方接口返回的參數(shù)和/或返回的結(jié)果可以保存到文件服務(wù)器上,其中,第三方接口返回的參數(shù)可以用于替換或覆蓋待測(cè)試環(huán)境中的被測(cè)請(qǐng)求,第三方接口返回的結(jié)果作為基準(zhǔn)結(jié)果對(duì)待測(cè)試環(huán)境下的返回結(jié)果進(jìn)行評(píng)估。在被測(cè)請(qǐng)求需要調(diào)用第三方接口的情況下,獲取被測(cè)請(qǐng)求的方法包括:根據(jù)復(fù)制到的第三方接口返回的參數(shù)和/或返回的結(jié)果向被測(cè)請(qǐng)求返回。在一種可選的實(shí)施例中,上述第三方接口返回的參數(shù)替換掉待測(cè)試環(huán)境中的所有請(qǐng)求,并將第三方接口返回的參數(shù)中的請(qǐng)求作為待測(cè)試環(huán)境中的被測(cè)請(qǐng)求。然后根據(jù)被測(cè)請(qǐng)求得到在待測(cè)試環(huán)境中的返回結(jié)果,并通過對(duì)比第三方接口返回的結(jié)果與待測(cè)試環(huán)境中的返回結(jié)果得到測(cè)試結(jié)果。圖2示出了一種可選的基于數(shù)據(jù)回放的測(cè)試方法的流程圖,如圖2所示,從在線運(yùn)營(yíng)的服務(wù)上復(fù)制數(shù)據(jù)的方法具體包括如下步驟:步驟S202,獲取不同協(xié)議對(duì)應(yīng)的數(shù)據(jù),其中,協(xié)議包括以下至少之一:HTTP、DUBBO、QMQ;步驟S204,將不同協(xié)議對(duì)應(yīng)的數(shù)據(jù)進(jìn)行復(fù)制。在上述步驟S202至步驟S204所限定的方案中,根據(jù)協(xié)議的不同,自動(dòng)化測(cè)試平臺(tái)所引用的jar包也是不同的,并且在不同的協(xié)議中可以對(duì)jar包進(jìn)行不同的擴(kuò)展。在一種可選的實(shí)施例中,根據(jù)協(xié)議請(qǐng)求(例如HTTP協(xié)議的請(qǐng)求)在自動(dòng)化測(cè)試平臺(tái)上選擇該協(xié)議請(qǐng)求對(duì)應(yīng)的jar包,并將該jar包引入到待測(cè)試環(huán)境中,對(duì)待測(cè)試環(huán)境中的配置文件進(jìn)行配置,進(jìn)而完成對(duì)被測(cè)請(qǐng)求的測(cè)試。需要說明的是,HTTP、DUBBO以及QMQ協(xié)議僅為請(qǐng)求的協(xié)議,在測(cè)試過程中所用到的協(xié)議不限于提高的上述三種協(xié)議。圖3示出了一種可選的基于數(shù)據(jù)回放的測(cè)試方法的流程圖,如圖3所示,該方法包括如下步驟:步驟S302,獲取多個(gè)請(qǐng)求中的每個(gè)請(qǐng)求覆蓋的代碼量;步驟S304,將覆蓋代碼量滿足預(yù)定條件的請(qǐng)求作為被測(cè)請(qǐng)求。在上述步驟S302至步驟S304所限定的方案中,上述每個(gè)請(qǐng)求覆蓋的代碼量可以用代碼覆蓋率來(lái)表征,具體的,可以通過選取代碼覆蓋率最大的請(qǐng)求作為基準(zhǔn)請(qǐng)求,然后以該基準(zhǔn)請(qǐng)求覆蓋的代碼量為基準(zhǔn),通過判斷其他請(qǐng)求覆蓋的代碼與基準(zhǔn)請(qǐng)求覆蓋的代碼是否能夠覆蓋全部的代碼來(lái)得到被測(cè)請(qǐng)求。其中,如表1所示的多個(gè)請(qǐng)求與其對(duì)應(yīng)的代碼覆蓋率。表1請(qǐng)求BACED代碼覆蓋率78%80%86%86%90%在一種可選的實(shí)施例中,在線運(yùn)營(yíng)的服務(wù)上的返回結(jié)果為第一結(jié)果,被測(cè)請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生的結(jié)果為第二結(jié)果。在根據(jù)第一結(jié)果和第二結(jié)果得到測(cè)試結(jié)果之后,如果第一結(jié)果和第二結(jié)果存在差異,自動(dòng)化測(cè)試平臺(tái)可以收集使第一結(jié)果與第二結(jié)果出現(xiàn)差異的字段,并對(duì)該字段進(jìn)行保存。當(dāng)進(jìn)行下一次的測(cè)試任務(wù)時(shí),可以在測(cè)試結(jié)果中排除已保存的差異字段對(duì)測(cè)試結(jié)果的影響。其中,上述差異字段可以為但不限于時(shí)間戳、隨機(jī)數(shù)。圖4示出了一種可選的基于數(shù)據(jù)回放的測(cè)試方法的流程圖,如圖4所示,在獲取多個(gè)請(qǐng)求中的每個(gè)請(qǐng)求覆蓋的代碼量之后,從多個(gè)請(qǐng)求中篩選出被測(cè)請(qǐng)求還需要執(zhí)行如下步驟:步驟S402,獲取當(dāng)前請(qǐng)求覆蓋的代碼量;步驟S404,判斷當(dāng)前請(qǐng)求覆蓋的代碼量是否大于上一請(qǐng)求覆蓋的代碼量;步驟S406,在當(dāng)前請(qǐng)求覆蓋的代碼量大于上一請(qǐng)求覆蓋的代碼量的情況下,保存當(dāng)前請(qǐng)求。在上述步驟S402至步驟S406中,所有請(qǐng)求位于請(qǐng)求隊(duì)列中,通過步驟S302得到每個(gè)請(qǐng)求的代碼覆蓋率之后,所有請(qǐng)求的代碼覆蓋率以遞增的形式在隊(duì)列中排列,其中,位于隊(duì)頭的請(qǐng)求為當(dāng)前請(qǐng)求(例如,在表1中,請(qǐng)求B為當(dāng)前請(qǐng)求)。在一種可選的實(shí)施例中,待測(cè)試程序的代碼覆蓋率初始化為0,當(dāng)前請(qǐng)求B作為請(qǐng)求隊(duì)列中的未發(fā)送請(qǐng)求,位于請(qǐng)求隊(duì)列的隊(duì)頭。當(dāng)檢測(cè)到請(qǐng)求隊(duì)列中存在未發(fā)送請(qǐng)求時(shí),發(fā)送該請(qǐng)求,并獲取當(dāng)前請(qǐng)求的代碼覆蓋率78%。由于78%>0%,因此請(qǐng)求B被篩選出,并保存;當(dāng)發(fā)送完請(qǐng)求B之后,請(qǐng)求A作為當(dāng)前請(qǐng)求,其代碼覆蓋率為80%,大于78%,因此,請(qǐng)求A也將被篩選出,并保存。同樣,請(qǐng)求C的代碼覆蓋率86%>80%,請(qǐng)求D的代碼覆蓋率90%>86%,因此,請(qǐng)求C和請(qǐng)求D被篩選出,并保存;而請(qǐng)求E的代碼覆蓋率86%不大于請(qǐng)求C的代碼覆蓋率86%,因此,請(qǐng)求E不會(huì)被篩選出。圖5示出了一種可選的基于數(shù)據(jù)回放的測(cè)試方法的流程圖,如圖5所示,在獲取多個(gè)請(qǐng)求中的每個(gè)請(qǐng)求覆蓋的代碼量之后,從多個(gè)請(qǐng)求中篩選出被測(cè)請(qǐng)求還需要執(zhí)行如下步驟:步驟S502,從多個(gè)請(qǐng)求中篩選出第一請(qǐng)求,并獲取第一請(qǐng)求覆蓋的代碼量;步驟S504,根據(jù)第一請(qǐng)求未覆蓋到的代碼,從多個(gè)請(qǐng)求中篩選出能夠覆蓋第一請(qǐng)求未覆蓋到的代碼的請(qǐng)求作為被測(cè)請(qǐng)求。在一種可選的實(shí)施例中,通過步驟S302得到每個(gè)請(qǐng)求的代碼覆蓋率之后,選取代碼覆蓋率最大的請(qǐng)求作為第一請(qǐng)求,在表1中,選取請(qǐng)求D作為第一請(qǐng)求。如果請(qǐng)求A所覆蓋的代碼中覆蓋了請(qǐng)求D剩余的10%的代碼,而其他請(qǐng)求所覆蓋的代碼覆蓋請(qǐng)求D剩余代碼的百分比均小于10%,則從上述5個(gè)請(qǐng)求中篩選出請(qǐng)求A和請(qǐng)求D。如果請(qǐng)求A所覆蓋的代碼中只覆蓋了請(qǐng)求D剩余的2%的代碼,而請(qǐng)求B所覆蓋的代碼中覆蓋了請(qǐng)求D和請(qǐng)求A剩余的8%的代碼,而請(qǐng)求C和請(qǐng)求E均只覆蓋了請(qǐng)求D剩余的1%的代碼,則請(qǐng)求A、請(qǐng)求B和請(qǐng)求E作為被測(cè)請(qǐng)求被篩選出。需要說明的是,如果至少兩個(gè)請(qǐng)求的代碼覆蓋率相同,并且該代碼覆蓋率是最大的,此時(shí),從這些請(qǐng)求中任意選擇一個(gè)請(qǐng)求作為被測(cè)請(qǐng)求。圖6示出了一種可選的基于數(shù)據(jù)回放的測(cè)試方法的流程圖,如圖6所示,在獲取多個(gè)請(qǐng)求中的每個(gè)請(qǐng)求覆蓋的代碼量之后,從多個(gè)請(qǐng)求中篩選出被測(cè)請(qǐng)求還需要執(zhí)行如下步驟:步驟S602,根據(jù)多個(gè)請(qǐng)求中的每個(gè)請(qǐng)求覆蓋的代碼判斷多個(gè)請(qǐng)求中的一組請(qǐng)求覆蓋的代碼是否覆蓋程序的全部代碼;步驟S604,在一組請(qǐng)求覆蓋的代碼覆蓋程序的全部代碼的情況下,至少兩個(gè)請(qǐng)求被篩選出,其中,被篩選出的至少兩個(gè)請(qǐng)求為被測(cè)請(qǐng)求。在一種可選的實(shí)施例中,對(duì)所有的請(qǐng)求進(jìn)行組合,如果組合后的請(qǐng)求能夠覆蓋程序的所有代碼,則組合后的請(qǐng)求作為被測(cè)請(qǐng)求被篩選出。需要說明的是,如果存在多種組合均能覆蓋程序的所有代碼,則選擇組合中包含請(qǐng)求數(shù)量最少的請(qǐng)求被篩選出。例如,表1中的請(qǐng)求A和請(qǐng)求B可以覆蓋程序中的所有代碼,而請(qǐng)求A、請(qǐng)求C和請(qǐng)求D也可以覆蓋程序中的所有代碼,則請(qǐng)求A和請(qǐng)求B作為被測(cè)請(qǐng)求被篩選出。通過上述方法,可以選擇請(qǐng)求數(shù)量最少的請(qǐng)求組合,可以有效的節(jié)省測(cè)試時(shí)間,提高測(cè)試效率。實(shí)施例2根據(jù)本發(fā)明實(shí)施例,提供了一種基于數(shù)據(jù)回放的測(cè)試裝置的實(shí)施例,其中,上述實(shí)施例1中的方法可以在本實(shí)施例中所提供的裝置中運(yùn)行。圖7是根據(jù)本發(fā)明實(shí)施例的基于數(shù)據(jù)回放的測(cè)試裝置的結(jié)構(gòu)示意圖,如圖7所示,該裝置包括:復(fù)制模塊701、保存模塊703、請(qǐng)求獲取模塊705、結(jié)果獲取模塊707和對(duì)比模塊709。復(fù)制模塊701,用于從在線運(yùn)營(yíng)的服務(wù)上復(fù)制數(shù)據(jù),其中,數(shù)據(jù)包括以下至少之一:請(qǐng)求、該請(qǐng)求對(duì)應(yīng)的參數(shù)、該請(qǐng)求對(duì)應(yīng)的返回結(jié)果以及該請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù)。上述復(fù)制模塊701可以執(zhí)行上述實(shí)施例1中步驟S102的方法,上述復(fù)制模塊701存在于自動(dòng)化測(cè)試平臺(tái)上,自動(dòng)化測(cè)試平臺(tái)可以攔截發(fā)送至服務(wù)的數(shù)據(jù),即在執(zhí)行請(qǐng)求的過程中所產(chǎn)生以及使用的數(shù)據(jù),并對(duì)該數(shù)據(jù)進(jìn)行復(fù)制。作為一種可選的實(shí)施例,在自動(dòng)化測(cè)試平臺(tái)的測(cè)試環(huán)境中,發(fā)送上述請(qǐng)求給在線運(yùn)營(yíng)的服務(wù),并輸出測(cè)試結(jié)果,該測(cè)試結(jié)果即為該請(qǐng)求對(duì)應(yīng)的返回結(jié)果。通過上述復(fù)制模塊701可以得到在線運(yùn)營(yíng)的服務(wù)的輸入?yún)?shù)和輸出結(jié)果,即請(qǐng)求的參數(shù)以及請(qǐng)求對(duì)應(yīng)的返回結(jié)果。保存模塊703,用于保存復(fù)制的數(shù)據(jù)。上述保存模塊703可以執(zhí)行上述實(shí)施例1中步驟S104的方法,可以將上述復(fù)制的數(shù)據(jù)保存到文件服務(wù)器中,方便之后獲取以及使用。在一種可選的實(shí)施例中,可以將保存在文件服務(wù)器中的數(shù)據(jù)復(fù)制到待測(cè)試的環(huán)境中,并將該數(shù)據(jù)中的請(qǐng)求的返回結(jié)果作為基準(zhǔn)結(jié)果對(duì)待測(cè)試的環(huán)境進(jìn)行評(píng)估。請(qǐng)求獲取模塊705,用于獲取被測(cè)請(qǐng)求。請(qǐng)求獲取模塊705可以執(zhí)行上述實(shí)施例1中上述步驟S106的方法,自動(dòng)化測(cè)試平臺(tái)通過檢測(cè)當(dāng)前的環(huán)境是否為待測(cè)試環(huán)境,如果當(dāng)前環(huán)境為待測(cè)試環(huán)境,則將被測(cè)請(qǐng)求的相應(yīng)的數(shù)據(jù)用在線運(yùn)營(yíng)的服務(wù)上復(fù)制的數(shù)據(jù)替代。在一種可選的實(shí)施例中,自動(dòng)化測(cè)試平臺(tái)可以通過調(diào)用jar包的形式來(lái)獲取被測(cè)請(qǐng)求,測(cè)試人員在待測(cè)試的環(huán)境中引入上述jar包,并在配置文件中進(jìn)行配置,即可在該待測(cè)試的環(huán)境中獲取被測(cè)請(qǐng)求。需要說明的是,僅將在線運(yùn)營(yíng)的服務(wù)上的數(shù)據(jù)中的請(qǐng)求以及該請(qǐng)求對(duì)應(yīng)的參數(shù)替換被測(cè)請(qǐng)求。通過上述請(qǐng)求獲取模塊705,可以獲知上述被測(cè)請(qǐng)求的相關(guān)數(shù)據(jù)為在線運(yùn)營(yíng)的服務(wù)上的請(qǐng)求的相關(guān)數(shù)據(jù),由于兩個(gè)請(qǐng)求以及請(qǐng)求的參數(shù)相同,因此,當(dāng)?shù)玫絻蓚€(gè)測(cè)試環(huán)境下的返回結(jié)果后,兩個(gè)返回結(jié)果具有可比性,可以對(duì)測(cè)試結(jié)果進(jìn)行比對(duì),判斷該測(cè)試是否成功。結(jié)果獲取模塊707,用于獲取被測(cè)請(qǐng)求在待測(cè)試的環(huán)境中被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù)。上述結(jié)果獲取模塊707可以執(zhí)行上述實(shí)施例1中步驟S108的方法,在結(jié)果獲取模塊707中,上述被測(cè)請(qǐng)求在待測(cè)試的環(huán)境中被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù)包括:該被測(cè)請(qǐng)求、該被測(cè)請(qǐng)求對(duì)應(yīng)的參數(shù)、該被測(cè)請(qǐng)求對(duì)應(yīng)的返回結(jié)果以及該被測(cè)請(qǐng)求在執(zhí)行的過程中所產(chǎn)生以及使用的中間數(shù)據(jù)。其中,該被測(cè)請(qǐng)求對(duì)應(yīng)的返回結(jié)果可以以圖表或數(shù)據(jù)的形式向測(cè)試人員展示,在一種可選的實(shí)施例中,被測(cè)請(qǐng)求返回的結(jié)果以圖片的形式向測(cè)試人員展示,在線運(yùn)營(yíng)的服務(wù)上的返回結(jié)果也以圖片的形式向測(cè)試人員展示,此時(shí),自動(dòng)化測(cè)試平臺(tái)通過圖片比較服務(wù)對(duì)兩張圖片進(jìn)行比對(duì),得到比對(duì)結(jié)果,該比對(duì)結(jié)果作為測(cè)試結(jié)果的一部分,在測(cè)試報(bào)告中向測(cè)試人員展示。。對(duì)比模塊709,用于被測(cè)請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生的數(shù)據(jù)和復(fù)制到的數(shù)據(jù)確定測(cè)試結(jié)果。上述對(duì)比模塊709可以執(zhí)行上述實(shí)施例1中步驟S110的方法,在一種可選的實(shí)施例中,在線運(yùn)營(yíng)的服務(wù)上的返回結(jié)果為第一結(jié)果,被測(cè)請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生的結(jié)果為第二結(jié)果,如果第一結(jié)果和第二結(jié)果存在差值,說明測(cè)試失敗,此時(shí)自動(dòng)化測(cè)試平臺(tái)根據(jù)測(cè)試結(jié)果生成測(cè)試報(bào)告,其中,測(cè)試報(bào)告的內(nèi)容包括兩次返回結(jié)果的結(jié)果差異,以及該被測(cè)請(qǐng)求在執(zhí)行的過程中所產(chǎn)生以及使用的中間數(shù)據(jù)與在線運(yùn)營(yíng)的服務(wù)上執(zhí)行請(qǐng)求時(shí)所產(chǎn)生以及使用的數(shù)據(jù)的差異。測(cè)試人員通過上述生成的測(cè)試報(bào)告可直觀地看到測(cè)試結(jié)果,并快速地對(duì)該測(cè)試結(jié)果作出分析,提高了測(cè)試工作的效率。在另一種可選的實(shí)施例中,如果上述第一結(jié)果與第二結(jié)果相同,此時(shí),自動(dòng)化測(cè)試平臺(tái)會(huì)再次檢測(cè)該被測(cè)請(qǐng)求在執(zhí)行的過程中所產(chǎn)生以及使用的中間數(shù)據(jù)與在線運(yùn)營(yíng)的服務(wù)上執(zhí)行請(qǐng)求時(shí)所產(chǎn)生以及使用的數(shù)據(jù)是否存在差異,如果存在差異,說明測(cè)試失敗,并在測(cè)試報(bào)告的內(nèi)容中顯示出現(xiàn)差異的數(shù)據(jù),測(cè)試人員可根據(jù)上述數(shù)據(jù)的差異對(duì)本次測(cè)試失敗的原因進(jìn)行分析,進(jìn)而提高了測(cè)試人員的工作效率。需要說明的是,由于測(cè)試用例需要定期更新,但在更新時(shí),自動(dòng)化測(cè)試平臺(tái)會(huì)刪除原始數(shù)據(jù),并在在線運(yùn)行的服務(wù)上重新復(fù)制數(shù)據(jù),從而使得需要保存的測(cè)試用例被刪除,因此,在進(jìn)行自動(dòng)化測(cè)試時(shí)需要測(cè)試人員手動(dòng)收藏測(cè)試用例,以用于后期的回歸測(cè)試中。由上可知,通過從在線運(yùn)營(yíng)的服務(wù)上復(fù)制數(shù)據(jù),并保存復(fù)制的數(shù)據(jù),從復(fù)制的數(shù)據(jù)中獲取被測(cè)請(qǐng)求以及被測(cè)請(qǐng)求在待測(cè)試的環(huán)境中被執(zhí)行時(shí)所產(chǎn)生以及使用的數(shù)據(jù),根據(jù)被測(cè)請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生的數(shù)據(jù)和復(fù)制的數(shù)據(jù)確定測(cè)試結(jié)果,容易注意到的是,由于自動(dòng)化測(cè)試平臺(tái)采用調(diào)用jar包的形式來(lái)對(duì)測(cè)試環(huán)境進(jìn)行配置,進(jìn)而對(duì)被測(cè)請(qǐng)求進(jìn)行測(cè)試,從而得到測(cè)試結(jié)果,因此,測(cè)試人員不需要再編寫大量的測(cè)試用例,節(jié)省了測(cè)試人員的工作時(shí)間,提高了測(cè)試效率,進(jìn)一步達(dá)到了對(duì)測(cè)試接口無(wú)依賴的目的,實(shí)現(xiàn)了減少了軟件測(cè)試的工作量,并提高工作效率的技術(shù)效果,進(jìn)而解決了現(xiàn)有的軟件測(cè)試方法工作量大、工作效率低的技術(shù)問題。此處需要說明的是,上述復(fù)制模塊701、保存模塊703、請(qǐng)求獲取模塊705、結(jié)果獲取模塊707和對(duì)比模塊709對(duì)應(yīng)于實(shí)施例1中的步驟S102至步驟S110,五個(gè)模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開的內(nèi)容??蛇x的,在請(qǐng)求需要調(diào)用第三方接口的情況下,復(fù)制模塊701包括:保存模塊,用于復(fù)制第三方接口返回的參數(shù)和/或返回的結(jié)果,并作為數(shù)據(jù)進(jìn)行保存,其中,第三方接口返回的參數(shù)和/或返回的結(jié)果用于在測(cè)試環(huán)境中提供給被測(cè)請(qǐng)求。作為一種可選的實(shí)施例,上述第三方接口可以為但不限于第三方的支付接口以及第三方的應(yīng)用接口,上述第三方接口返回的參數(shù)和/或返回的結(jié)果可以保存到文件服務(wù)器上,其中,第三方接口返回的參數(shù)可以用于替換或覆蓋待測(cè)試環(huán)境中的被測(cè)請(qǐng)求,第三方接口返回的結(jié)果作為基準(zhǔn)結(jié)果對(duì)待測(cè)試環(huán)境下的返回結(jié)果進(jìn)行評(píng)估。可選的,如圖7所示,上述裝置還包括:返回模塊711。其中,返回模塊711,用于在被測(cè)請(qǐng)求需要調(diào)用第三方接口的情況下,根據(jù)復(fù)制到的第三方接口返回的參數(shù)和/或返回的結(jié)果向被測(cè)請(qǐng)求返回。在一種可選的實(shí)施例中,上述第三方接口返回的參數(shù)替換掉待測(cè)試環(huán)境中的所有請(qǐng)求,并將第三方接口返回的參數(shù)中的請(qǐng)求作為待測(cè)試環(huán)境中的被測(cè)請(qǐng)求。然后根據(jù)被測(cè)請(qǐng)求得到在待測(cè)試環(huán)境中的返回結(jié)果,并通過對(duì)比第三方接口返回的結(jié)果與待測(cè)試環(huán)境中的返回結(jié)果得到測(cè)試結(jié)果??蛇x的,上述復(fù)制模塊701包括:第一獲取模塊和第一復(fù)制模塊。其中,第一獲取模塊,用于獲取不同協(xié)議對(duì)應(yīng)的數(shù)據(jù),其中,協(xié)議包括以下至少之一:HTTP、DUBBO、QMA;第一復(fù)制模塊,用于將不同協(xié)議對(duì)應(yīng)的數(shù)據(jù)進(jìn)行復(fù)制。在上述第一獲取模塊和第一復(fù)制模塊組成的復(fù)制模塊701中,根據(jù)協(xié)議的不同,自動(dòng)化測(cè)試平臺(tái)所引用的jar包也是不同的,并且在不同的協(xié)議中可以對(duì)jar包進(jìn)行不同的擴(kuò)展。在一種可選的實(shí)施例中,根據(jù)協(xié)議請(qǐng)求(例如HTTP協(xié)議的請(qǐng)求)在自動(dòng)化測(cè)試平臺(tái)上選擇該協(xié)議請(qǐng)求對(duì)應(yīng)的jar包,并將該jar包引入到待測(cè)試環(huán)境中,對(duì)待測(cè)試環(huán)境中的配置文件進(jìn)行配置,進(jìn)而完成對(duì)被測(cè)請(qǐng)求的測(cè)試。需要說明的是,HTTP、DUBBO以及QMQ協(xié)議僅為請(qǐng)求的協(xié)議,在測(cè)試過程中所用到的協(xié)議不限于提高的上述三種協(xié)議。此處需要說明的是,上述第一獲取模塊和第一復(fù)制模塊對(duì)應(yīng)于實(shí)施例1中的步驟S202至步驟S204,兩個(gè)模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開的內(nèi)容??蛇x的,請(qǐng)求獲取模塊705包括:代碼量獲取模塊和請(qǐng)求確定模塊。其中,代碼量獲取模塊,用于獲取多個(gè)請(qǐng)求中的每個(gè)請(qǐng)求覆蓋的代碼量;請(qǐng)求確定模塊,用于將覆蓋代碼量滿足預(yù)定條件的請(qǐng)求作為被測(cè)請(qǐng)求。在一種可選的實(shí)施例中,上述每個(gè)請(qǐng)求覆蓋的代碼量可以用代碼覆蓋率來(lái)表征,具體的,可以通過選取代碼覆蓋率最大的請(qǐng)求作為基準(zhǔn)請(qǐng)求,然后以該基準(zhǔn)請(qǐng)求覆蓋的代碼量為基準(zhǔn),通過判斷其他請(qǐng)求覆蓋的代碼與基準(zhǔn)請(qǐng)求覆蓋的代碼是否能夠覆蓋全部的代碼來(lái)得到被測(cè)請(qǐng)求。其中,如表2所示的多個(gè)請(qǐng)求與其對(duì)應(yīng)的代碼覆蓋率。表2請(qǐng)求BACED代碼覆蓋率78%80%86%86%90%在另一種可選的實(shí)施例中,在線運(yùn)營(yíng)的服務(wù)上的返回結(jié)果為第一結(jié)果,被測(cè)請(qǐng)求被執(zhí)行時(shí)所產(chǎn)生的結(jié)果為第二結(jié)果。在根據(jù)第一結(jié)果和第二結(jié)果得到測(cè)試結(jié)果之后,如果第一結(jié)果和第二結(jié)果存在差異,自動(dòng)化測(cè)試平臺(tái)可以收集使第一結(jié)果與第二結(jié)果出現(xiàn)差異的字段,并對(duì)該字段進(jìn)行保存。當(dāng)進(jìn)行下一次的測(cè)試任務(wù)時(shí),可以在測(cè)試結(jié)果中排除已保存的差異字段對(duì)測(cè)試結(jié)果的影響。其中,上述差異字段可以為但不限于時(shí)間戳、隨機(jī)數(shù)。此處需要說明的是,上述代碼量獲取模塊和請(qǐng)求確定模塊對(duì)應(yīng)于實(shí)施例1中的步驟S302至步驟S304,兩個(gè)模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開的內(nèi)容。可選的,上述請(qǐng)求確定模塊包括:代碼量獲取模塊、判斷子模塊以及存儲(chǔ)模塊。其中,代碼量獲取模塊,用于獲取當(dāng)前請(qǐng)求覆蓋的代碼量;判斷子模塊,用于判斷當(dāng)前請(qǐng)求覆蓋的代碼量是否大于上一請(qǐng)求覆蓋的代碼量;存儲(chǔ)模塊,用于在當(dāng)前請(qǐng)求覆蓋的代碼量大于上一請(qǐng)求覆蓋的代碼量的情況下,保存當(dāng)前請(qǐng)求。具體的,所有請(qǐng)求位于請(qǐng)求隊(duì)列中,在得到每個(gè)請(qǐng)求的代碼覆蓋率之后,所有請(qǐng)求的代碼覆蓋率以遞增的形式在隊(duì)列中排列,其中,位于隊(duì)頭的請(qǐng)求為當(dāng)前請(qǐng)求(例如,在表1中,請(qǐng)求B為當(dāng)前請(qǐng)求)。在一種可選的實(shí)施例中,待測(cè)試程序的代碼覆蓋率初始化為0,當(dāng)前請(qǐng)求B作為請(qǐng)求隊(duì)列中的未發(fā)送請(qǐng)求,位于請(qǐng)求隊(duì)列的隊(duì)頭。當(dāng)檢測(cè)到請(qǐng)求隊(duì)列中存在未發(fā)送請(qǐng)求時(shí),發(fā)送該請(qǐng)求,并獲取當(dāng)前請(qǐng)求的代碼覆蓋率78%。由于78%>0%,因此請(qǐng)求B被篩選出,并保存;當(dāng)發(fā)送完請(qǐng)求B之后,請(qǐng)求A作為當(dāng)前請(qǐng)求,其代碼覆蓋率為80%,大于78%,因此,請(qǐng)求A也將被篩選出,并保存。同樣,請(qǐng)求C的代碼覆蓋率86%>80%,請(qǐng)求D的代碼覆蓋率90%>86%,因此,請(qǐng)求C和請(qǐng)求D被篩選出,并保存;而請(qǐng)求E的代碼覆蓋率86%不大于請(qǐng)求C的代碼覆蓋率86%,因此,請(qǐng)求E不會(huì)被篩選出。需要說明的是,上述代碼量獲取模塊、判斷子模塊以及存儲(chǔ)模塊對(duì)應(yīng)于實(shí)施例1中的步驟S402至步驟S406,三個(gè)模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開的內(nèi)容。可選的,上述請(qǐng)求確定模塊包括:代碼量獲取模塊以及第一篩選模塊。其中,代碼量獲取模塊,用于從多個(gè)請(qǐng)求中篩選出第一請(qǐng)求,并獲取第一請(qǐng)求覆蓋的代碼量;第一篩選模塊,用于根據(jù)第一請(qǐng)求未覆蓋到的代碼,從多個(gè)請(qǐng)求中篩選出能夠覆蓋第一請(qǐng)求未覆蓋到的代碼的請(qǐng)求作為被測(cè)請(qǐng)求。在一種可選的實(shí)施例中,通過請(qǐng)求確定模塊得到每個(gè)請(qǐng)求的代碼覆蓋率之后,選取代碼覆蓋率最大的請(qǐng)求作為第一請(qǐng)求,在表2中,選取請(qǐng)求D作為第一請(qǐng)求。如果請(qǐng)求A所覆蓋的代碼中覆蓋了請(qǐng)求D剩余的10%的代碼,而其他請(qǐng)求所覆蓋的代碼覆蓋請(qǐng)求D剩余代碼的百分比均小于10%,則從上述5個(gè)請(qǐng)求中篩選出請(qǐng)求A和請(qǐng)求D。如果請(qǐng)求A所覆蓋的代碼中只覆蓋了請(qǐng)求D剩余的2%的代碼,而請(qǐng)求B所覆蓋的代碼中覆蓋了請(qǐng)求D和請(qǐng)求A剩余的8%的代碼,而請(qǐng)求C和請(qǐng)求E均只覆蓋了請(qǐng)求D剩余的1%的代碼,則請(qǐng)求A、請(qǐng)求B和請(qǐng)求E作為被測(cè)請(qǐng)求被篩選出。需要說明的是,如果至少兩個(gè)請(qǐng)求的代碼覆蓋率相同,并且該代碼覆蓋率是最大的,此時(shí),從這些請(qǐng)求中任意選擇一個(gè)請(qǐng)求作為被測(cè)請(qǐng)求。此處還需要說明的是,上述代碼量獲取模塊以及第一篩選模塊對(duì)應(yīng)于實(shí)施例1中的步驟S502至步驟S504,兩個(gè)模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開的內(nèi)容??蛇x的,上述請(qǐng)求確定模塊還包括:判斷模塊以及第二篩選模塊。其中,判斷模塊,用于根據(jù)多個(gè)請(qǐng)求中的每個(gè)請(qǐng)求覆蓋的代碼判斷多個(gè)請(qǐng)求中的一組請(qǐng)求覆蓋的代碼是否覆蓋程序的全部代碼;第二篩選模塊,用于在一組請(qǐng)求覆蓋的代碼覆蓋程序的全部代碼的情況下,至少兩個(gè)請(qǐng)求被篩選出,其中,被篩選出的至少兩個(gè)請(qǐng)求為被測(cè)請(qǐng)求。在一種可選的實(shí)施例中,對(duì)所有的請(qǐng)求進(jìn)行組合,如果組合后的請(qǐng)求能夠覆蓋程序的所有代碼,則組合后的請(qǐng)求作為被測(cè)請(qǐng)求被篩選出。需要說明的是,如果存在多種組合均能覆蓋程序的所有代碼,則選擇組合中包含請(qǐng)求數(shù)量最少的請(qǐng)求被篩選出。例如,表2中的請(qǐng)求A和請(qǐng)求B可以覆蓋程序中的所有代碼,而請(qǐng)求A、請(qǐng)求C和請(qǐng)求D也可以覆蓋程序中的所有代碼,則請(qǐng)求A和請(qǐng)求B作為被測(cè)請(qǐng)求被篩選出。通過上述方法,可以選擇請(qǐng)求數(shù)量最少的請(qǐng)求組合,可以有效的節(jié)省測(cè)試時(shí)間,提高測(cè)試效率。此處還需要說明的是,上述判斷模塊以及第二篩選模塊對(duì)應(yīng)于實(shí)施例1中的步驟S602至步驟S604,兩個(gè)模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開的內(nèi)容。上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。在本發(fā)明的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、只讀存儲(chǔ)器(ROM,Read-OnlyMemory)、隨機(jī)存取存儲(chǔ)器(RAM,RandomAccessMemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來(lái)說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。當(dāng)前第1頁(yè)1 2 3