本申請涉及軟件測試技術(shù)領(lǐng)域,尤其是涉及一種系統(tǒng)接口測試方法及裝置。
背景技術(shù):
系統(tǒng)接口測試主要用于檢測系統(tǒng)與系統(tǒng)外部之間以及系統(tǒng)內(nèi)部各個子系統(tǒng)之間的交互點(diǎn)。系統(tǒng)接口測試的重點(diǎn)是要檢查數(shù)據(jù)的交換,傳遞和控制管理過程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。
目前現(xiàn)有的系統(tǒng)接口測試可通過攔截器實(shí)現(xiàn)。而攔截器一般是在被調(diào)用的目標(biāo)方法執(zhí)行前或執(zhí)行后去執(zhí)行預(yù)定義的行為,比如選擇繼續(xù)執(zhí)行連接點(diǎn),或通過返回它們自己的返回值或拋出異常來短路執(zhí)行。一般的,攔截器返回的返回值就是被調(diào)用的目標(biāo)方法返回的返回值,而被調(diào)用的目標(biāo)方法的返回值一般是預(yù)設(shè)好的一個定值。因此,現(xiàn)有的系統(tǒng)接口測試方法的可實(shí)現(xiàn)的測試場景比較單一,其無法滿足日益復(fù)雜的系統(tǒng)接口測試需要。
技術(shù)實(shí)現(xiàn)要素:
本申請實(shí)施例的目的在于提供一種系統(tǒng)接口測試方法及裝置,以便于更為靈活的獲取返回對象,從而實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)場景下的系統(tǒng)接口測試。
為達(dá)到上述目的,本申請實(shí)施例提供了一種系統(tǒng)接口測試方法,包括以下步驟:
獲取模擬mock對象發(fā)起的業(yè)務(wù)請求;
在獲取到目標(biāo)調(diào)用對象針對所述業(yè)務(wù)請求返回的返回對象后,根據(jù)預(yù)設(shè)的處理邏輯修改所述返回對象,獲得預(yù)期的返回對象;
向所述mock對象返回所述預(yù)期的返回對象。
另一方面,本申請實(shí)施例還提供了一種系統(tǒng)接口測試裝置,包括:
請求獲取模塊,用于獲取模擬mock對象發(fā)起的業(yè)務(wù)請求;
返回處理模塊,用于在獲取到目標(biāo)調(diào)用對象針對所述業(yè)務(wù)請求返回的返回對象 后,根據(jù)預(yù)設(shè)的處理邏輯修改所述返回對象,獲得預(yù)期的返回對象;
返回發(fā)送模塊,用于向所述mock對象返回所述預(yù)期的返回對象。
本申請實(shí)施例可在獲取到目標(biāo)調(diào)用對象針對業(yè)務(wù)請求返回的返回對象后,根據(jù)預(yù)設(shè)的處理邏輯修改返回對象,獲得預(yù)期的返回對象,從而實(shí)現(xiàn)了可以靈活的根據(jù)實(shí)際的結(jié)果或者實(shí)際的請求參數(shù)來改返回對象,滿足了在系統(tǒng)接口測試自動化中構(gòu)造各種復(fù)雜的業(yè)務(wù)場景的要求。
附圖說明
此處所說明的附圖用來提供對本申請實(shí)施例的進(jìn)一步理解,構(gòu)成本申請實(shí)施例的一部分,并不構(gòu)成對本申請實(shí)施例的限定。在附圖中:
圖1為本申請一實(shí)施例的系統(tǒng)接口測試方法的流程圖;
圖2為本申請一實(shí)施例的系統(tǒng)接口測試裝置的結(jié)構(gòu)框圖;
圖3為本申請另一實(shí)施例的系統(tǒng)接口測試方法中包含多個返回處理模塊模式下的處理流程示意圖。
具體實(shí)施方式
為使本申請實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例和附圖,對本申請實(shí)施例做進(jìn)一步詳細(xì)說明。在此,本申請實(shí)施例的示意性實(shí)施例及其說明用于解釋本申請實(shí)施例,但并不作為對本申請實(shí)施例的限定。
下面結(jié)合附圖,對本申請實(shí)施例的具體實(shí)施方式作進(jìn)一步的詳細(xì)說明。
參考圖1所示,本申請實(shí)施例的系統(tǒng)接口測試方法,包括以下步驟:
s101,獲取mock對象發(fā)起的業(yè)務(wù)請求。
其中,mock對象是預(yù)先配置好的,其配置例如可為如下所示:
addmockwithcond(stringmockid,objectexpect,stringcond,stringiocconfig)
mockid–標(biāo)識攔截的類,即目標(biāo)調(diào)用對象
expect–構(gòu)建的期望的返回對象
cond–按照條件進(jìn)行返回對象的處理
s102,在獲取到目標(biāo)調(diào)用對象針對所述業(yè)務(wù)請求返回的返回對象后,根據(jù)預(yù)設(shè)的處理邏輯修改所述返回對象,獲得預(yù)期的返回對象。
在本申請的一實(shí)施例中,當(dāng)所述處理邏輯有多種時,這些處理邏輯可統(tǒng)一由一個返回處理模塊來完成。
在本申請的另一實(shí)施例中,如圖3所示,當(dāng)所述處理邏輯有多種時,每種處理邏輯可由一一對應(yīng)的返回處理模塊完成(當(dāng)系統(tǒng)啟動時,這些返回處理模塊會被初始化并加載到內(nèi)存中),并且所述mock對象發(fā)起的業(yè)務(wù)請求預(yù)先與一個返回處理模塊綁定。例如在mock配置時可以增加如下配置:
iocconfig–返回處理模塊的標(biāo)識名
該標(biāo)識名即表明了本次調(diào)用目標(biāo)調(diào)用對象所需要的綁定的返回處理模塊,通常mock對象發(fā)送的業(yè)務(wù)請求中會攜帶有該返回處理模塊的標(biāo)識名,當(dāng)有該目標(biāo)調(diào)用對象的業(yè)務(wù)請求被攔截時,就會根據(jù)返回處理模塊的標(biāo)識名調(diào)用相應(yīng)的返回處理模塊(即目標(biāo)調(diào)用對象針對業(yè)務(wù)請求返回的返回對象被攔截后,會根據(jù)業(yè)務(wù)請求中攜帶的標(biāo)識選擇返回處理模塊)。一般的,綁定僅對本次調(diào)用有效,在下次調(diào)用時可以根據(jù)需要預(yù)先綁定任何其他的返回處理模塊,以實(shí)現(xiàn)另一些mock場景下的測試。
由于一個處理邏輯一般對應(yīng)一個測試場景,這樣以來,不僅各測試場景的職能劃分比較清晰,參數(shù)層次簡單易懂,具有較好的解耦合性;而且還方便了以后期擴(kuò)展其他的測試場景,而不需要改變原有的返回處理模塊,只需增加新的返回處理模塊就可以了。
在本申請的一實(shí)施例中,所述根據(jù)預(yù)設(shè)的處理邏輯修改所述返回對象可以包括:
根據(jù)所述業(yè)務(wù)請求中的特定輸入?yún)?shù)修改所述返回對象中的特定輸出參數(shù)。
舉例來說,某目標(biāo)調(diào)用對象每次執(zhí)行后生成的id(identification)是隨機(jī)的,而目標(biāo)調(diào)用對象一般是測試用例中的某個需要測試的部分,但在整個測試用例中,由于通常上下文之間是有關(guān)聯(lián)關(guān)系的,這時就需要用同一個id貫穿整個測試用例,因此,調(diào)用完該目標(biāo)調(diào)用對象后就需要根據(jù)預(yù)定義的條件屬性修改該目標(biāo)調(diào)用對象返回的返回對象中的id。
比如cond="return_param1=request_param1,return_param2=request_param1"表示將入?yún)⒄埱笾袇?shù)名為"request_param1"的參數(shù)值設(shè)置給返回對象中的參數(shù):return_param1,…
當(dāng)然,根據(jù)具體情況和需要return_param1還可以為復(fù)雜對象取參模式,從而可以實(shí)現(xiàn)從任何復(fù)雜的大對象取到任何參數(shù)。比如:
從子對象中取參數(shù):param.id,param.name…
從數(shù)組中取參數(shù):param[1].id
從list中取參數(shù):
基礎(chǔ)對象:param_list[1]
復(fù)雜對象:param_list[1].id
從map中取參數(shù):
基礎(chǔ)對象:param_map(key)
復(fù)雜對象:param_map(key).id
這樣以來,最終實(shí)現(xiàn)了基于輸入?yún)?shù)調(diào)整返回對象,從而獲得期望的返回對象的目的。
在本申請的另一實(shí)施例中,所述根據(jù)預(yù)設(shè)的處理邏輯修改所述返回對象還可以包括:
根據(jù)預(yù)定義的條件屬性修改返回對象中的特定輸出參數(shù)。在獲取到業(yè)務(wù)請求后,目標(biāo)調(diào)用對象按照正常的流程進(jìn)行業(yè)務(wù)處理,待獲取到目標(biāo)調(diào)用對象返回的返回對象后,根據(jù)預(yù)定義的條件屬性修改該返回對象中的特定輸出參數(shù),使得最終返回的是期望的返回對象。比如cond="return_param1=xxx,return_param2=y(tǒng)yy",則表示將正常業(yè)務(wù)返回的結(jié)果對象中名為"return_param1"的輸出參數(shù)值修改為xxx;并將正常業(yè)務(wù)返回的結(jié)果對象中名為"return_param2"的輸出參數(shù)值修改為yyy。
舉例來說,某目標(biāo)調(diào)用對象執(zhí)行完后返回的某輸出參數(shù)為true,如果期望該輸出參數(shù)的返回是flase,則需要將true替換為flase,以保證后續(xù)整個測試用例往下執(zhí)行是按照期望進(jìn)行的。
在本申請的另一實(shí)施例中,所述根據(jù)預(yù)設(shè)的處理邏輯修改所述返回對象還可以包括:
當(dāng)所述mock對象需多次調(diào)用同一個目標(biāo)調(diào)用對象并預(yù)先配置有多個期望的返回對象時,根據(jù)業(yè)務(wù)請求中攜帶的特定指示參數(shù)決定選擇所述多個期望的返回對象中的哪個作為本次調(diào)用后所期望的返回對象。
比如cond="param=trans_type,withdraw=1,dback=2"表示判斷請求中的特定指示參數(shù)trans_type,當(dāng)其值為'withdraw'時返回第一個對象,當(dāng)其值為'dback'時返回第二個對象。
舉例來說,一次性對某目標(biāo)調(diào)用對象設(shè)置a,b,c三個返回對象,某測試用例可能會3次調(diào)用這個目標(biāo)調(diào)用對象,按照期望,預(yù)想第一次調(diào)用目標(biāo)調(diào)用對象后返回的返回對象為c,第二次調(diào)用目標(biāo)調(diào)用對象后返回的返回對象為a,第三次調(diào)用目標(biāo)調(diào)用對象后返回的返回對象為b,因此,可以根據(jù)預(yù)先定義的條件中的某特定指示參數(shù)來決定每次具體應(yīng)返回哪個返回對象。
s103,向所述mock對象返回所述預(yù)期的返回對象。
雖然上文各個方法實(shí)施例描述的過程流程包括以特定順序出現(xiàn)的多個操作,但是,應(yīng)當(dāng)清楚了解,這些過程可以包括更多或更少的操作,這些操作可以根據(jù)需要順序執(zhí)行或并行執(zhí)行(例如使用并行處理器或多線程環(huán)境)。
本申請實(shí)施例可在獲取到目標(biāo)調(diào)用對象針對業(yè)務(wù)請求返回的返回對象后,根據(jù)預(yù)設(shè)的處理邏輯修改返回對象,獲得預(yù)期的返回對象,從而實(shí)現(xiàn)了可以靈活的根據(jù)實(shí)際的結(jié)果或者實(shí)際的請求參數(shù)來改返回對象,滿足了在系統(tǒng)接口測試自動化中構(gòu)造各種復(fù)雜的業(yè)務(wù)場景的要求。并且,本申請實(shí)施例還可以通過不同的返回處理模塊來處理不同的邏輯處理場景,因此,后續(xù)如需要進(jìn)行測試場景擴(kuò)展時,添加新返回處理模塊即可,而不需要對原有的返回處理模塊進(jìn)行改動,非常方便。
參考圖2所示,與上述方法實(shí)施例對應(yīng),本申請的系統(tǒng)接口測試裝置包括:
請求獲取模塊21,用于獲取模擬mock對象發(fā)起的業(yè)務(wù)請求。其中,mock對象是預(yù)先設(shè)置好的,例如:
addmockwithcond(stringmockid,objectexpect,stringcond,stringiocconfig)
mockid–標(biāo)識攔截的類,即目標(biāo)調(diào)用對象
expect–構(gòu)建的期望的返回對象
cond–按照條件進(jìn)行返回對象的處理
返回處理模塊22,用于在獲取到目標(biāo)調(diào)用對象針對所述業(yè)務(wù)請求返回的返回對象后,根據(jù)預(yù)設(shè)的處理邏輯修改所述返回對象,獲得預(yù)期的返回對象。
在本申請的一實(shí)施例中,當(dāng)所述處理邏輯有多種時,這些處理邏輯可統(tǒng)一由一個返回處理模塊來完成。
在本申請的另一實(shí)施例中,當(dāng)所述處理邏輯有多種時,每種處理邏輯可由一一對應(yīng)的返回處理模塊完成(當(dāng)系統(tǒng)啟動時,這些返回處理模塊會被初始化并加載到內(nèi)存中),并且所述mock對象發(fā)起的業(yè)務(wù)請求預(yù)先與一個返回處理模塊綁定。例如在mock 配置時可以增加如下配置:
iocconfig–返回處理模塊的標(biāo)識名
該標(biāo)識名即表明了本次調(diào)用目標(biāo)調(diào)用對象所需要的綁定的返回處理模塊,通常mock對象發(fā)送的業(yè)務(wù)請求中會攜帶有該返回處理模塊的標(biāo)識名,當(dāng)有該目標(biāo)調(diào)用對象的業(yè)務(wù)請求被攔截時,就會根據(jù)返回處理模塊的標(biāo)識名調(diào)用相應(yīng)的返回處理模塊(即目標(biāo)調(diào)用對象針對業(yè)務(wù)請求返回的返回對象被攔截后,會根據(jù)業(yè)務(wù)請求中攜帶的標(biāo)識選擇返回處理模塊)。一般的,綁定僅對本次調(diào)用有效,在下次調(diào)用時可以根據(jù)需要預(yù)先綁定任何其他的返回處理模塊,以實(shí)現(xiàn)另一些mock場景下的測試。
由于一個處理邏輯一般對應(yīng)一個測試場景,這樣以來,不僅各測試場景的職能劃分比較清晰,參數(shù)層次簡單易懂,具有較好的解耦合性;而且還方便了以后期擴(kuò)展其他的測試場景,而不需要改變原有的返回處理模塊,只需增加新的返回處理模塊就可以了。
在本申請的一實(shí)施例中,所述根據(jù)預(yù)設(shè)的處理邏輯修改所述返回對象可以包括:
根據(jù)所述業(yè)務(wù)請求中的特定輸入?yún)?shù)修改所述返回對象中的特定輸出參數(shù)。舉例來說,某目標(biāo)調(diào)用對象每次執(zhí)行后生成的id(identification)是隨機(jī)的,而目標(biāo)調(diào)用對象一般是測試用例中的某個需要測試的部分,但在整個測試用例中,由于通常上下文之間是有關(guān)聯(lián)關(guān)系的,這時就需要用同一個id貫穿整個測試用例,因此,調(diào)用完該目標(biāo)調(diào)用對象后就需要根據(jù)預(yù)定義的條件屬性修改該目標(biāo)調(diào)用對象返回的返回對象中的id。
比如cond="return_param1=request_param1,return_param2=request_param1"表示將入?yún)⒄埱笾袇?shù)名為"request_param1"的參數(shù)值設(shè)置給返回對象中的參數(shù):return_param1,…
當(dāng)然,根據(jù)具體情況和需要return_param1還可以為復(fù)雜對象取參模式,從而可以實(shí)現(xiàn)從任何復(fù)雜的大對象取到任何參數(shù)。比如:
從子對象中取參數(shù):param.id,param.name…
從數(shù)組中取參數(shù):param[1].id
從list中取參數(shù):
基礎(chǔ)對象:param_list[1]
復(fù)雜對象:param_list[1].id
從map中取參數(shù):
基礎(chǔ)對象:param_map(key)
復(fù)雜對象:param_map(key).id
這樣以來,最終實(shí)現(xiàn)了基于輸入?yún)?shù)調(diào)整返回對象,從而獲得期望的返回對象的目的。
在本申請的另一實(shí)施例中,所述根據(jù)預(yù)設(shè)的處理邏輯修改所述返回對象還可以包括:
根據(jù)預(yù)定義的條件屬性修改返回對象中的特定輸出參數(shù)。在獲取到業(yè)務(wù)請求后,目標(biāo)調(diào)用對象按照正常的流程進(jìn)行業(yè)務(wù)處理,待獲取到目標(biāo)調(diào)用對象返回的返回對象后,根據(jù)預(yù)定義的條件屬性修改該返回對象中的特定輸出參數(shù),使得最終返回的是期望的返回對象。比如cond="return_param1=xxx,return_param2=y(tǒng)yy",則表示將正常業(yè)務(wù)返回的結(jié)果對象中名為"return_param1"的輸出參數(shù)值修改為xxx;并將正常業(yè)務(wù)返回的結(jié)果對象中名為"return_param2"的輸出參數(shù)值修改為yyy。
舉例來說,某目標(biāo)調(diào)用對象執(zhí)行完后返回的某輸出參數(shù)為true,如果期望該輸出參數(shù)的返回是flase,則需要將true替換為flase,以保證后續(xù)整個測試用例往下執(zhí)行是按照期望進(jìn)行的。
在本申請的另一實(shí)施例中,所述根據(jù)預(yù)設(shè)的處理邏輯修改所述返回對象還可以包括:
當(dāng)所述mock對象需多次調(diào)用同一個目標(biāo)調(diào)用對象并預(yù)先配置有多個期望的返回對象時,根據(jù)業(yè)務(wù)請求中攜帶的特定指示參數(shù)決定選擇所述多個期望的返回對象中的哪個作為本次調(diào)用后所期望的返回對象。
比如cond="param=trans_type,withdraw=1,dback=2"表示判斷請求中的特定指示參數(shù)trans_type,當(dāng)其值為'withdraw'時返回第一個對象,當(dāng)其值為'dback'時返回第二個對象。
舉例來說,一次性對某目標(biāo)調(diào)用對象設(shè)置a,b,c三個返回對象,某測試用例可能會3次調(diào)用這個目標(biāo)調(diào)用對象,按照期望,預(yù)想第一次調(diào)用目標(biāo)調(diào)用對象后返回的返回對象為c,第二次調(diào)用目標(biāo)調(diào)用對象后返回的返回對象為a,第三次調(diào)用目標(biāo)調(diào)用對象后返回的返回對象為b,因此,可以根據(jù)預(yù)先定義的條件中的某特定指示參數(shù)來決定每次具體應(yīng)返回哪個返回對象。
返回發(fā)送模塊23,用于向所述mock對象返回所述預(yù)期的返回對象。
本申請實(shí)施例可在獲取到目標(biāo)調(diào)用對象針對業(yè)務(wù)請求返回的返回對象后,根據(jù)預(yù)設(shè)的處理邏輯修改返回對象,獲得預(yù)期的返回對象,從而實(shí)現(xiàn)了可以靈活的根據(jù)實(shí)際的結(jié)果或者實(shí)際的請求參數(shù)來改返回對象,滿足了在系統(tǒng)接口測試自動化中構(gòu)造各種復(fù)雜的業(yè)務(wù)場景的要求。并且,本申請實(shí)施例還可以通過不同的返回處理模塊來處理不同的邏輯處理場景,因此,后續(xù)如需要進(jìn)行測試場景擴(kuò)展時,只需添加新返回處理模塊即可,而不需要對原有的返回處理模塊進(jìn)行改動,非常方便。
上述實(shí)施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來實(shí)現(xiàn)。
為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請時可以把各單元的功能在同一個或多個軟件和/或硬件中實(shí)現(xiàn)。
本說明書中的各個實(shí)施例均采用遞進(jìn)的方式描述,各個實(shí)施例之間相同相似的部分互相參見即可,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
在20世紀(jì)90年代,對于一個技術(shù)的改進(jìn)可以很明顯地區(qū)分是硬件上的改進(jìn)(例如,對二極管、晶體管、開關(guān)等電路結(jié)構(gòu)的改進(jìn))還是軟件上的改進(jìn)(對于方法流程的改進(jìn))。然而,隨著技術(shù)的發(fā)展,當(dāng)今的很多方法流程的改進(jìn)已經(jīng)可以視為硬件電路結(jié)構(gòu)的直接改進(jìn)。設(shè)計(jì)人員幾乎都通過將改進(jìn)的方法流程編程到硬件電路中來得到相應(yīng)的硬件電路結(jié)構(gòu)。因此,不能說一個方法流程的改進(jìn)就不能用硬件實(shí)體模塊來實(shí)現(xiàn)。例如,可編程邏輯器件(programmablelogicdevice,pld)(例如現(xiàn)場可編程門陣列(fieldprogrammablegatearray,fpga))就是這樣一種集成電路,其邏輯功能由用戶對器件編程來確定。由設(shè)計(jì)人員自行編程來把一個數(shù)字系統(tǒng)“集成”在一片pld上,而不需要請芯片制造廠商來設(shè)計(jì)和制作專用的集成電路芯片2。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logiccompiler)”軟件來實(shí)現(xiàn),它與程序開發(fā)撰寫時所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語言來撰寫,此稱之為硬件描述語言(hardwaredescriptionlanguage,hdl),而hdl也并非僅有一種,而是有許多種,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescription language)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)與verilog2。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只需要將方法流程用上述幾種硬件描述語言稍作邏輯編程并編程到集成電路中,就可以很容易得到實(shí)現(xiàn)該邏輯方法流程的硬件電路。
控制器可以按任何適當(dāng)?shù)姆绞綄?shí)現(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲可由該(微)處理器執(zhí)行的計(jì)算機(jī)可讀程序代碼(例如軟件或固件)的計(jì)算機(jī)可讀介質(zhì)、邏輯門、開關(guān)、專用集成電路(applicationspecificintegratedcircuit,asic)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存儲器控制器還可以被實(shí)現(xiàn)為存儲器的控制邏輯的一部分。
本領(lǐng)域技術(shù)人員也知道,除了以純計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器以外,完全可以通過將方法步驟進(jìn)行邏輯編程來使得控制器以邏輯門、開關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實(shí)現(xiàn)相同功能。因此這種控制器可以被認(rèn)為是一種硬件部件,而對其內(nèi)包括的用于實(shí)現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)?;蛘呱踔?,可以將用于實(shí)現(xiàn)各種功能的裝置視為既可以是實(shí)現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。
通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn)?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實(shí)施例或者實(shí)施例的某些部分所述的方法。
本申請可用于眾多通用或?qū)S玫挠?jì)算機(jī)系統(tǒng)環(huán)境或配置中。例如:個人計(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)境等等。
本申請可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序 模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請,在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲介質(zhì)中。
雖然通過實(shí)施例描繪了本申請,本領(lǐng)域普通技術(shù)人員知道,本申請有許多變形和變化而不脫離本申請的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請的精神。