度。
[0150]比如,本次測試的Web服務(wù)具有的業(yè)務(wù)功能與功能模板a對應(yīng)的業(yè)務(wù)功能屬于同一類型,則測試程序計算η組功能模板a對應(yīng)的目標(biāo)響應(yīng)數(shù)據(jù)包與測試的Web服務(wù)返回的測試響應(yīng)數(shù)據(jù)包之間的文本序列相似度。
[0151]其中,文本序列相似度的算法可以是simhash算法,也可以是editdistance算法等,本發(fā)明實施例并不對文本序列相似度的計算方法作出限定。
[0152]比如,測試程序?qū)δ繕?biāo)響應(yīng)數(shù)據(jù)包al、目標(biāo)響應(yīng)數(shù)據(jù)包a2、目標(biāo)響應(yīng)數(shù)據(jù)包a3、目標(biāo)響應(yīng)數(shù)據(jù)包a4、目標(biāo)響應(yīng)數(shù)據(jù)包a5使用simhash算法計算得到的文本相似度分別為0.6、0.9、0.8、0.4、0.3o
[0153]在步驟308中,根據(jù)η個文本序列相似度計算相似度分值。
[0154]在一種可能實現(xiàn)的方式中,測試程序?qū)⒏鱾€文本序列相似度相加,再除以目標(biāo)響應(yīng)數(shù)據(jù)包的數(shù)量來得到相似度分值。比如,測試程序?qū)⒛繕?biāo)響應(yīng)數(shù)據(jù)包al、目標(biāo)響應(yīng)數(shù)據(jù)包a2、目標(biāo)響應(yīng)數(shù)據(jù)包a3、目標(biāo)響應(yīng)數(shù)據(jù)包a4、目標(biāo)響應(yīng)數(shù)據(jù)包a5的文本相似度相加后除以目標(biāo)響應(yīng)數(shù)據(jù)包的數(shù)量5得到的相似度分值為(0.6+0.9+0.8+0.4+0.3)/5 = 0.6。
[0155]為了避免由于單個目標(biāo)響應(yīng)數(shù)據(jù)包的文本相似度過高或者過低影響相似度分值的精確性,在另一種可能實現(xiàn)的方式中,測試程序可以通過圖3D示出的步驟308a至步驟308b計算相似度分值。
[0156]在步驟308a中,從η個文本序列相似度中減去最高的文本序列相似度和最低的文本序列相似度,得到η-2個文本序列相似度,n ^ 3ο
[0157]測試程序?qū)Λ@取的各個文本序列相似度進(jìn)行檢測,確定數(shù)值最高的文本序列相似度和數(shù)值最低的文本序列相似度。
[0158]比如,測試程序檢測出5個文本序列相似度0.6、0.9、0.8、0.4、0.3中數(shù)值最高的文本序列相似度為0.9,數(shù)值最低的文本序列相似度為0.3。
[0159]測試程序?qū)?shù)值最高的文本序列相似度和數(shù)值最低的文本序列相似度從各個文本序列相似度中移除,得到文本序列相似度分別為0.6,0.8,0.4。
[0160]在步驟308b中,計算η-2個文本序列相似度的平均值,將平均值作為相似度分值。
[0161]比如,測試程序計算剩余的3個文本序列相似度0.6,0.8,0.4的平均值,的到的相似度分值為(0.6+0.8+0.4)/3 = 0.6。
[0162]在步驟309中,檢測相似度分值是否達(dá)到預(yù)設(shè)閾值。
[0163]預(yù)設(shè)閾值可以是開發(fā)人員根據(jù)Web服務(wù)的測試經(jīng)驗預(yù)設(shè)的數(shù)值。
[0164]測試程序可以檢測該相似度分值是否達(dá)到預(yù)設(shè)閾值。比如,預(yù)設(shè)閾值為0.8,相似度分值為0.6,則測試程序確定相似度分值未達(dá)到預(yù)設(shè)閾值。
[0165]在步驟310中,若達(dá)到預(yù)設(shè)閾值,則測試通過。
[0166]若根據(jù)本次測試的Web服務(wù)返回的測試響應(yīng)數(shù)據(jù)包與功能模板對應(yīng)的各個目標(biāo)響應(yīng)數(shù)據(jù)包計算得到的相似度分值達(dá)到預(yù)設(shè)閾值,則測試程序確定該web服務(wù)的服務(wù)功能與正常的Web服務(wù)器相同,本次測試通過。
[0167]在步驟311中,若未達(dá)到預(yù)設(shè)閾值,則測試未通過。
[0168]若根據(jù)本次測試的Web服務(wù)返回的測試響應(yīng)數(shù)據(jù)包與功能模板對應(yīng)的各個目標(biāo)響應(yīng)數(shù)據(jù)包計算得到的相似度分值未達(dá)到預(yù)設(shè)閾值,則測試程序確定該web服務(wù)的服務(wù)功能未達(dá)到正常的Web服務(wù)器的服務(wù)功能,本次測試未通過。
[0169]綜上所述,本發(fā)明實施例提供的自動測試方法,通過采集URL請求和響應(yīng)數(shù)據(jù)包,并從中篩選出目標(biāo)URL請求和目標(biāo)響應(yīng)數(shù)據(jù)包,將目標(biāo)URL請求發(fā)送至本次測試的Web服務(wù)來獲取測試響應(yīng)數(shù)據(jù)包,根據(jù)目標(biāo)響應(yīng)數(shù)據(jù)包文本與測試響應(yīng)數(shù)據(jù)包文本的相似度確定對Web服務(wù)的測試是否通過,解決了現(xiàn)有技術(shù)中的測試方法對測試人員的要求和依賴較高,測試效率較低的問題;達(dá)到了不需要構(gòu)造URL請求和人工分析響應(yīng)數(shù)據(jù)包,實現(xiàn)全自動的web服務(wù)測試,從而提高測試效率的效果。
[0170]另外,本發(fā)明提供的自動測試方法在獲取本次測試的Web服務(wù)反饋的測試響應(yīng)數(shù)據(jù)包后,只需要通過測試程序自動對測試響應(yīng)數(shù)據(jù)包的文本以及目標(biāo)響應(yīng)數(shù)據(jù)包的文本進(jìn)行相似度的計算來確定Web服務(wù)的測試是否通過,不需要真實理解測試響應(yīng)數(shù)據(jù)包以及目標(biāo)響應(yīng)數(shù)據(jù)包的架構(gòu)、參數(shù)等具體數(shù)據(jù),不需要解析出響應(yīng)數(shù)據(jù)包中的實際數(shù)據(jù)。僅僅需要將目標(biāo)響應(yīng)數(shù)據(jù)包和測試響應(yīng)數(shù)據(jù)包進(jìn)行數(shù)據(jù)比特流上的相似度計算即可,可以避免受到現(xiàn)有技術(shù)對Web服務(wù)進(jìn)行測試時,只能測試已知協(xié)議和已知數(shù)據(jù)格式的Web服務(wù)的限制,從而勝任對各種Web服務(wù)完全自動且進(jìn)行高效率的自動測試。
[0171]請參見圖4,其示出了本發(fā)明一個實施例中提供的自動測試裝置的結(jié)構(gòu)方框圖,該裝置包括:
[0172]采集模塊410,用于從Web服務(wù)器的運行日志文件中采集URL請求和響應(yīng)數(shù)據(jù)包,該URL請求和該響應(yīng)數(shù)據(jù)包——對應(yīng)。
[0173]篩選模塊420,用于通過預(yù)先訓(xùn)練的功能模板從該URL請求和該響應(yīng)數(shù)據(jù)包中篩選出目標(biāo)URL請求和目標(biāo)響應(yīng)數(shù)據(jù)包。
[0174]發(fā)送模塊430,用于將該目標(biāo)URL請求發(fā)送給本次測試的Web服務(wù),并獲取該Web服務(wù)反饋的測試響應(yīng)數(shù)據(jù)包,該本次測試的Web服務(wù)具有的業(yè)務(wù)功能與該功能模板對應(yīng)的業(yè)務(wù)功能屬于同一類型。
[0175]計算模塊440,用于計算該目標(biāo)響應(yīng)數(shù)據(jù)包和該測試響應(yīng)數(shù)據(jù)包的相似度,并根據(jù)該相似度輸出測試結(jié)果。
[0176]綜上所述,本發(fā)明實施例提供的自動測試裝置,通過采集URL請求和響應(yīng)數(shù)據(jù)包,并從中篩選出目標(biāo)URL請求和目標(biāo)響應(yīng)數(shù)據(jù)包,將目標(biāo)URL請求發(fā)送至本次測試的Web服務(wù)來獲取測試響應(yīng)數(shù)據(jù)包,根據(jù)目標(biāo)響應(yīng)數(shù)據(jù)包文本與測試響應(yīng)數(shù)據(jù)包文本的相似度確定對Web服務(wù)的測試是否通過,解決了現(xiàn)有技術(shù)中的測試方法對測試人員的要求和依賴較高,測試效率較低的問題;達(dá)到了不需要構(gòu)造URL請求和人工分析響應(yīng)數(shù)據(jù)包,實現(xiàn)全自動的web服務(wù)測試,從而提高測試效率的效果。
[0177]請參見圖5,其示出了本發(fā)明另一個實施例中提供的自動測試裝置的結(jié)構(gòu)方框圖,該裝置包括:
[0178]采集模塊410,用于從Web服務(wù)器的運行日志文件中采集URL請求和響應(yīng)數(shù)據(jù)包,該URL請求和該響應(yīng)數(shù)據(jù)包——對應(yīng)。
[0179]篩選模塊420,用于通過預(yù)先訓(xùn)練的功能模板從該URL請求和該響應(yīng)數(shù)據(jù)包中篩選出目標(biāo)URL請求和目標(biāo)響應(yīng)數(shù)據(jù)包。
[0180]發(fā)送模塊430,用于將該目標(biāo)URL請求發(fā)送給本次測試的Web服務(wù),并獲取該Web服務(wù)反饋的測試響應(yīng)數(shù)據(jù)包,該本次測試的Web服務(wù)具有的業(yè)務(wù)功能與該功能模板對應(yīng)的業(yè)務(wù)功能屬于同一類型。
[0181]計算模塊440,用于計算該目標(biāo)響應(yīng)數(shù)據(jù)包和該測試響應(yīng)數(shù)據(jù)包的相似度,并根據(jù)該相似度輸出測試結(jié)果。
[0182]可選的,該計算模塊440,包括:
[0183]相似度計算子模塊441,用于計算η組該目標(biāo)響應(yīng)數(shù)據(jù)包和該測試響應(yīng)數(shù)據(jù)包之間的文本序列相似度。
[0184]分值計算子模塊442,用于根據(jù)η個該文本序列相似度計算相似度分值。
[0185]閾值檢測子模塊443,用于檢測該相似度分值是否達(dá)到預(yù)設(shè)閾值。
[0186]第一處理子模塊444,用于當(dāng)達(dá)到該預(yù)設(shè)閾值時,測試通過。
[0187]第二處理子模塊445,用于當(dāng)未達(dá)到該預(yù)設(shè)閾值時,測試未通過。
[0188]可選的,該分值計算子模塊442,包括:
[0189]第一計算單元442a,用于從η個該文本序列相似度中減去最高的文本序列相似度和最低的文本序列相似度,得到η-2個該文本序列相似度,n ^ 3ο
[0190]第二計算單元442b,用于計算η-2個該文本序列相似度的平均值,將該平均值作為該相似度分值。
[0191]可選的,該裝置,還包括:
[0192]聚類模塊450,用于將歷史時間段內(nèi)的m個該URL請求進(jìn)行相似聚類。
[0193]分析模塊460,用于對于屬于同一類的該URL請求,分析該URL請求中的用戶參數(shù)和系統(tǒng)參數(shù),該用戶參數(shù)是根據(jù)用戶的不同而改變參數(shù)取值的參數(shù),該系統(tǒng)參數(shù)是根據(jù)功能的不同而改變參數(shù)取值的參數(shù)。
[0194]生成模塊470,用于將刪除該用戶參數(shù)的取值后的該URL請求,按照該系統(tǒng)參數(shù)的取值類型生成為至少一個功能模板,每個功能模板對應(yīng)一套該系統(tǒng)參數(shù)的取值。
[0195]可選的,該分析模塊460,包括:
[0196]劃分子模塊461,用于對于屬于同一類的該URL請求,根據(jù)分隔符將該URL請求劃分為若干個字符片段。
[0197]過濾子模塊462,用于將每個該URL請求中都具有的相同字符片段進(jìn)行過濾,得到相異字符片段,每個相異字符片段包括:參數(shù)名和參數(shù)取值。
[0198]統(tǒng)計子模塊463,用于對于每種參數(shù)名,統(tǒng)計該參數(shù)名對應(yīng)的各種參數(shù)取值和每種參數(shù)取值的出現(xiàn)次數(shù)。
[0199]命名子模