在Web服務(wù)的功能測試中提供上下文的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及web服務(wù)功能測試的領(lǐng)域。特別地,本發(fā)明涉及在Web服務(wù)的功能測試中提供上下文。
【背景技術(shù)】
[0002]Web服務(wù)是網(wǎng)站的重要基石,為Web應(yīng)用以及其他Web服務(wù)提供在線功能。因此,Web服務(wù)已經(jīng)成為包括安全測試、typestate檢查等等在內(nèi)的功能測試的重要課題。
[0003]Web服務(wù)測試時的一個重要挑戰(zhàn)是確保測試載荷達到Web服務(wù)的業(yè)務(wù)邏輯。否貝1J,如果載荷是無效的,那么Web方法通常報告SOAP (簡單對象訪問協(xié)議)故障,而提交(submitting)載荷則產(chǎn)生不了多少增益。
[0004]Web方法拒絕一個輸入的最普遍的原因之一是,該方法在其適當?shù)纳舷挛闹獗徽{(diào)用。例如,要讓“DeleteCustomer”方法處理其輸入數(shù)據(jù),就必須在調(diào)用相應(yīng)的“ CreateCustomer ”之后再調(diào)用該方法。
[0005]現(xiàn)有的Web服務(wù)測試工具不支持這個上下文問題。用于確定Web方法的調(diào)用順序的策略大多是任意的,例如,順序地調(diào)用Web服務(wù)的WSDL(Web服務(wù)描述語言)文件中的所有Web方法。
[0006]這導致很多情況下測試錯過重要的問題(例如,關(guān)鍵的安全漏洞),僅僅就是因為在先決條件沒有滿足的情況下就調(diào)用方法,而導致輸入數(shù)據(jù)直接被拒絕。
[0007]因此,現(xiàn)有技術(shù)中需要解決上述問題。
【發(fā)明內(nèi)容】
[0008]按照本發(fā)明的第一方面,提供一種用于在web服務(wù)的功能測試中提供上下文的方法,包含:利用web方法名稱的語義分析把它們劃歸入定義web上的交互流的預定義類別;根據(jù)web方法的類別,以為測試該web方法提供合適的上下文的方法序列的形式為該web方法創(chuàng)建合適的上下文。
[0009]所述定義web上的交互流的預定義類別是“創(chuàng)建”(create)、“檢索”(retrieve)、“更新”(update)或“刪除”(delete)操作的類別。
[0010]所述利用web方法名稱的語義分析把它們劃歸入定義web上的交互流的預定義類別包含:接收具有多個方法的文件;按照方法的后綴將這些方法分組;語義分析給定后綴組中的每個方法的前綴,以把前綴歸類于定義web上的交互流的預定義類別的其中之一。[0011 ] 所述按照方法的后綴將這些方法分組可以優(yōu)化每個方法的后綴之間的相似度最大的組的最小數(shù)量。
[0012]該方法可包含:為每個前綴的歸類確定一置信度計分;和通過去除具有低置信度計分前綴的方法的類別,過濾低置信度計分。
[0013]該方法可進一步包含:對輸入方法進行迭代,用前綴的類別映射到一個方法序列。該方法序列可以是同一后綴組中的其它方法的序列。
[0014]如果某方法的類別是“刪除”類,該方法可包含建立形式為創(chuàng)建-刪除、創(chuàng)建-更新-刪除、創(chuàng)建-檢索-刪除、創(chuàng)建-更新-檢索-刪除和創(chuàng)建-檢索-更新-刪除的序列,其中,創(chuàng)建、更新、檢索方法用在相同后綴組中的以這些類別分類的方法填充。
[0015]如果某方法的類別是“更新”類,該方法可包含建立形式為創(chuàng)建-更新、創(chuàng)建-檢索-更新的序列,其中,創(chuàng)建、檢索方法用在相同后綴組中的以這些類別分類的方法填充。
[0016]如果某方法的類別是“檢索”類,該方法可包含建立形式為創(chuàng)建-檢索、創(chuàng)建-更新-檢索的序列,其中,創(chuàng)建、更新方法用在相同后綴組中的以這些類別分類的方法填充。
[0017]如果某方法的類別是“創(chuàng)建”類,則可以不建立序列。
[0018]如果某方法沒有類別,該方法可包含建立用在相同后綴組中的類別分類的方法填充的方法的隨機序列。
[0019]按照本發(fā)明的第二方面,提供一種用于在web服務(wù)的功能測試中提供上下文的系統(tǒng),包含:方法上下文組件,用于利用web方法名稱的語義分析把它們劃歸入定義web上的交互流的預定義類別,以及根據(jù)web方法的類別,以為測試該web方法提供合適的上下文的方法序列的形式為該web方法創(chuàng)建合適的上下文。
[0020]所述定義web上的交互流的預定義類別可以是“創(chuàng)建”、“檢索”、“更新”或“刪除”操作的類別。
[0021]所述方法上下文組件可包含:文件輸入組件,用于接收具有多個方法的文件;后綴分組組件,用于按照方法的后綴將這些方法分組;前綴分類組件,用于語義分析給定后綴組中的每個方法的前綴,以把前綴歸類于定義web上的交互流的預定義類別的其中之一。
[0022]所述后綴分組組件可按照方法的后綴將這些方法分組,優(yōu)化每個方法的后綴之間的相似度最大的組的最小數(shù)量。
[0023]所述方法上下文組件包含:前綴置信度計分組件,用于為每個前綴的歸類確定一置信度計分;和過濾組件,用于通過去除具有低置信度計分前綴的方法的類別,過濾低置信度計分。
[0024]該系統(tǒng)可包含方法映射組件,用于在輸入方法上進行迭代,用前綴的類別映射到一個方法序列。
[0025]該方法序列可以是同一后綴組中的其它方法的序列。
[0026]按照本發(fā)明的第三方面,提供一種用于在web服務(wù)的功能測試中提供上下文的計算機程序產(chǎn)品,該計算機程序產(chǎn)品包含:處理電路可讀的計算機可讀存儲介質(zhì),其存儲有由處理電路執(zhí)行以執(zhí)行按照本發(fā)明的第一方面的方法的指令。
[0027]按照本發(fā)明的第四方面,提供一種計算機程序,存儲在計算機可讀介質(zhì)上并可裝入數(shù)字計算機的內(nèi)存,包含當所述程序在計算機上運行時執(zhí)行按照本發(fā)明的第一方面的方法的軟件代碼部分。
[0028]按照本發(fā)明的第五方面,提供一種實質(zhì)上如參照附圖所述的方法。
[0029]按照本發(fā)明的第六方面,提供一種實質(zhì)上如參照附圖所述的系統(tǒng)。
[0030]本發(fā)明的所述各方面具有通過提供web方法的上下文而提供更有效的web服務(wù)的優(yōu)點。
【附圖說明】
[0031]在說明書結(jié)尾部分特別地指出并清楚地以權(quán)利要求的形式提出被視為本發(fā)明的主題。本發(fā)明的組織和操作方法以及本發(fā)明的目的、特點和優(yōu)點,可以通過閱讀參照附圖以下的詳細說明而得到最好的理解。
[0032]現(xiàn)在將僅通過舉例,參照以下附圖來描述本發(fā)明的優(yōu)選實施方式,附圖中:
[0033]圖1是按照本發(fā)明的方法的示例性實施例的流程圖;
[0034]圖2是按照本發(fā)明的方法的一個方面的示例性實施例的流程圖;
[0035]圖3A和3B表示按照本發(fā)明的方法的實施例的示意圖;
[0036]圖4是按照本發(fā)明的系統(tǒng)的示例性實施例的框圖;和
[0037]圖5是在其中可以實現(xiàn)本發(fā)明的計算機系統(tǒng)的實施例的框圖。
【具體實施方式】
[0038]應(yīng)當明白,為了說明的簡要和清楚,圖中所示的元件未必是按比例繪制的。例如,為了清楚,可能夸大了有些元件相對于其它元件的尺寸。此外,在適當?shù)那闆r下,附圖標記在附圖中有所重復,以指示對應(yīng)的或類似的特征。
[0039]在以下的詳細說明中,給出了眾多的具體細節(jié),以便于徹底地理解本發(fā)明。然而所屬技術(shù)領(lǐng)域的樹林人員應(yīng)當明白,本發(fā)明可以脫離這些具體細節(jié)而實現(xiàn)。在其它情況中,眾所周知的方法、過程和組件未予詳細說明,以便突出本發(fā)明。
[0040]本發(fā)明提供的方法和系統(tǒng)所要解決的問題,是為調(diào)用web方法創(chuàng)建適當?shù)纳舷挛?,使得主體方法的測試始于使得能夠訪問該方法控制的業(yè)務(wù)邏輯的可允許上下文。上下文在測試目標之前以方法調(diào)用的形式提供。
[0041]根據(jù)對方法名的語義分析,常常有可能把它們歸類于CRUD類別——Create (創(chuàng)建)、Retrieve(檢索)、Update(更新)和Delete (刪除)--它們是定義網(wǎng)絡(luò)中大多數(shù)交互流(interact1n flows)的語義類別。
[0042]更形式地,提供一種用于上下文問題的方法,其輸入一個WSDL文件,為WSDL文件中的每個方法M輸出一個在M結(jié)尾的序列的集合,其中每個序列包括用于測試M的適當?shù)纳舷挛?。例如,“DeleteCustomer” 被映射({[CreateCustomer, UpdateCustomer, DeleteCustomer], [CreateCustomer, DeleteCustomer],…})。
[0043]參看圖1,流程圖100表示所述方法的示例性實施例。
[0044]可以接收101 —個集中web服務(wù)方法的定義的輸入文件,例如WSDL文件W。對于WSDL文件W中的所有的web方法M,可以找到10