本申請(qǐng)涉及軟件測(cè)試技術(shù)領(lǐng)域,特別涉及一種回歸測(cè)試方法及系統(tǒng)。
背景技術(shù):
為了滿足客戶的需要和適應(yīng)應(yīng)用的需求,軟件系統(tǒng)在其生命周期中會(huì)頻繁地被修改和不斷推出新的版本,修改后的或者新版本的軟件會(huì)添加一些新的功能或者在軟件功能上產(chǎn)生某些變化。
軟件系統(tǒng)隨著引入新增功能、代碼調(diào)整等對(duì)原有代碼的修改之后,往往需要進(jìn)行回歸測(cè)試以確認(rèn)對(duì)原有代碼的修改沒有給軟件系統(tǒng)引入錯(cuò)誤。回歸測(cè)試即是軟件測(cè)試中的一種測(cè)試類型。在實(shí)施回歸測(cè)試的過程中,會(huì)利用到回歸測(cè)試包。該回歸測(cè)試包中可以含有一個(gè)或多個(gè)測(cè)試用例。每個(gè)測(cè)試用例一般包括一組輸入數(shù)據(jù)、執(zhí)行條件和預(yù)期結(jié)果。對(duì)于每個(gè)測(cè)試用例,對(duì)軟件系統(tǒng)設(shè)置一組輸入數(shù)據(jù)和執(zhí)行條件,軟件系統(tǒng)運(yùn)行后可以得到一執(zhí)行結(jié)果。通過比較所有測(cè)試用例的執(zhí)行結(jié)果和預(yù)期結(jié)果,可以測(cè)試出軟件系統(tǒng)是否可以正常工作。
較大的軟件系統(tǒng)中,往往包含不同的子系統(tǒng)。對(duì)軟件系統(tǒng)整體進(jìn)行回歸測(cè)試時(shí),現(xiàn)有技術(shù)中通常采用MOCK(模擬)的方式來模擬子系統(tǒng)。即在模擬服務(wù)器上設(shè)置所要模擬的子系統(tǒng)的MOCK程序來代替需要測(cè)試的真實(shí)子系統(tǒng),并模擬子系統(tǒng)與軟件系統(tǒng)中其他系統(tǒng)模塊之間的交互。
在實(shí)現(xiàn)本申請(qǐng)過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題:
需要投入較大開發(fā)工作量來編寫對(duì)應(yīng)子系統(tǒng)的MOCK程序。此外,每接入一個(gè)新增子系統(tǒng)時(shí),都需要編寫對(duì)應(yīng)于新增子系統(tǒng)的MOCK程序。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例的目的是提供一種回歸測(cè)試方法及系統(tǒng),以減少開發(fā)工作量。
為解決上述技術(shù)問題,本申請(qǐng)實(shí)施例提供的回歸測(cè)試方法及系統(tǒng)是這樣實(shí)現(xiàn)的:
本申請(qǐng)實(shí)施例提供了一種回歸測(cè)試方法,該方法包括:
在第一測(cè)試對(duì)象中執(zhí)行所獲取的回歸測(cè)試包,得到第一組執(zhí)行結(jié)果;
將所述第一組執(zhí)行結(jié)果和預(yù)先存儲(chǔ)的第二組執(zhí)行結(jié)果分別與所述回歸測(cè)試包的第一組預(yù)期結(jié)果以及第二組預(yù)期結(jié)果進(jìn)行對(duì)比,得到測(cè)試結(jié)果,所述第二組執(zhí)行結(jié)果是在第二測(cè)試對(duì)象中執(zhí)行所述回歸測(cè)試包所得到的。
本申請(qǐng)實(shí)施例還提供了一種回歸測(cè)試系統(tǒng),該系統(tǒng)包括:
執(zhí)行單元,用于在第一測(cè)試對(duì)象中執(zhí)行所獲取的回歸測(cè)試包,得到第一組執(zhí)行結(jié)果;
對(duì)比單元,用于將所述第一組執(zhí)行結(jié)果和預(yù)先存儲(chǔ)的第二測(cè)試對(duì)象執(zhí)行所述回歸測(cè)試包所得到的第二組執(zhí)行結(jié)果分別與對(duì)應(yīng)所述回歸測(cè)試包的第一組預(yù)期結(jié)果以及第二組預(yù)期結(jié)果進(jìn)行對(duì)比,得到測(cè)試結(jié)果。
由以上本申請(qǐng)實(shí)施例提供的技術(shù)方案可見,本申請(qǐng)實(shí)施例具有以下有益效果:
本申請(qǐng)實(shí)施例通過執(zhí)行所獲取的回歸測(cè)試包,得到第一測(cè)試對(duì)象對(duì)所述回歸測(cè)試包的第一組執(zhí)行結(jié)果,并調(diào)用所存儲(chǔ)的第二測(cè)試對(duì)象對(duì)所述回歸測(cè)試包的第二組執(zhí)行結(jié)果,而不需要通過編寫第一測(cè)試對(duì)象的MOCK程序來獲得第一測(cè)試對(duì)象的第一組執(zhí)行結(jié)果,這達(dá)到了減少開發(fā)工作量的目的。
附圖說明
為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是現(xiàn)有技術(shù)中一案例所涉及系統(tǒng)的結(jié)構(gòu)示意圖。
圖2是本申請(qǐng)實(shí)施例提供的一種回歸測(cè)試方法的流程示意圖。
圖3是本申請(qǐng)實(shí)施例中提供的一種回歸測(cè)試方法對(duì)應(yīng)的一種應(yīng)用場(chǎng)景中的系統(tǒng)結(jié)構(gòu)圖。
圖4是圖3中所示的支付系統(tǒng)進(jìn)行回歸測(cè)試的流程圖。
圖5是本申請(qǐng)實(shí)施例中提供的一種回歸測(cè)試方法對(duì)應(yīng)的另一種應(yīng)用場(chǎng)景中的系統(tǒng)結(jié)構(gòu)圖。
圖6是本申請(qǐng)實(shí)施例提供的一種回歸測(cè)試系統(tǒng)的模塊圖。
具體實(shí)施方式
本申請(qǐng)實(shí)施例提供了一種回歸測(cè)試方法及系統(tǒng)。
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例。基于本申請(qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
隨著互聯(lián)網(wǎng)的發(fā)展,經(jīng)常需要為已有的集成系統(tǒng)進(jìn)行新的系統(tǒng)集成。例如,在國(guó)際支付 渠道多樣性的背景下,往支付系統(tǒng)中接入新的支付渠道(例如招商銀行網(wǎng)銀系統(tǒng))。例如,為實(shí)現(xiàn)利用谷歌翻譯系統(tǒng)翻譯出的地點(diǎn)在百度地圖上進(jìn)行定位,需要在谷歌翻譯系統(tǒng)中接入百度地圖。再例如,為實(shí)現(xiàn)在公交卡的發(fā)卡管理中心處查看線下充值點(diǎn)信息的目的,需要往發(fā)卡管理系統(tǒng)中接入線下充值網(wǎng)點(diǎn)系統(tǒng)。還例如,為實(shí)現(xiàn)在ERP(Enterprise Resource Planning,企業(yè)資源計(jì)劃)系統(tǒng)中查看采購需求、倉庫存貨量等信息,往ERP系統(tǒng)中接入采購管理系統(tǒng)以及倉庫管理系統(tǒng)。為了檢查接入新增系統(tǒng)后的集成系統(tǒng)整體是否受到影響,需要對(duì)該集成系統(tǒng)整體進(jìn)行回歸測(cè)試。
現(xiàn)有技術(shù)中通常通過采用MOCK(模擬)的方式來對(duì)所集成的軟件系統(tǒng)進(jìn)行回歸測(cè)試?,F(xiàn)以如圖1所示的支付系統(tǒng)為例來進(jìn)行說明。圖1中,子系統(tǒng)A和子系統(tǒng)B為已有子系統(tǒng),可以在MOCK服務(wù)器上部署相應(yīng)的MOCK程序。子系統(tǒng)C為新增的子系統(tǒng)。在進(jìn)行回歸測(cè)試前,需要針對(duì)子系統(tǒng)C開發(fā)相應(yīng)的MOCK程序。這樣,后續(xù)在執(zhí)行針對(duì)子系統(tǒng)C所開發(fā)的MOCK程序時(shí)可以實(shí)現(xiàn)子系統(tǒng)C的預(yù)期功能,并與軟件系統(tǒng)中的其他系統(tǒng)模塊正確交互。
待在MOCK服務(wù)器上部署所開發(fā)出的子系統(tǒng)C的MOCK程序后,可以對(duì)軟件系統(tǒng)進(jìn)行回歸測(cè)試。回歸測(cè)試的具體過程如下:
S110:業(yè)務(wù)核心模塊向MOCK服務(wù)器發(fā)送對(duì)應(yīng)子系統(tǒng)(A,B,C)的測(cè)試用例;
S120:MOCK服務(wù)器執(zhí)行所述測(cè)試用例,并將所述測(cè)試用例的執(zhí)行結(jié)果返回至所述業(yè)務(wù)核心模塊。
S130:業(yè)務(wù)核心模塊將所述執(zhí)行結(jié)果與預(yù)期結(jié)果進(jìn)行對(duì)比,得到測(cè)試結(jié)果。
采用這種方法,在進(jìn)行回歸測(cè)試前,需要為接入的新增子系統(tǒng)開發(fā)對(duì)應(yīng)的MOCK程序,并且每接入一個(gè)新增子系統(tǒng),都需要重新開發(fā)對(duì)應(yīng)的MOCK程序,這需要投入大量的開發(fā)工作量。本申請(qǐng)實(shí)施例通過從新增子系統(tǒng)來獲取對(duì)應(yīng)回歸測(cè)試包中測(cè)試用例的第一組執(zhí)行結(jié)果,從而減少開發(fā)工作量。
下面結(jié)合附圖對(duì)本申請(qǐng)所述的回歸測(cè)試方法進(jìn)行詳細(xì)的說明。圖2是本申請(qǐng)實(shí)施例所提供的一種回歸測(cè)試方法的流程圖。雖然本申請(qǐng)?zhí)峁┝巳缦率鰧?shí)施例或流程圖所述的方法操作步驟,但基于常規(guī)或者無需創(chuàng)造性的勞動(dòng)在所述方法中可以包括更多或者更少的操作步驟。在邏輯性上不存在必要因果關(guān)系的步驟中,這些步驟的執(zhí)行順序不限于本申請(qǐng)實(shí)施例提供的執(zhí)行順序。所述方法在實(shí)際中的裝置或終端產(chǎn)品執(zhí)行時(shí),可以按照實(shí)施例或者附圖所示的方法順序執(zhí)行或者并行執(zhí)行(例如并行處理器或者多線程處理的環(huán)境)。該方法可以包括如下步驟:
S210:在第一測(cè)試對(duì)象中執(zhí)行所獲取的回歸測(cè)試包,得到第一組執(zhí)行結(jié)果。
所述第一測(cè)試對(duì)象可以是軟件系統(tǒng)中的一個(gè)或多個(gè)新增子系統(tǒng),也可以是軟件系統(tǒng)的子 系統(tǒng)中的一個(gè)或多個(gè)新增模塊或單元,還可以是軟件系統(tǒng)中一個(gè)或多個(gè)變更子系統(tǒng)。所述變更子系統(tǒng)可以是對(duì)軟件系統(tǒng)中的已有子系統(tǒng)進(jìn)行修復(fù)、升級(jí)或性能優(yōu)化等后所得到的子系統(tǒng)。對(duì)于所述第一測(cè)試對(duì)象為多個(gè)新增子系統(tǒng)的情形,多個(gè)新增子系統(tǒng)之間可以相互獨(dú)立,也可以相互集成。
所述回歸測(cè)試包可以含有一個(gè)或多個(gè)測(cè)試用例。相應(yīng)的,所述第一組執(zhí)行結(jié)果中可以含有在所述第一測(cè)試對(duì)象中執(zhí)行所述回歸測(cè)試包中的測(cè)試用例所得到的一個(gè)或多個(gè)第一執(zhí)行結(jié)果。
所述在第一測(cè)試對(duì)象中執(zhí)行所獲取的回歸測(cè)試包,得到第一組執(zhí)行結(jié)果可以是基于測(cè)試任務(wù),從所獲取的回歸測(cè)試包中選取測(cè)試用例,并在第一測(cè)試對(duì)象中執(zhí)行所選取的測(cè)試用例,得到所述第一測(cè)試對(duì)象對(duì)所選取的測(cè)試用例的第一執(zhí)行結(jié)果。在第一測(cè)試對(duì)象中執(zhí)行所有所選取的測(cè)試用例所得到的第一執(zhí)行結(jié)果構(gòu)成了第一組執(zhí)行結(jié)果。需要說明的是,在第一測(cè)試對(duì)象中執(zhí)行所選取的測(cè)試用例可以理解為是第一測(cè)試對(duì)象執(zhí)行所選取的測(cè)試用例。
所述測(cè)試任務(wù)可以包括需要執(zhí)行的測(cè)試用例的標(biāo)識(shí)以及所述第一測(cè)試對(duì)象與所述測(cè)試用例之間的對(duì)應(yīng)關(guān)系。所述測(cè)試任務(wù)也可以包括所述第一測(cè)試對(duì)象的標(biāo)識(shí)。所述測(cè)試用例的標(biāo)識(shí)可以是所述測(cè)試用例的名稱和/或編號(hào)。所述第一測(cè)試對(duì)象與所述測(cè)試用例之間的對(duì)應(yīng)關(guān)系可以是所述第一測(cè)試對(duì)象的標(biāo)識(shí)與所述測(cè)試用例的標(biāo)識(shí)之間的對(duì)應(yīng)關(guān)系。
在一實(shí)施例中,可以根據(jù)所述測(cè)試用例的標(biāo)識(shí),從所述回歸測(cè)試包中選取對(duì)應(yīng)的測(cè)試用例;然后可以根據(jù)所述第一測(cè)試對(duì)象與所述測(cè)試用例之間的對(duì)應(yīng)關(guān)系,對(duì)應(yīng)所選取的測(cè)試用例的第一測(cè)試對(duì)象執(zhí)行所選取的測(cè)試用例,得到第一組執(zhí)行結(jié)果。
在另一實(shí)施例中,可以根據(jù)第一測(cè)試對(duì)象的標(biāo)識(shí),確定參與測(cè)試的第一測(cè)試對(duì)象;然后根據(jù)所述第一測(cè)試對(duì)象與所述測(cè)試用例之間的對(duì)應(yīng)關(guān)系,例如所述第一測(cè)試對(duì)象的標(biāo)識(shí)與所述測(cè)試用例的標(biāo)識(shí)之間的對(duì)應(yīng)關(guān)系,確定所需要執(zhí)行的測(cè)試用例的標(biāo)識(shí);再根據(jù)所確定的測(cè)試用例的標(biāo)識(shí),從所述回歸測(cè)試包中選取對(duì)應(yīng)的測(cè)試用例;最后在所述第一測(cè)試對(duì)象中執(zhí)行所選取的測(cè)試用例,得到第一組執(zhí)行結(jié)果。
在所述第一測(cè)試對(duì)象中執(zhí)行所選取的測(cè)試用例,得到第一組執(zhí)行結(jié)果可以是按照每一個(gè)測(cè)試用例中的執(zhí)行條件,檢測(cè)對(duì)應(yīng)測(cè)試用例中相關(guān)的輸入數(shù)據(jù)是否與所述第一測(cè)試對(duì)象自身所含數(shù)據(jù)相匹配,并輸出相應(yīng)的第一執(zhí)行結(jié)果。在檢測(cè)出所述輸入數(shù)據(jù)與所述第一測(cè)試對(duì)象自身所含數(shù)據(jù)相匹配時(shí),可以輸出表示匹配的第一執(zhí)行結(jié)果;在檢測(cè)出所述輸入數(shù)據(jù)與所述第一測(cè)試對(duì)象自身所含數(shù)據(jù)不匹配時(shí),可以輸出表示不匹配的第一執(zhí)行結(jié)果。例如,所述第一測(cè)試對(duì)象為中國(guó)銀行網(wǎng)上銀行系統(tǒng),所述執(zhí)行條件為在檢驗(yàn)銀行卡號(hào)信息后檢驗(yàn)金額信息。所述輸入數(shù)據(jù)中含有銀行卡號(hào)、金額等信息。按照?qǐng)?zhí)行條件,首先檢測(cè)該銀行卡號(hào)是不 是屬于中國(guó)銀行的卡號(hào);在檢測(cè)出該銀行卡號(hào)是屬于中國(guó)銀行的卡號(hào)時(shí),再檢測(cè)該銀行卡號(hào)所對(duì)應(yīng)賬戶中的金額能否滿足待測(cè)試數(shù)據(jù)中的金額需求;在檢測(cè)出用戶賬戶中的金額滿足待測(cè)試數(shù)據(jù)中的金額需求時(shí),輸出表示通過檢驗(yàn)的第一執(zhí)行結(jié)果。如果檢測(cè)出該銀行卡號(hào)不屬于中國(guó)銀行的卡號(hào),可以輸出未通過檢驗(yàn)的第一執(zhí)行結(jié)果。
所述在第一測(cè)試對(duì)象中執(zhí)行所獲取的回歸測(cè)試包可以是基于第一觸發(fā)信息,在所述第一測(cè)試對(duì)象中執(zhí)行即時(shí)獲取的回歸測(cè)試包;也可以是基于第一觸發(fā)信息,在所述第一測(cè)試對(duì)象中執(zhí)行預(yù)先獲取的回歸測(cè)試包。所述第一觸發(fā)信息可以是進(jìn)行測(cè)試的時(shí)間信息,例如預(yù)定義的周期性時(shí)間或者基于外界環(huán)境滿足一定條件時(shí)進(jìn)行測(cè)試的時(shí)間。此外,所述第一觸發(fā)信息也還可以是接收到指示進(jìn)行測(cè)試的觸發(fā)指令,例如自動(dòng)化腳本指令或者用戶指令。
所述在第一測(cè)試對(duì)象中執(zhí)行所獲取的回歸測(cè)試包還可以包括按照第一預(yù)設(shè)協(xié)議,對(duì)所獲取的回歸測(cè)試包進(jìn)行轉(zhuǎn)換,在所述第一測(cè)試對(duì)象中執(zhí)行轉(zhuǎn)換后的回歸測(cè)試包;也還可以包括按照第二預(yù)設(shè)協(xié)議,對(duì)所獲取的回歸測(cè)試包進(jìn)行信息過濾,在所述第一測(cè)試對(duì)象中執(zhí)行信息過濾后的回歸測(cè)試包。對(duì)回歸測(cè)試包進(jìn)行信息過濾可以提高回歸測(cè)試的效率以及減少資源的占用空間。
所述第一預(yù)設(shè)協(xié)議可以是所述回歸測(cè)試包中測(cè)試用例的轉(zhuǎn)換格式和/或轉(zhuǎn)換內(nèi)容等。例如,對(duì)所述測(cè)試用例進(jìn)行格式轉(zhuǎn)換,可以將測(cè)試用例中的大寫字母轉(zhuǎn)換為小寫字母。所述第二預(yù)設(shè)協(xié)議可以是過濾掉所述回歸測(cè)試包中無需執(zhí)行的測(cè)試用例;也可以是過濾掉測(cè)試用例中無需執(zhí)行的輸入數(shù)據(jù)。
S220:將所述第一組執(zhí)行結(jié)果和預(yù)先存儲(chǔ)的第二組執(zhí)行結(jié)果分別與所述回歸測(cè)試包的第一組預(yù)期結(jié)果和第二組預(yù)期結(jié)果進(jìn)行對(duì)比,得到測(cè)試結(jié)果,所述第二組執(zhí)行結(jié)果是在第二測(cè)試對(duì)象中執(zhí)行所述回歸測(cè)試包所得到的。
所述第二測(cè)試對(duì)象可以是軟件系統(tǒng)中的一個(gè)或多個(gè)已有子系統(tǒng),也可以是軟件系統(tǒng)的子系統(tǒng)中的一個(gè)或多個(gè)已有模塊或單元。對(duì)于所述第二測(cè)試對(duì)象為多個(gè)已有子系統(tǒng)的情形,多個(gè)已有子系統(tǒng)之間可以相互獨(dú)立,也可以相互集成。
所述第二組執(zhí)行結(jié)果中可以含有在所述第二測(cè)試對(duì)象中執(zhí)行所述回歸測(cè)試包中的測(cè)試用例所得到的一個(gè)或多個(gè)第二執(zhí)行結(jié)果。所述第二測(cè)試對(duì)象所執(zhí)行的測(cè)試用例可以與所述第一測(cè)試對(duì)象所執(zhí)行的測(cè)試用例相同,也可以不同。
所述第一組預(yù)期結(jié)果和所述第二組預(yù)期結(jié)果中可以分別含有與所述回歸測(cè)試包中的測(cè)試用例的第一執(zhí)行結(jié)果和第二執(zhí)行結(jié)果對(duì)應(yīng)的第一預(yù)期結(jié)果和第二預(yù)期結(jié)果。
根據(jù)所述測(cè)試結(jié)果,可以判斷軟件系統(tǒng)是否可以正常工作。在所述測(cè)試結(jié)果表示通過測(cè)試時(shí),可以判斷所述軟件系統(tǒng)可以正常工作。在所述測(cè)試結(jié)果表示未通過測(cè)試時(shí),可以判斷所述軟件系統(tǒng)不能正常工作。
所述測(cè)試結(jié)果可以包括對(duì)比所述第一組執(zhí)行結(jié)果和所述回歸測(cè)試包的第一組預(yù)期結(jié)果所得到的第一對(duì)比結(jié)果以及對(duì)比預(yù)先存儲(chǔ)的第二組執(zhí)行結(jié)果和所述回歸測(cè)試包的第二組預(yù)期結(jié)果所得到的第二對(duì)比結(jié)果。所述對(duì)比所述第一組執(zhí)行結(jié)果和所述回歸測(cè)試包的第一組預(yù)期結(jié)果可以包括將在所述第一測(cè)試對(duì)象中執(zhí)行從所述回歸測(cè)試包中所選取的每個(gè)測(cè)試用例所得到的第一執(zhí)行結(jié)果與對(duì)應(yīng)該測(cè)試用例的第一預(yù)期結(jié)果進(jìn)行對(duì)比。所述對(duì)比預(yù)先存儲(chǔ)的第二組執(zhí)行結(jié)果和所述回歸測(cè)試包的第二組預(yù)期結(jié)果包括將預(yù)先存儲(chǔ)的在所述第二測(cè)試對(duì)象中執(zhí)行所選取的每個(gè)測(cè)試用例所得到的第二執(zhí)行結(jié)果與對(duì)應(yīng)該測(cè)試用例的第二預(yù)期結(jié)果進(jìn)行對(duì)比。
根據(jù)所述第一對(duì)比結(jié)果和所述第二對(duì)比結(jié)果分別可以判斷所述第一測(cè)試對(duì)象是否可以實(shí)現(xiàn)其預(yù)期功能以及所述第二測(cè)試對(duì)象是否可以實(shí)現(xiàn)其已有功能。在所述第一對(duì)比結(jié)果表示所述第一組執(zhí)行結(jié)果和第一組預(yù)期結(jié)果相一致時(shí),可以判斷所述第一測(cè)試對(duì)象可以實(shí)現(xiàn)其預(yù)期功能;在所述第一對(duì)比結(jié)果表示所述第一組執(zhí)行結(jié)果和第一組預(yù)期結(jié)果不一致時(shí),可以判斷所述第一測(cè)試對(duì)象不可以實(shí)現(xiàn)其預(yù)期功能。此外,在所述第一對(duì)比結(jié)果表示第一測(cè)試用例不適用于第一測(cè)試對(duì)象時(shí),可以判斷需要重新編寫、修改測(cè)試用例或選用其他測(cè)試用例來對(duì)第一測(cè)試對(duì)象進(jìn)行測(cè)試;在所述第一對(duì)比結(jié)果表示所選取測(cè)試用例無法執(zhí)行時(shí),可以判斷所述第一測(cè)試對(duì)象出現(xiàn)故障或存在其他造成所選取的測(cè)試用例無法執(zhí)行。
所述第二對(duì)比結(jié)果所表示的情形可參考對(duì)所述第一組對(duì)比結(jié)果所表示的情形的描述,在此不再贅敘。
所述將所述第一組執(zhí)行結(jié)果和預(yù)先存儲(chǔ)的第二組執(zhí)行結(jié)果分別與所述回歸測(cè)試包的第一組預(yù)期結(jié)果和第二組預(yù)期結(jié)果進(jìn)行對(duì)比可以包括:
S221:查找預(yù)先存儲(chǔ)的在第二測(cè)試對(duì)象中執(zhí)行所述回歸測(cè)試包所得到的第二組執(zhí)行結(jié)果。
所述在第二測(cè)試對(duì)象中執(zhí)行所述回歸測(cè)試包可以理解為第二測(cè)試對(duì)象本身執(zhí)行所述回歸測(cè)試包。
在一實(shí)施例中,可以根據(jù)所獲取的所述第二測(cè)試對(duì)象的標(biāo)識(shí)以及所述回歸測(cè)試包的標(biāo)識(shí)來查找預(yù)先存儲(chǔ)的在第二測(cè)試對(duì)象中執(zhí)行所述第二回歸測(cè)試包所得到的第二組執(zhí)行結(jié)果。具體的,
利用所獲取的所述第二測(cè)試對(duì)象的標(biāo)識(shí),查找到有關(guān)所述第二測(cè)試對(duì)象的第二存儲(chǔ)信 息,然后再利用所述回歸測(cè)試包的標(biāo)識(shí),在所述第二存儲(chǔ)信息中查找對(duì)應(yīng)所述回歸測(cè)試包的第二組執(zhí)行結(jié)果。
所述查找對(duì)應(yīng)所述回歸測(cè)試包的第二組執(zhí)行結(jié)果可以是利用所選取的測(cè)試用例的標(biāo)識(shí),查找對(duì)應(yīng)每個(gè)所選取測(cè)試用例的第二執(zhí)行結(jié)果,所查找到的所有所選取測(cè)試用例的第二執(zhí)行結(jié)果構(gòu)成了第二組執(zhí)行結(jié)果。
所述第二存儲(chǔ)信息中可以含有所述第二測(cè)試對(duì)象的標(biāo)識(shí)、所述回歸測(cè)試包以及所述第二組執(zhí)行結(jié)果。所述第二測(cè)試對(duì)象的標(biāo)識(shí)用于標(biāo)識(shí)所述第二測(cè)試對(duì)象,其可以為第二測(cè)試對(duì)象的名稱和/或編號(hào)等。所述測(cè)試用例的標(biāo)識(shí)用于標(biāo)識(shí)所述測(cè)試用例,其可以為測(cè)試用例的名稱和/或編號(hào)。
S222:將所查找到的第二組執(zhí)行結(jié)果與所述回歸測(cè)試包的第二組預(yù)期結(jié)果進(jìn)行對(duì)比。
S223:將在所述第一測(cè)試對(duì)象中執(zhí)行所述回歸測(cè)試包所得到的第一組執(zhí)行結(jié)果與所述回歸測(cè)試包的第一組預(yù)期結(jié)果進(jìn)行對(duì)比。
需要說明的是S233與S221-S222之間的順序并沒有限制,S221與S210之間的執(zhí)行順序也沒有限制。
通過上述步驟可以看出,本申請(qǐng)實(shí)施例通過在第一測(cè)試對(duì)象中執(zhí)行所獲取的回歸測(cè)試包來獲得對(duì)應(yīng)的第一組執(zhí)行結(jié)果,而不是通過開發(fā)第一測(cè)試對(duì)象的MOCK程序,然后利用所開發(fā)的MOCK程序來獲取第一組組執(zhí)行結(jié)果,這實(shí)現(xiàn)了減少開發(fā)工作量的目的。此外,本申請(qǐng)實(shí)施例通過查找來獲取預(yù)先存儲(chǔ)的在第二測(cè)試對(duì)象中執(zhí)行所述回歸測(cè)試包所得到的第二組執(zhí)行結(jié)果,而無需通過執(zhí)行第二測(cè)試對(duì)象的MOCK程序來獲取對(duì)應(yīng)的第二執(zhí)組行結(jié)果,這提高了回歸測(cè)試的效率。
在另一實(shí)施例中,所述方法還包括:
S200:獲取回歸測(cè)試包、第一測(cè)試對(duì)象的標(biāo)識(shí)以及第二測(cè)試對(duì)象的標(biāo)識(shí)。
所述獲取回歸測(cè)試包、第一測(cè)試對(duì)象的標(biāo)識(shí)以及第二測(cè)試對(duì)象的標(biāo)識(shí)可以是基于第二觸發(fā)信息,獲取回歸測(cè)試包、第一測(cè)試對(duì)象的標(biāo)識(shí)以及第二測(cè)試對(duì)象的標(biāo)識(shí);也可以是預(yù)先獲取回歸測(cè)試包、第一測(cè)試對(duì)象的標(biāo)識(shí)以及第二測(cè)試對(duì)象的標(biāo)識(shí),然后基于第二觸發(fā)信息查找到預(yù)先獲取的回歸測(cè)試包、第一測(cè)試對(duì)象的標(biāo)識(shí)以及第二測(cè)試對(duì)象的標(biāo)識(shí)。
所述第二觸發(fā)信息可以與所述第一觸發(fā)信息相同,即可以是指示進(jìn)行測(cè)試的時(shí)間信息;也還可以是接收到指示進(jìn)行測(cè)試的觸發(fā)指令,例如自動(dòng)化腳本指令或者用戶指令。
在另一實(shí)施例中,為了下次實(shí)施回歸測(cè)試時(shí),可以直接調(diào)用所得到的第一組執(zhí)行結(jié)果,提高回歸測(cè)試的效率,所述方法還包括:
S230:存儲(chǔ)所得到的第一組執(zhí)行結(jié)果。
所述存儲(chǔ)所得到的第一組執(zhí)行結(jié)果可以是利用所述第一測(cè)試對(duì)象的標(biāo)識(shí),將所述第一組執(zhí)行結(jié)果進(jìn)行存儲(chǔ),以便于與所存儲(chǔ)的其他測(cè)試對(duì)象的執(zhí)行結(jié)果相區(qū)分開;也可以是按照第三預(yù)設(shè)協(xié)議,對(duì)所述第一組執(zhí)行結(jié)果進(jìn)行存儲(chǔ)。所述第三預(yù)設(shè)協(xié)議可以是第一組執(zhí)行結(jié)果的存儲(chǔ)格式和/或存儲(chǔ)內(nèi)容等。此外,也還可以以所述第一測(cè)試對(duì)象的標(biāo)識(shí)來對(duì)所述第一組執(zhí)行結(jié)果的存儲(chǔ)途徑進(jìn)行命名,以便于與之前存儲(chǔ)的其他測(cè)試對(duì)象相關(guān)的信息相區(qū)別。
所述存儲(chǔ)所得到的第一組執(zhí)行結(jié)果還可以是將所述第一組執(zhí)行結(jié)果與對(duì)應(yīng)的回歸測(cè)試包進(jìn)行關(guān)聯(lián)存儲(chǔ),即可以將所述第一組執(zhí)行結(jié)果和所述回歸測(cè)試包存儲(chǔ)在同一位置。所述第一組執(zhí)行結(jié)果與對(duì)應(yīng)的回歸測(cè)試包進(jìn)行關(guān)聯(lián)存儲(chǔ)可以包括將所述第一組執(zhí)行結(jié)果中的每一個(gè)第一執(zhí)行結(jié)果與對(duì)應(yīng)的測(cè)試用例進(jìn)行關(guān)聯(lián)存儲(chǔ)。
在下次接入第一測(cè)試對(duì)象時(shí),本次接入的第一測(cè)試對(duì)象成為第二測(cè)試對(duì)象,第一組執(zhí)行結(jié)果成為第二組執(zhí)行結(jié)果。在下次進(jìn)行回歸測(cè)試時(shí),下次接入的第一測(cè)試對(duì)象可按照獲取本次接入的第一測(cè)試對(duì)象的第一組執(zhí)行結(jié)果的方法來獲取對(duì)應(yīng)的第一組執(zhí)行結(jié)果,而無需再開發(fā)對(duì)應(yīng)的MOCK程序。
以下結(jié)合具體場(chǎng)景說明本申請(qǐng)方法實(shí)施例的實(shí)現(xiàn)過程,可以結(jié)合圖3-圖5加以理解。
以支付系統(tǒng)為例,如圖3所示,該支付系統(tǒng)包括業(yè)務(wù)核心模塊、網(wǎng)關(guān)模塊、Record/Replay(錄制/回放)以及支付渠道A和B?,F(xiàn)因業(yè)務(wù)需要,往支付系統(tǒng)中接入新的支付渠道C,Record/Replay中存儲(chǔ)有支付渠道A和B對(duì)回歸測(cè)試包的第二組執(zhí)行結(jié)果,未存儲(chǔ)有支付渠道C對(duì)回歸測(cè)試包的第一組執(zhí)行結(jié)果?,F(xiàn)以從回歸測(cè)試包中針對(duì)三個(gè)支付渠道分別選取一個(gè)測(cè)試用例為例來說明針對(duì)該支付系統(tǒng)執(zhí)行回歸測(cè)試的過程。參考圖4,該支付系統(tǒng)執(zhí)行回歸測(cè)試的具體實(shí)現(xiàn)過程如下:
S400:業(yè)務(wù)核心模塊向網(wǎng)關(guān)模塊發(fā)送請(qǐng)求信息,請(qǐng)求獲取支付渠道(A,B)對(duì)測(cè)試用例(a,b)的第二執(zhí)行結(jié)果以及支付渠道C對(duì)測(cè)試用例c的第一執(zhí)行結(jié)果,所述請(qǐng)求信息可以包括所獲取的支付渠道(A,B,C)的渠道編號(hào)以及測(cè)試用例(a,b,c)。
S410:網(wǎng)關(guān)模塊將所接收的請(qǐng)求信息復(fù)制后發(fā)送給Record/Replay。
S420:Record/Replay針對(duì)支付渠道C進(jìn)入存儲(chǔ)狀態(tài),存儲(chǔ)支付渠道C的測(cè)試用例c,并查找支付渠道A和B對(duì)測(cè)試用例a和b的第二執(zhí)行結(jié)果,并將所查找到的第二執(zhí)行結(jié)果通過網(wǎng)關(guān)模塊發(fā)送給業(yè)務(wù)核心模塊。
由于Record/Replay中存儲(chǔ)有支付渠道A和B的測(cè)試用例a和b,因此Record/Replay會(huì)忽略所接收的對(duì)應(yīng)支付渠道A和B的測(cè)試用例a和b,而只存儲(chǔ)對(duì)應(yīng)支付渠道C的測(cè)試用例c。
S430:網(wǎng)關(guān)模塊按照預(yù)先與支付渠道C之間設(shè)定的協(xié)議,對(duì)復(fù)制的請(qǐng)求信息進(jìn)行轉(zhuǎn)換以 及信息過濾處理,并根據(jù)支付渠道C的編號(hào),將處理后的測(cè)試用例c發(fā)送給支付渠道C。
S440:支付渠道C接收并檢測(cè)網(wǎng)關(guān)模塊發(fā)送的測(cè)試用例c,并向網(wǎng)關(guān)模塊返回第一執(zhí)行結(jié)果。
S450:網(wǎng)關(guān)模塊按照與核心模塊以及Record/Replay之間的協(xié)議,將接收的第一執(zhí)行結(jié)果進(jìn)行轉(zhuǎn)換,并將轉(zhuǎn)換后的第一執(zhí)行結(jié)果分別發(fā)送給業(yè)務(wù)核心模塊和Record/Replay。
需要說明的是,發(fā)送給業(yè)務(wù)核心模塊和Record/Replay的第一執(zhí)行結(jié)果可以同時(shí)發(fā)送,也可以分開發(fā)送。此外,在向業(yè)務(wù)核心模塊發(fā)送第一執(zhí)行結(jié)果的同時(shí),還可以發(fā)送支付渠道C的編號(hào);而在向Record/Replay發(fā)送第一執(zhí)行結(jié)果時(shí),還可以發(fā)送支付渠道C的編號(hào)和測(cè)試用例的標(biāo)識(shí)。
S460:Record/Replay對(duì)所接收的第一執(zhí)行結(jié)果進(jìn)行存儲(chǔ),結(jié)束存儲(chǔ)狀態(tài)。
Record/Replay可以根據(jù)結(jié)果數(shù)據(jù)中的支付渠道C的編號(hào)和測(cè)試用例的標(biāo)識(shí),將所接收的第一執(zhí)行結(jié)果進(jìn)行定位存儲(chǔ),即可以將第一執(zhí)行結(jié)果存儲(chǔ)在對(duì)應(yīng)的測(cè)試用例所在的位置處。
S470:業(yè)務(wù)核心模塊將所接收第一執(zhí)行結(jié)果以及第二執(zhí)行結(jié)果分別與對(duì)應(yīng)的第一預(yù)期結(jié)果和第二預(yù)期結(jié)果進(jìn)行對(duì)比,得到測(cè)試結(jié)果,完成測(cè)試。
在上述具體場(chǎng)景中,業(yè)務(wù)核心模塊、網(wǎng)關(guān)模塊和Record/Replay可以為相互獨(dú)立的子系統(tǒng)或裝置,也可以為位于子系統(tǒng)中的模塊,這三個(gè)模塊之間可以為內(nèi)嵌的位置關(guān)系。例如Record/Replay內(nèi)嵌于網(wǎng)關(guān)模塊中,網(wǎng)關(guān)模塊內(nèi)嵌于業(yè)務(wù)核心模塊中。支付渠道A,B,C可以與上述三個(gè)模塊集成于同一系統(tǒng),也可以為獨(dú)立的第三方子系統(tǒng)。此外,支付渠道A,B,C之間也可以相互獨(dú)立。
再以企業(yè)系統(tǒng)為例,如圖5所示。該企業(yè)系統(tǒng)包括企業(yè)管理中心、Record/Replay(錄制/回放)、企業(yè)D-E。在企業(yè)D集成企業(yè)E的服務(wù)上線后,因業(yè)務(wù)需要對(duì)企業(yè)D進(jìn)行了系統(tǒng)升級(jí)。在Record/Replay中存儲(chǔ)有企業(yè)E對(duì)回歸測(cè)試包的第二組執(zhí)行結(jié)果,未存儲(chǔ)有系統(tǒng)升級(jí)后的企業(yè)D對(duì)回歸測(cè)試包的第一組執(zhí)行結(jié)果?,F(xiàn)以從回歸測(cè)試包中針對(duì)企業(yè)D和E各自分別選取一個(gè)測(cè)試用例為例來說明針對(duì)該支付系統(tǒng)執(zhí)行回歸測(cè)試的過程。該支付系統(tǒng)執(zhí)行回歸測(cè)試的具體實(shí)現(xiàn)過程如下:
(1)企業(yè)管理中心向Record/Replay發(fā)送請(qǐng)求信息,請(qǐng)求獲取企業(yè)D對(duì)測(cè)試用例d的第一執(zhí)行結(jié)果以及企業(yè)E對(duì)測(cè)試用例e的第二執(zhí)行結(jié)果。
(2)Record/Replay針對(duì)對(duì)應(yīng)企業(yè)D的測(cè)試用例d進(jìn)入Record狀態(tài),存儲(chǔ)測(cè)試用例d,并對(duì)對(duì)應(yīng)企業(yè)E的測(cè)試用例e進(jìn)入Replay狀態(tài),查找企業(yè)E對(duì)測(cè)試用例e的第二執(zhí)行結(jié)果,并將所查找到的第二執(zhí)行結(jié)果發(fā)送給企業(yè)管理中心。
(3)企業(yè)管理中心向企業(yè)D發(fā)送測(cè)試用例d,企業(yè)D執(zhí)行所接收的測(cè)試用例d,并向企業(yè) 管理中心發(fā)送第一執(zhí)行結(jié)果。
(4)企業(yè)管理中心將所接收的第一執(zhí)行結(jié)果發(fā)送給Record/Replay,Record/Replay對(duì)所接收的第一執(zhí)行結(jié)果進(jìn)行存儲(chǔ)。
(5)企業(yè)管理中心還將所接收的第一執(zhí)行結(jié)果以及第二執(zhí)行結(jié)果分別與對(duì)應(yīng)的第一預(yù)期結(jié)果和第二預(yù)期結(jié)果進(jìn)行對(duì)比,得到測(cè)試結(jié)果,完成測(cè)試。
本申請(qǐng)實(shí)施例還提供了一種回歸測(cè)試系統(tǒng),如圖6所示。應(yīng)該理解,所述系統(tǒng)可以比圖示具有更多或更少的單元。該系統(tǒng)包括:執(zhí)行單元510以及對(duì)比單元520。其中,
執(zhí)行單元510可以用于在第一測(cè)試對(duì)象中執(zhí)行所獲取的回歸測(cè)試包,得到第一測(cè)試對(duì)象對(duì)所述回歸測(cè)試包的第一組執(zhí)行結(jié)果;
對(duì)比單元520可以用于將所述第一組執(zhí)行結(jié)果和預(yù)先存儲(chǔ)的在第二測(cè)試對(duì)象中執(zhí)行所述回歸測(cè)試包所得到的第二組執(zhí)行結(jié)果分別與對(duì)應(yīng)所述回歸測(cè)試包的第一組預(yù)期結(jié)果以及第二組預(yù)期結(jié)果進(jìn)行對(duì)比,得到測(cè)試結(jié)果。
在一實(shí)施例中,執(zhí)行單元510可以包括選取子單元和第一執(zhí)行子單元(圖中未示出).其中,選取子單元用于基于測(cè)試任務(wù),從所獲取的回歸測(cè)試包中選取測(cè)試用例;第一執(zhí)行子單元用于在第一測(cè)試對(duì)象中執(zhí)行所選取的測(cè)試用例,得到所述第一測(cè)試對(duì)象對(duì)所選取的測(cè)試用例的第一組執(zhí)行結(jié)果。所述測(cè)試任務(wù)包括需要執(zhí)行的測(cè)試用例的標(biāo)識(shí)以及所述第一測(cè)試對(duì)象與所述測(cè)試用例之間的對(duì)應(yīng)關(guān)系。
在另一實(shí)施例中,執(zhí)行單元510還可以包括第二執(zhí)行子單元(圖中未示出),用于基于第一觸發(fā)信息,在第一測(cè)試對(duì)象中執(zhí)行即時(shí)獲取的回歸測(cè)試包或執(zhí)行預(yù)先獲取的回歸測(cè)試包。
在另一實(shí)施例中,執(zhí)行單元510還可以包括:
轉(zhuǎn)換子單元,用于按照第一預(yù)設(shè)協(xié)議,對(duì)所獲取的回歸測(cè)試包進(jìn)行轉(zhuǎn)換;
第三執(zhí)行子單元,用于在第一測(cè)試對(duì)象中執(zhí)行轉(zhuǎn)換后的回歸測(cè)試包。
在另一實(shí)施例中,執(zhí)行單元510還可以包括:
信息過濾子單元,用于按照第二預(yù)設(shè)協(xié)議,對(duì)所獲取的回歸測(cè)試包進(jìn)行信息過濾;
第四執(zhí)行子單元,用于在第一測(cè)試對(duì)象中執(zhí)行信息過濾后的回歸測(cè)試包。
在一實(shí)施例中,對(duì)比單元520包括:
查找子單元,用于查找預(yù)先存儲(chǔ)的在第二測(cè)試對(duì)象中執(zhí)行所述回歸測(cè)試包所得到的第二組執(zhí)行結(jié)果;
第一對(duì)比子單元,用于將所查找到的第二組執(zhí)行結(jié)果與對(duì)應(yīng)所述回歸測(cè)試包的第二組預(yù)期結(jié)果進(jìn)行對(duì)比;
第二對(duì)比子單元,用于將在第一測(cè)試對(duì)象中執(zhí)行所述回歸測(cè)試包所得到的第一組執(zhí)行結(jié)果與對(duì)應(yīng)所述回歸測(cè)試包的第一組預(yù)期結(jié)果進(jìn)行對(duì)比。
在另一實(shí)施例中,所述系統(tǒng)還包括獲取單元500,其可以用于獲取所述回歸測(cè)試包、所述第一測(cè)試對(duì)象的標(biāo)識(shí)以及所述第二測(cè)試對(duì)象的標(biāo)識(shí)。
獲取單元500可以包括第一獲取子單元,用于基于第二觸發(fā)信息,獲取所述回歸測(cè)試包、所述第一測(cè)試對(duì)象的標(biāo)識(shí)以及所述第二測(cè)試對(duì)象的標(biāo)識(shí)。
獲取單元500還可以包括:
第二獲取子單元,用于預(yù)先獲取所述回歸測(cè)試包、所述第一測(cè)試對(duì)象的標(biāo)識(shí)以及所述第二測(cè)試對(duì)象的標(biāo)識(shí);
查找子單元,用于基于第二觸發(fā)信息,查找到預(yù)先獲取的回歸測(cè)試包、所述第一測(cè)試對(duì)象的標(biāo)識(shí)以及所述第二測(cè)試對(duì)象的標(biāo)識(shí)。所述第二觸發(fā)信息可以與所述第一觸發(fā)信息相同。
在另一實(shí)施例中,所述系統(tǒng)還包括存儲(chǔ)單元530,其可以用于存儲(chǔ)所得到的第一組執(zhí)行結(jié)果。
在20世紀(jì)90年代,對(duì)于一個(gè)技術(shù)的改進(jìn)可以很明顯地區(qū)分是硬件上的改進(jìn)(例如,對(duì)二極管、晶體管、開關(guān)等電路結(jié)構(gòu)的改進(jìn))還是軟件上的改進(jìn)(對(duì)于方法流程的改進(jìn))。然而,隨著技術(shù)的發(fā)展,當(dāng)今的很多方法流程的改進(jìn)已經(jīng)可以視為硬件電路結(jié)構(gòu)的直接改進(jìn)。設(shè)計(jì)人員幾乎都通過將改進(jìn)的方法流程編程到硬件電路中來得到相應(yīng)的硬件電路結(jié)構(gòu)。因此,不能說一個(gè)方法流程的改進(jìn)就不能用硬件實(shí)體模塊來實(shí)現(xiàn)。例如,可編程邏輯器件(Programmable Logic Device,PLD)(例如現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA))就是這樣一種集成電路,其邏輯功能由用戶對(duì)器件編程來確定。由設(shè)計(jì)人員自行編程來把一個(gè)數(shù)字系統(tǒng)“集成”在一片PLD上,而不需要請(qǐng)芯片制造廠商來設(shè)計(jì)和制作專用的集成電路芯片2。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logic compiler)”軟件來實(shí)現(xiàn),它與程序開發(fā)撰寫時(shí)所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語言來撰寫,此稱之為硬件描述語言(Hardware Description Language,HDL),而HDL也并非僅有一種,而是有許多種,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)與Verilog2。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只需要將方法流程用上述幾種硬件 描述語言稍作邏輯編程并編程到集成電路中,就可以很容易得到實(shí)現(xiàn)該邏輯方法流程的硬件電路。
控制器可以按任何適當(dāng)?shù)姆绞綄?shí)現(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲(chǔ)可由該(微)處理器執(zhí)行的計(jì)算機(jī)可讀程序代碼(例如軟件或固件)的計(jì)算機(jī)可讀介質(zhì)、邏輯門、開關(guān)、專用集成電路(Application Specific Integrated Circuit,ASIC)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存儲(chǔ)器控制器還可以被實(shí)現(xiàn)為存儲(chǔ)器的控制邏輯的一部分。
本領(lǐng)域技術(shù)人員也知道,除了以純計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器以外,完全可以通過將方法步驟進(jìn)行邏輯編程來使得控制器以邏輯門、開關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實(shí)現(xiàn)相同功能。因此這種控制器可以被認(rèn)為是一種硬件部件,而對(duì)其內(nèi)包括的用于實(shí)現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)?;蛘呱踔?,可以將用于實(shí)現(xiàn)各種功能的裝置視為既可以是實(shí)現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。
上述實(shí)施例闡明的系統(tǒng)、裝置、模塊或模塊,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來實(shí)現(xiàn)。
為了描述的方便,描述以上裝置時(shí)以功能分為各種模塊分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各模塊的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn)。基于這樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。該計(jì)算機(jī)軟件產(chǎn)品可以包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在內(nèi)存中,內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字 多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括短暫電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
本申請(qǐng)可用于眾多通用或?qū)S玫挠?jì)算機(jī)系統(tǒng)環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
雖然通過實(shí)施例描繪了本申請(qǐng),本領(lǐng)域普通技術(shù)人員知道,本申請(qǐng)有許多變形和變化而不脫離本申請(qǐng)的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請(qǐng)的精神。