版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章Web應(yīng)用的測試0第5章Web應(yīng)用的測試0主要內(nèi)容5.1Web應(yīng)用軟件體系結(jié)構(gòu)5.2技術(shù)對Web應(yīng)用測試的影響5.3Web應(yīng)用軟件的測試類型5.4Web應(yīng)用軟件的測試模型5.5Web應(yīng)用的單元、集成測試5.6Web應(yīng)用的統(tǒng)計測試5.7Web應(yīng)用的性能測試5.8Web應(yīng)用測試工具1主要內(nèi)容5.1Web應(yīng)用軟件體系結(jié)構(gòu)15.1Web應(yīng)用軟件體系結(jié)構(gòu)Web應(yīng)用軟件一般采用客戶機/服務(wù)器/數(shù)據(jù)庫服務(wù)器的計算模式,在這種模式下,客戶機層用于人機交互與應(yīng)用的表示,Web服務(wù)器層用于事務(wù)處理,數(shù)據(jù)庫服務(wù)器層用于應(yīng)用數(shù)據(jù)的存取和管理Web應(yīng)用軟件的新特點使得傳統(tǒng)的測試技術(shù)無法勝任,因此需要一套獨特的測試體系來支持Web應(yīng)用軟件的測試。25.1Web應(yīng)用軟件體系結(jié)構(gòu)Web應(yīng)用軟件一般采用客戶機/5.2技術(shù)對Web應(yīng)用測試的影響HTML/XML和JSP(ASP)技術(shù)的成熟,使得創(chuàng)建一個Web應(yīng)用系統(tǒng)可能會建立兩個組一起來工作,即程序開發(fā)組和Web頁面設(shè)計組。程序開發(fā)組負(fù)責(zé)編寫業(yè)務(wù)邏輯和表示業(yè)務(wù)邏輯方面的代碼。Web頁面設(shè)計組則負(fù)責(zé)建立HTML頁面和有關(guān)的圖形。這就促使測試也分為兩個部分進(jìn)行:第一部分,頁面之間、頁面和組件之間的鏈接是否符合系統(tǒng)的要求;第二部分,系統(tǒng)是否完成正確的功能。35.2技術(shù)對Web應(yīng)用測試的影響HTML/XML和JSP(5.3Web應(yīng)用軟件的測試類型45.3Web應(yīng)用軟件的測試類型4Web應(yīng)用軟件的測試類型5Web應(yīng)用軟件的測試類型55.4Web應(yīng)用軟件的測試模型可以從三個不同的角度來討論Web測試模型(1)對象模型(2)行為模型(3)結(jié)構(gòu)模型65.4Web應(yīng)用軟件的測試模型可以從三個不同的角度來討論W5.4.1對象模型對象模型將web應(yīng)用的實體分為三類對象,分別為客戶端頁面、服務(wù)端頁面和頁面中的組件客戶端頁面是Html文檔,其中可以嵌入腳本;服務(wù)器端頁面是由Web服務(wù)器執(zhí)行的CGI腳本、ASP、JSP和Servlet等;組件可以是JavaApplet、ActiveX控件、Html元素、JavaBean,與客戶端頁面、服務(wù)端頁面或者其他組件交互的任意程序模塊。表示對象之間的關(guān)系,除了傳統(tǒng)的面向?qū)ο篌w系中的繼承(Inheritance)、組成(Aggregation)和聯(lián)合(Association)三種關(guān)系外,還需要增加四種新的關(guān)系類型,分別為請求(Request)、響應(yīng)(Response)、導(dǎo)航(Navigation)和重定向(Redirect)75.4.1對象模型對象模型將web應(yīng)用的實體分為三類對象,對象關(guān)系圖可以通過對象關(guān)系圖ORD來描述Web應(yīng)用軟件中的實體以及它們之間的關(guān)系。對象關(guān)系圖ORD=(V,L,E)V是代表對象的節(jié)點集合L是對象間關(guān)系類型的集合,L={I,Ag,As,Req,Res,N,Rd};E是代表對象之間關(guān)系的邊的集合,E={EI,EAg,EAs,EReq,ERes,EN,ERd},EN?V*V*L,表示兩個客戶端頁面之間的導(dǎo)航關(guān)系;EReq?V*V*L,表示客戶端頁面和服務(wù)端頁面之間的請求關(guān)系;ERes?V*V*L,表示客戶端頁面和服務(wù)端頁面之間的響應(yīng)關(guān)系;ERd?V*V*L,表示兩個服務(wù)端頁面之間的重定向關(guān)系。8對象關(guān)系圖可以通過對象關(guān)系圖ORD來描述Web應(yīng)用軟件中的實某電子商務(wù)網(wǎng)站的ORD圖9某電子商務(wù)網(wǎng)站的ORD圖9某電子商務(wù)網(wǎng)站的ORD圖用戶可以從頁面Itemclientpage中選擇喜歡的某一項進(jìn)行購買;從該頁面可以鏈接到Detailclientpage頁面;用戶可以在頁面Detailclientpage中查看商品詳細(xì)的信息,確定購買后將請求提交到Buyserverpage頁面,Buyserverpage中包含了BuyAgentcomponet來處理購買請求?;谔幚淼慕Y(jié)果,會產(chǎn)生相應(yīng)的頁面BuyAbortclientpage或者BuySucceedclientpage。從BuyAbortclientpage或者BuySucceedclientpage頁面,用戶可以鏈接到Itemclientpage頁面,繼續(xù)下一次的購買。而且,Buyserverpage頁面可以重定向請求給頁面Authserverpage,將結(jié)果用Authclientpage發(fā)送給用戶。10某電子商務(wù)網(wǎng)站的ORD圖用戶可以從頁面Itemclient5.4.2行為模型可以通過兩方面進(jìn)行行為模型建模:一方面表示W(wǎng)eb頁面之間的導(dǎo)航行為,利用頁面導(dǎo)航圖來描述;另一方面表示交互對象的狀態(tài)依賴行為,利用對象狀態(tài)圖來描述。115.4.2行為模型可以通過兩方面進(jìn)行行為模型建模:11頁面導(dǎo)航圖(PND)PND是一個有限狀態(tài)機,每個狀態(tài)代表一個客戶頁,狀態(tài)之間的轉(zhuǎn)移表示超鏈接,并用超鏈接的URL來標(biāo)識;另外,由于同樣的超鏈接可能會產(chǎn)生不同的客戶端頁面,因而轉(zhuǎn)移還要用放在括號中的條件來標(biāo)識,該條件指定了轉(zhuǎn)移發(fā)生時提交的數(shù)據(jù)值。可以將頁面導(dǎo)航圖改寫成一棵樹。根節(jié)點為q0,每個節(jié)點的子節(jié)點為其通過超鏈接能夠到達(dá)的頁面,同時注意避免產(chǎn)生回路;這樣,從根節(jié)點到每個葉子節(jié)點之間的路徑就是測試路徑,從而能夠檢查超鏈接的可達(dá)性,保證導(dǎo)航行為是合適的并且是滿足需求的。12頁面導(dǎo)航圖(PND)PND是一個有限狀態(tài)機,每個狀態(tài)代表一個頁面導(dǎo)航圖與導(dǎo)航測試樹利用這個導(dǎo)航樹檢測某些導(dǎo)航特性時,發(fā)現(xiàn):如果有一個用戶訪問了b,則這個用戶沒有機會訪問除了e和f之外的任何頁面。而且,用戶將在訪問e和f時停止,而若不使用瀏覽器所提供的歷史頁面功能則不能轉(zhuǎn)到任何其他頁面。13頁面導(dǎo)航圖與導(dǎo)航測試樹利用這個導(dǎo)航樹檢測某些導(dǎo)航特性時,發(fā)現(xiàn)導(dǎo)航測試樹的路徑表達(dá)式導(dǎo)航測試樹的路徑表達(dá)式是圖中所有路徑的代數(shù)表示,表達(dá)式中的變量是邊標(biāo)簽,表達(dá)式中的操作符有三個,分別為(),+和*,其中,“()”用于表示子表達(dá)式組,“+”用于路徑的選擇,“*”用于路徑的循環(huán)。從a導(dǎo)航的測試路徑:([var=d1]url-b,url-e)+(url-d,(url-e,url-f)*+(url-f,url-e)*+url-a)+([var=d2]url-c,(url-d+url-f))14導(dǎo)航測試樹的路徑表達(dá)式導(dǎo)航測試樹的路徑表達(dá)式是圖中所有路徑對象狀態(tài)圖(OSD)OSD是一組層次化的、并發(fā)和交互的狀態(tài)機,狀態(tài)之間的轉(zhuǎn)換通過事件觸發(fā)來進(jìn)行,多個相互依賴的OSD構(gòu)成了一個組合對象狀態(tài)圖COSD。對象之間的交互,例如HTTP請求/響應(yīng),可以使用“/”后的觸發(fā)器進(jìn)行建模。例如submit/S.recv_request,觸發(fā)器S.recv_request表示如果submit轉(zhuǎn)移發(fā)生,則processserverpageS中的recv_request轉(zhuǎn)移將被觸發(fā)。為了同步處理并發(fā)的對象,在對象狀態(tài)圖中引入了一個waiting狀態(tài),表示對象將會一直等待,直到它其中的一個轉(zhuǎn)移被其他對象觸發(fā)。15對象狀態(tài)圖(OSD)OSD是一組層次化的、并發(fā)和交互的狀態(tài)機狀態(tài)依賴圖例子16狀態(tài)依賴圖例子16COSD測試樹為了揭示交互對象狀態(tài)依賴行為的錯誤,可以基于復(fù)合對象狀態(tài)圖COSD產(chǎn)生COSD測試樹,然后利用COSD測試樹得到測試用例。利用CDSD圖得到COSD測試樹時,測試樹中的節(jié)點描述了COSD的復(fù)合狀態(tài),樹的邊代表了狀態(tài)之間的轉(zhuǎn)移。如果COSD包含了N個OSD,則測試樹中的每個節(jié)點的狀態(tài)用一個N元組來表示,下標(biāo)I代表了是相應(yīng)OSD的第幾個狀態(tài)。構(gòu)造的算法如下所示:①樹根:是每一個OSD的初始狀態(tài)的復(fù)合狀態(tài)。②檢查樹中的每一個節(jié)點,根據(jù)OSD中的節(jié)點的轉(zhuǎn)移對樹中的節(jié)點進(jìn)行擴展,并且修改相應(yīng)的狀態(tài)。③重復(fù)第2步,直到?jīng)]有節(jié)點需要擴展。測試用例是樹中起始于根,結(jié)束于任何節(jié)點的各個路徑的轉(zhuǎn)移序列。17COSD測試樹為了揭示交互對象狀態(tài)依賴行為的錯誤,可以基COSD測試樹例子一個測試用例:keypress(submit,recv_request)(place_bid,bid)(return,response,recv_response)18COSD測試樹例子一個測試用例:185.4.3結(jié)構(gòu)模型深入了解Web應(yīng)用,必須掌握其內(nèi)部的控制流和數(shù)據(jù)流信息從變量出發(fā),找出其定義-使用鏈,進(jìn)而得到關(guān)于這個變量的測試路徑在變量的定義-使用鏈的基礎(chǔ)上,可以由低到高地分五個等級來描述不同范圍內(nèi)的數(shù)據(jù)流測試函數(shù)級、函數(shù)群級、對象級、對象群級和應(yīng)用級195.4.3結(jié)構(gòu)模型深入了解Web應(yīng)用,必須掌握其內(nèi)部的控函數(shù)級結(jié)構(gòu)測試函數(shù)級測試用來測試單一的函數(shù),變量的定義-使用鏈局限在函數(shù)內(nèi)部,與傳統(tǒng)的數(shù)據(jù)流測試類似。函數(shù)級的定義-使用鏈可以從函數(shù)的控制流圖(CFG)中得到。CFG是有向圖,節(jié)點表示語句塊,邊表示語句塊之間的執(zhí)行流。例如,如果節(jié)點i有清楚的定義,節(jié)點j有變量的使用,則定義-c-使用鏈<i,j>存在;如果節(jié)點i有清楚的定義,邊<j,k>引用了變量,則定義-p-使用鏈<i,<j,k>>存在,一個測試路徑會覆蓋一個定義-c-使用鏈或者定義-p-使用鏈。20函數(shù)級結(jié)構(gòu)測試函數(shù)級測試用來測試單一的函數(shù),變量的定義-一個CFG的例子21一個CFG的例子21函數(shù)群級結(jié)構(gòu)測試函數(shù)群級的測試用來測試對象內(nèi)部的函數(shù)群,變量的定義-使用鏈涉及到多個函數(shù)。一個對象內(nèi)部的函數(shù)群是互相調(diào)用的函數(shù)集合。因此,利用調(diào)用關(guān)系,對象內(nèi)部的函數(shù)被劃分為幾個函數(shù)群,每個函數(shù)群的定義-使用鏈可以從ICFG(InterproceduralControlFlowGraph)得到。類似于傳統(tǒng)的跨過程數(shù)據(jù)流測試,函數(shù)群級的測試路徑基于跨過程的定義-使用鏈得到。22函數(shù)群級結(jié)構(gòu)測試函數(shù)群級的測試用來測試對象內(nèi)部的函數(shù)群,變量一個ICFG的例子23一個ICFG的例子23對象級結(jié)構(gòu)測試對象級測試用來測試對象內(nèi)部不同的函數(shù)調(diào)用序列,變量的定義-使用鏈通過不同的調(diào)用序列進(jìn)行改變。不同的函數(shù)調(diào)用序列的定義-使用鏈可以從對象控制流圖OCFG得到。OCFG是對象內(nèi)部的ICFG或CFG的連接24對象級結(jié)構(gòu)測試對象級測試用來測試對象內(nèi)部不同的函數(shù)調(diào)用序列,一個OCFG的例子25一個OCFG的例子25對象群級結(jié)構(gòu)測試對象群級測試用來測試對象群,變量的定義-使用鏈在群中是跨對象的。一個對象群是通過消息傳遞關(guān)聯(lián)起來的對象的集合直接消息傳遞:其測試路徑可以從對象群中相關(guān)函數(shù)的ICFG中得到,例如函數(shù)調(diào)用。間接消息傳遞:例如Web頁面間的數(shù)據(jù)傳遞,當(dāng)用戶點擊了超鏈接或者提交了表單,數(shù)據(jù)就從客戶端頁面?zhèn)鬟f到服務(wù)器端頁面,頁面的腳本函數(shù)之間沒有直接的調(diào)用關(guān)系。在此,引入復(fù)合控制流圖CCFG,計算跨頁面的定義-使用鏈CCFG是交互的頁面間的CFG或ICFG的連接。26對象群級結(jié)構(gòu)測試對象群級測試用來測試對象群,變量的定義-使用一個CCFG的例子27一個CCFG的例子27應(yīng)用級結(jié)構(gòu)測試應(yīng)用級測試主要用來測試應(yīng)用程序范圍內(nèi)的變量,這些變量的定義-使用鏈跨不同的客戶。在Web應(yīng)用中,所有訪問Web應(yīng)用的客戶都可以共享一些變量,這些共享變量成為應(yīng)用級變量例如訪問站點的客戶計數(shù)變量。應(yīng)用級的測試路徑可以從可達(dá)圖得到,而可達(dá)圖是利用與應(yīng)用范圍級變量相關(guān)的CFG構(gòu)建。28應(yīng)用級結(jié)構(gòu)測試應(yīng)用級測試主要用來測試應(yīng)用程序范圍內(nèi)的變量,這一個綜合例子ebid拍賣應(yīng)用中的兩個頁面ebid.html和bid.asp,對其進(jìn)行結(jié)構(gòu)測試。29一個綜合例子ebid拍賣應(yīng)用中的兩個頁面ebid.htmlebid.html的代碼30ebid.html的代碼30ebid.html的代碼31ebid.html的代碼31bid.asp的代碼32bid.asp的代碼32ebid.html的ICFG33ebid.html的ICFG33ebid.html和bid.asp的CCFG34ebid.html和bid.asp的CCFG34定義-使用鏈35定義-使用鏈355.5Web應(yīng)用的單元、集成測試Web應(yīng)用軟件在單元測試階段,一個客戶端頁面被作為一個單元進(jìn)行測試,而服務(wù)器端頁面和其構(gòu)造頁面則一起作為一個單元進(jìn)行測試,利用頁面測試模型生成測試用例,測試用例的執(zhí)行需要驅(qū)動模塊和樁模塊。Web應(yīng)用軟件的集成測試可以利用系統(tǒng)的用例圖或者任何功能需求文檔來驅(qū)動,對于每個用例,必須考慮Web頁面之間的協(xié)作。通過分析測試模型,可以鑒別將要被集中測試的所有頁面。365.5Web應(yīng)用的單元、集成測試Web應(yīng)用軟件在單元測試階以login.asp為例進(jìn)行單元測試login.asp頁面在用戶首次登錄時,會構(gòu)建包含了一個用來接收用戶名和密碼的表單的登錄客戶端頁面;用戶通過提交按鈕將輸入的數(shù)據(jù)提交給login.asp,由該頁面驗證輸入數(shù)據(jù)的完整性和有效性,若數(shù)據(jù)有問題,則重新返回登錄客戶端頁面;若數(shù)據(jù)有效,則session中的nickname變量保存該用戶的昵稱,頁面重定向到其他服務(wù)端頁面。37以login.asp為例進(jìn)行單元測試login.asp頁面在login.asp的判定表和部分測試用例38login.asp的判定表和部分測試用例38以聊天功能為例進(jìn)行集成測試聊天功能的測試模型中包括五個服務(wù)端頁面,分別為:login.asp、chat.asp、read.asp、write.asp、logout.asp。其中,chat.asp會構(gòu)建一個包含兩個框架的客戶端頁面,分別裝載read.asp和write.asp,read.asp會構(gòu)建一個包含了最新20條信息的客戶端頁面,write.asp會構(gòu)建一個包含插入新信息的表單的客戶端頁面。集成測試的次序首先集成測試login.asp和chat.asp,這時需要兩個樁頁面read.asp和write.asp;然后,分別集成read.asp和write.asp,最后,集成logout.asp。39以聊天功能為例進(jìn)行集成測試聊天功能的測試模型中包括五個服務(wù)集成login.asp和chat.asp的測試用例40集成login.asp和chat.asp的測試用例40集成write.asp時增加的測試用例41集成write.asp時增加的測試用例415.6Web應(yīng)用的統(tǒng)計測試Web應(yīng)用軟件一般都具有體系結(jié)構(gòu)復(fù)雜、代碼量大、頁面眾多且相互聯(lián)結(jié)的特點,在一定的時間和投入內(nèi),顯然是無法做到窮盡的測試,而確保其可靠性的一個很好的可選方案就是基于使用模型的統(tǒng)計測試。425.6Web應(yīng)用的統(tǒng)計測試Web應(yīng)用軟件一般都具有體系結(jié)構(gòu)使用模型使用模型是軟件使用過程中軟件形態(tài)的精確描述,它把軟件的使用方式以模型的方法表示出來,描述了軟件的使用特性。43使用模型使用模型是軟件使用過程中軟件形態(tài)的精確描述,它把軟件使用模型使用模型可以用一個賦有狀態(tài)節(jié)點間轉(zhuǎn)換概率的有限狀態(tài)機來表示。狀態(tài)表示軟件使用過程中的內(nèi)部環(huán)境,邊表示狀態(tài)間的轉(zhuǎn)移關(guān)系。每條邊都有一個激勵輸入與之對應(yīng),表明在當(dāng)前狀態(tài)下輸入這種激勵使軟件轉(zhuǎn)移到下一個狀態(tài)。在特定狀態(tài)下一種激勵只能轉(zhuǎn)移到另一個特定的狀態(tài),即狀態(tài)的所有出邊所對應(yīng)的激勵必須互不相同。每條邊都有一個轉(zhuǎn)移概率,轉(zhuǎn)移概率標(biāo)志了狀態(tài)轉(zhuǎn)移發(fā)生的可能性。任一狀態(tài)的所有出邊的轉(zhuǎn)移概率之和應(yīng)該為1每一個使用模型都有唯一的初態(tài)和終態(tài)。初態(tài)是使用模型的初始狀態(tài),它是每一次軟件使用的開始。終態(tài)是使用模型的終止?fàn)顟B(tài),它是軟件每一次使用的終結(jié)。軟件的每一次使用(或者說每一次操作)都從初態(tài)開始經(jīng)過若干個中間狀態(tài),最后到達(dá)最終狀態(tài)。44使用模型使用模型可以用一個賦有狀態(tài)節(jié)點間轉(zhuǎn)換概率的有限狀態(tài)機使用模型舉例45使用模型舉例45統(tǒng)計測試用例的產(chǎn)生和執(zhí)行統(tǒng)計測試用例是從初態(tài)開始經(jīng)過若干個中間狀態(tài)到達(dá)終態(tài)的狀態(tài)和邊的序列。產(chǎn)生測試用例時,從初態(tài)開始,在每一個狀態(tài)都生成一個0~1間的隨機數(shù),根據(jù)狀態(tài)各出邊的轉(zhuǎn)移概率用這個隨機數(shù)選擇一條出邊,轉(zhuǎn)移到下一個狀態(tài),直到到達(dá)終態(tài)。這樣產(chǎn)生的測試用例是隨機的,符合用戶的使用習(xí)慣。46統(tǒng)計測試用例的產(chǎn)生和執(zhí)行統(tǒng)計測試用例是從初態(tài)開始經(jīng)過若干個根據(jù)使用模型隨機產(chǎn)生的測試用例47根據(jù)使用模型隨機產(chǎn)生的測試用例47如何界定測試的充分性?統(tǒng)計測試是通過測試過程中的使用鏈和測試鏈的比較來解決這個問題的。測試之初,可以把使用模型稱為使用鏈,這是相對于測試過程中的測試鏈來說的。測試鏈?zhǔn)菑氖褂面湲a(chǎn)生的,它把使用鏈各邊所對應(yīng)的轉(zhuǎn)移概率替換為一個初值為0的計數(shù)器,隨著測試的進(jìn)行,每當(dāng)一個測試用例經(jīng)過該邊時計數(shù)器就加1。在測試過程中,測試鏈代表了測試環(huán)境,使用鏈代表使用環(huán)境。當(dāng)測試環(huán)境和使用環(huán)境的差異變得足夠小的時候,也就是說測試用例足夠多,測試環(huán)境中所有狀態(tài)用各邊計數(shù)器的值算出的比值接近使用環(huán)境中各出邊的轉(zhuǎn)移概率時,測試就充分了,這時候我們從測試環(huán)境計算出的軟件可靠性可以代表實際使用時的軟件的可靠性。48如何界定測試的充分性?統(tǒng)計測試是通過測試過程中的使用鏈和測5.7Web應(yīng)用的性能測試Web性能已經(jīng)成為一個突出的問題,并已成為Web成功的關(guān)鍵因素。經(jīng)過性能測試的Web應(yīng)用程序,減少了潛在的風(fēng)險,建立和提高了用戶的信心;同時,也使公司本身對維持高業(yè)務(wù)量和減少出錯風(fēng)險充滿信心。495.7Web應(yīng)用的性能測試Web性能已經(jīng)成為一個突出的問題Web性能測試過程50Web性能測試過程505.8Web應(yīng)用測試工具(1)基于規(guī)則的分析器(2)負(fù)載/性能測試工具(3)GUI捕獲(記錄/腳本)和回放工具(4)基于模型的測試工具515.8Web應(yīng)用測試工具(1)基于規(guī)則的分析器51本章總結(jié)討論了:5.1Web應(yīng)用軟件體系結(jié)構(gòu)5.2技術(shù)對Web應(yīng)用測試的影響5.3Web應(yīng)用軟件的測試類型5.4Web應(yīng)用軟件的測試模型5.5Web應(yīng)用的單元、集成測試5.6Web應(yīng)用的統(tǒng)計測試5.7Web應(yīng)用的性能測試5.8Web應(yīng)用測試工具52本章總結(jié)討論了:52習(xí)題1.Web應(yīng)用軟件的測試類型有哪些?2.Web應(yīng)用軟件的測試模型一般有哪幾種?3.Web應(yīng)用軟件的性能測試的過程是怎樣?53習(xí)題1.Web應(yīng)用軟件的測試類型有哪些?53第5章Web應(yīng)用的測試54第5章Web應(yīng)用的測試0主要內(nèi)容5.1Web應(yīng)用軟件體系結(jié)構(gòu)5.2技術(shù)對Web應(yīng)用測試的影響5.3Web應(yīng)用軟件的測試類型5.4Web應(yīng)用軟件的測試模型5.5Web應(yīng)用的單元、集成測試5.6Web應(yīng)用的統(tǒng)計測試5.7Web應(yīng)用的性能測試5.8Web應(yīng)用測試工具55主要內(nèi)容5.1Web應(yīng)用軟件體系結(jié)構(gòu)15.1Web應(yīng)用軟件體系結(jié)構(gòu)Web應(yīng)用軟件一般采用客戶機/服務(wù)器/數(shù)據(jù)庫服務(wù)器的計算模式,在這種模式下,客戶機層用于人機交互與應(yīng)用的表示,Web服務(wù)器層用于事務(wù)處理,數(shù)據(jù)庫服務(wù)器層用于應(yīng)用數(shù)據(jù)的存取和管理Web應(yīng)用軟件的新特點使得傳統(tǒng)的測試技術(shù)無法勝任,因此需要一套獨特的測試體系來支持Web應(yīng)用軟件的測試。565.1Web應(yīng)用軟件體系結(jié)構(gòu)Web應(yīng)用軟件一般采用客戶機/5.2技術(shù)對Web應(yīng)用測試的影響HTML/XML和JSP(ASP)技術(shù)的成熟,使得創(chuàng)建一個Web應(yīng)用系統(tǒng)可能會建立兩個組一起來工作,即程序開發(fā)組和Web頁面設(shè)計組。程序開發(fā)組負(fù)責(zé)編寫業(yè)務(wù)邏輯和表示業(yè)務(wù)邏輯方面的代碼。Web頁面設(shè)計組則負(fù)責(zé)建立HTML頁面和有關(guān)的圖形。這就促使測試也分為兩個部分進(jìn)行:第一部分,頁面之間、頁面和組件之間的鏈接是否符合系統(tǒng)的要求;第二部分,系統(tǒng)是否完成正確的功能。575.2技術(shù)對Web應(yīng)用測試的影響HTML/XML和JSP(5.3Web應(yīng)用軟件的測試類型585.3Web應(yīng)用軟件的測試類型4Web應(yīng)用軟件的測試類型59Web應(yīng)用軟件的測試類型55.4Web應(yīng)用軟件的測試模型可以從三個不同的角度來討論Web測試模型(1)對象模型(2)行為模型(3)結(jié)構(gòu)模型605.4Web應(yīng)用軟件的測試模型可以從三個不同的角度來討論W5.4.1對象模型對象模型將web應(yīng)用的實體分為三類對象,分別為客戶端頁面、服務(wù)端頁面和頁面中的組件客戶端頁面是Html文檔,其中可以嵌入腳本;服務(wù)器端頁面是由Web服務(wù)器執(zhí)行的CGI腳本、ASP、JSP和Servlet等;組件可以是JavaApplet、ActiveX控件、Html元素、JavaBean,與客戶端頁面、服務(wù)端頁面或者其他組件交互的任意程序模塊。表示對象之間的關(guān)系,除了傳統(tǒng)的面向?qū)ο篌w系中的繼承(Inheritance)、組成(Aggregation)和聯(lián)合(Association)三種關(guān)系外,還需要增加四種新的關(guān)系類型,分別為請求(Request)、響應(yīng)(Response)、導(dǎo)航(Navigation)和重定向(Redirect)615.4.1對象模型對象模型將web應(yīng)用的實體分為三類對象,對象關(guān)系圖可以通過對象關(guān)系圖ORD來描述Web應(yīng)用軟件中的實體以及它們之間的關(guān)系。對象關(guān)系圖ORD=(V,L,E)V是代表對象的節(jié)點集合L是對象間關(guān)系類型的集合,L={I,Ag,As,Req,Res,N,Rd};E是代表對象之間關(guān)系的邊的集合,E={EI,EAg,EAs,EReq,ERes,EN,ERd},EN?V*V*L,表示兩個客戶端頁面之間的導(dǎo)航關(guān)系;EReq?V*V*L,表示客戶端頁面和服務(wù)端頁面之間的請求關(guān)系;ERes?V*V*L,表示客戶端頁面和服務(wù)端頁面之間的響應(yīng)關(guān)系;ERd?V*V*L,表示兩個服務(wù)端頁面之間的重定向關(guān)系。62對象關(guān)系圖可以通過對象關(guān)系圖ORD來描述Web應(yīng)用軟件中的實某電子商務(wù)網(wǎng)站的ORD圖63某電子商務(wù)網(wǎng)站的ORD圖9某電子商務(wù)網(wǎng)站的ORD圖用戶可以從頁面Itemclientpage中選擇喜歡的某一項進(jìn)行購買;從該頁面可以鏈接到Detailclientpage頁面;用戶可以在頁面Detailclientpage中查看商品詳細(xì)的信息,確定購買后將請求提交到Buyserverpage頁面,Buyserverpage中包含了BuyAgentcomponet來處理購買請求?;谔幚淼慕Y(jié)果,會產(chǎn)生相應(yīng)的頁面BuyAbortclientpage或者BuySucceedclientpage。從BuyAbortclientpage或者BuySucceedclientpage頁面,用戶可以鏈接到Itemclientpage頁面,繼續(xù)下一次的購買。而且,Buyserverpage頁面可以重定向請求給頁面Authserverpage,將結(jié)果用Authclientpage發(fā)送給用戶。64某電子商務(wù)網(wǎng)站的ORD圖用戶可以從頁面Itemclient5.4.2行為模型可以通過兩方面進(jìn)行行為模型建模:一方面表示W(wǎng)eb頁面之間的導(dǎo)航行為,利用頁面導(dǎo)航圖來描述;另一方面表示交互對象的狀態(tài)依賴行為,利用對象狀態(tài)圖來描述。655.4.2行為模型可以通過兩方面進(jìn)行行為模型建模:11頁面導(dǎo)航圖(PND)PND是一個有限狀態(tài)機,每個狀態(tài)代表一個客戶頁,狀態(tài)之間的轉(zhuǎn)移表示超鏈接,并用超鏈接的URL來標(biāo)識;另外,由于同樣的超鏈接可能會產(chǎn)生不同的客戶端頁面,因而轉(zhuǎn)移還要用放在括號中的條件來標(biāo)識,該條件指定了轉(zhuǎn)移發(fā)生時提交的數(shù)據(jù)值??梢詫㈨撁鎸?dǎo)航圖改寫成一棵樹。根節(jié)點為q0,每個節(jié)點的子節(jié)點為其通過超鏈接能夠到達(dá)的頁面,同時注意避免產(chǎn)生回路;這樣,從根節(jié)點到每個葉子節(jié)點之間的路徑就是測試路徑,從而能夠檢查超鏈接的可達(dá)性,保證導(dǎo)航行為是合適的并且是滿足需求的。66頁面導(dǎo)航圖(PND)PND是一個有限狀態(tài)機,每個狀態(tài)代表一個頁面導(dǎo)航圖與導(dǎo)航測試樹利用這個導(dǎo)航樹檢測某些導(dǎo)航特性時,發(fā)現(xiàn):如果有一個用戶訪問了b,則這個用戶沒有機會訪問除了e和f之外的任何頁面。而且,用戶將在訪問e和f時停止,而若不使用瀏覽器所提供的歷史頁面功能則不能轉(zhuǎn)到任何其他頁面。67頁面導(dǎo)航圖與導(dǎo)航測試樹利用這個導(dǎo)航樹檢測某些導(dǎo)航特性時,發(fā)現(xiàn)導(dǎo)航測試樹的路徑表達(dá)式導(dǎo)航測試樹的路徑表達(dá)式是圖中所有路徑的代數(shù)表示,表達(dá)式中的變量是邊標(biāo)簽,表達(dá)式中的操作符有三個,分別為(),+和*,其中,“()”用于表示子表達(dá)式組,“+”用于路徑的選擇,“*”用于路徑的循環(huán)。從a導(dǎo)航的測試路徑:([var=d1]url-b,url-e)+(url-d,(url-e,url-f)*+(url-f,url-e)*+url-a)+([var=d2]url-c,(url-d+url-f))68導(dǎo)航測試樹的路徑表達(dá)式導(dǎo)航測試樹的路徑表達(dá)式是圖中所有路徑對象狀態(tài)圖(OSD)OSD是一組層次化的、并發(fā)和交互的狀態(tài)機,狀態(tài)之間的轉(zhuǎn)換通過事件觸發(fā)來進(jìn)行,多個相互依賴的OSD構(gòu)成了一個組合對象狀態(tài)圖COSD。對象之間的交互,例如HTTP請求/響應(yīng),可以使用“/”后的觸發(fā)器進(jìn)行建模。例如submit/S.recv_request,觸發(fā)器S.recv_request表示如果submit轉(zhuǎn)移發(fā)生,則processserverpageS中的recv_request轉(zhuǎn)移將被觸發(fā)。為了同步處理并發(fā)的對象,在對象狀態(tài)圖中引入了一個waiting狀態(tài),表示對象將會一直等待,直到它其中的一個轉(zhuǎn)移被其他對象觸發(fā)。69對象狀態(tài)圖(OSD)OSD是一組層次化的、并發(fā)和交互的狀態(tài)機狀態(tài)依賴圖例子70狀態(tài)依賴圖例子16COSD測試樹為了揭示交互對象狀態(tài)依賴行為的錯誤,可以基于復(fù)合對象狀態(tài)圖COSD產(chǎn)生COSD測試樹,然后利用COSD測試樹得到測試用例。利用CDSD圖得到COSD測試樹時,測試樹中的節(jié)點描述了COSD的復(fù)合狀態(tài),樹的邊代表了狀態(tài)之間的轉(zhuǎn)移。如果COSD包含了N個OSD,則測試樹中的每個節(jié)點的狀態(tài)用一個N元組來表示,下標(biāo)I代表了是相應(yīng)OSD的第幾個狀態(tài)。構(gòu)造的算法如下所示:①樹根:是每一個OSD的初始狀態(tài)的復(fù)合狀態(tài)。②檢查樹中的每一個節(jié)點,根據(jù)OSD中的節(jié)點的轉(zhuǎn)移對樹中的節(jié)點進(jìn)行擴展,并且修改相應(yīng)的狀態(tài)。③重復(fù)第2步,直到?jīng)]有節(jié)點需要擴展。測試用例是樹中起始于根,結(jié)束于任何節(jié)點的各個路徑的轉(zhuǎn)移序列。71COSD測試樹為了揭示交互對象狀態(tài)依賴行為的錯誤,可以基COSD測試樹例子一個測試用例:keypress(submit,recv_request)(place_bid,bid)(return,response,recv_response)72COSD測試樹例子一個測試用例:185.4.3結(jié)構(gòu)模型深入了解Web應(yīng)用,必須掌握其內(nèi)部的控制流和數(shù)據(jù)流信息從變量出發(fā),找出其定義-使用鏈,進(jìn)而得到關(guān)于這個變量的測試路徑在變量的定義-使用鏈的基礎(chǔ)上,可以由低到高地分五個等級來描述不同范圍內(nèi)的數(shù)據(jù)流測試函數(shù)級、函數(shù)群級、對象級、對象群級和應(yīng)用級735.4.3結(jié)構(gòu)模型深入了解Web應(yīng)用,必須掌握其內(nèi)部的控函數(shù)級結(jié)構(gòu)測試函數(shù)級測試用來測試單一的函數(shù),變量的定義-使用鏈局限在函數(shù)內(nèi)部,與傳統(tǒng)的數(shù)據(jù)流測試類似。函數(shù)級的定義-使用鏈可以從函數(shù)的控制流圖(CFG)中得到。CFG是有向圖,節(jié)點表示語句塊,邊表示語句塊之間的執(zhí)行流。例如,如果節(jié)點i有清楚的定義,節(jié)點j有變量的使用,則定義-c-使用鏈<i,j>存在;如果節(jié)點i有清楚的定義,邊<j,k>引用了變量,則定義-p-使用鏈<i,<j,k>>存在,一個測試路徑會覆蓋一個定義-c-使用鏈或者定義-p-使用鏈。74函數(shù)級結(jié)構(gòu)測試函數(shù)級測試用來測試單一的函數(shù),變量的定義-一個CFG的例子75一個CFG的例子21函數(shù)群級結(jié)構(gòu)測試函數(shù)群級的測試用來測試對象內(nèi)部的函數(shù)群,變量的定義-使用鏈涉及到多個函數(shù)。一個對象內(nèi)部的函數(shù)群是互相調(diào)用的函數(shù)集合。因此,利用調(diào)用關(guān)系,對象內(nèi)部的函數(shù)被劃分為幾個函數(shù)群,每個函數(shù)群的定義-使用鏈可以從ICFG(InterproceduralControlFlowGraph)得到。類似于傳統(tǒng)的跨過程數(shù)據(jù)流測試,函數(shù)群級的測試路徑基于跨過程的定義-使用鏈得到。76函數(shù)群級結(jié)構(gòu)測試函數(shù)群級的測試用來測試對象內(nèi)部的函數(shù)群,變量一個ICFG的例子77一個ICFG的例子23對象級結(jié)構(gòu)測試對象級測試用來測試對象內(nèi)部不同的函數(shù)調(diào)用序列,變量的定義-使用鏈通過不同的調(diào)用序列進(jìn)行改變。不同的函數(shù)調(diào)用序列的定義-使用鏈可以從對象控制流圖OCFG得到。OCFG是對象內(nèi)部的ICFG或CFG的連接78對象級結(jié)構(gòu)測試對象級測試用來測試對象內(nèi)部不同的函數(shù)調(diào)用序列,一個OCFG的例子79一個OCFG的例子25對象群級結(jié)構(gòu)測試對象群級測試用來測試對象群,變量的定義-使用鏈在群中是跨對象的。一個對象群是通過消息傳遞關(guān)聯(lián)起來的對象的集合直接消息傳遞:其測試路徑可以從對象群中相關(guān)函數(shù)的ICFG中得到,例如函數(shù)調(diào)用。間接消息傳遞:例如Web頁面間的數(shù)據(jù)傳遞,當(dāng)用戶點擊了超鏈接或者提交了表單,數(shù)據(jù)就從客戶端頁面?zhèn)鬟f到服務(wù)器端頁面,頁面的腳本函數(shù)之間沒有直接的調(diào)用關(guān)系。在此,引入復(fù)合控制流圖CCFG,計算跨頁面的定義-使用鏈CCFG是交互的頁面間的CFG或ICFG的連接。80對象群級結(jié)構(gòu)測試對象群級測試用來測試對象群,變量的定義-使用一個CCFG的例子81一個CCFG的例子27應(yīng)用級結(jié)構(gòu)測試應(yīng)用級測試主要用來測試應(yīng)用程序范圍內(nèi)的變量,這些變量的定義-使用鏈跨不同的客戶。在Web應(yīng)用中,所有訪問Web應(yīng)用的客戶都可以共享一些變量,這些共享變量成為應(yīng)用級變量例如訪問站點的客戶計數(shù)變量。應(yīng)用級的測試路徑可以從可達(dá)圖得到,而可達(dá)圖是利用與應(yīng)用范圍級變量相關(guān)的CFG構(gòu)建。82應(yīng)用級結(jié)構(gòu)測試應(yīng)用級測試主要用來測試應(yīng)用程序范圍內(nèi)的變量,這一個綜合例子ebid拍賣應(yīng)用中的兩個頁面ebid.html和bid.asp,對其進(jìn)行結(jié)構(gòu)測試。83一個綜合例子ebid拍賣應(yīng)用中的兩個頁面ebid.htmlebid.html的代碼84ebid.html的代碼30ebid.html的代碼85ebid.html的代碼31bid.asp的代碼86bid.asp的代碼32ebid.html的ICFG87ebid.html的ICFG33ebid.html和bid.asp的CCFG88ebid.html和bid.asp的CCFG34定義-使用鏈89定義-使用鏈355.5Web應(yīng)用的單元、集成測試Web應(yīng)用軟件在單元測試階段,一個客戶端頁面被作為一個單元進(jìn)行測試,而服務(wù)器端頁面和其構(gòu)造頁面則一起作為一個單元進(jìn)行測試,利用頁面測試模型生成測試用例,測試用例的執(zhí)行需要驅(qū)動模塊和樁模塊。Web應(yīng)用軟件的集成測試可以利用系統(tǒng)的用例圖或者任何功能需求文檔來驅(qū)動,對于每個用例,必須考慮Web頁面之間的協(xié)作。通過分析測試模型,可以鑒別將要被集中測試的所有頁面。905.5Web應(yīng)用的單元、集成測試Web應(yīng)用軟件在單元測試階以login.asp為例進(jìn)行單元測試login.asp頁面在用戶首次登錄時,會構(gòu)建包含了一個用來接收用戶名和密碼的表單的登錄客戶端頁面;用戶通過提交按鈕將輸入的數(shù)據(jù)提交給login.asp,由該頁面驗證輸入數(shù)據(jù)的完整性和有效性,若數(shù)據(jù)有問題,則重新返回登錄客戶端頁面;若數(shù)據(jù)有效,則session中的nickname變量保存該用戶的昵稱,頁面重定向到其他服務(wù)端頁面。91以login.asp為例進(jìn)行單元測試login.asp頁面在login.asp的判定表和部分測試用例92login.asp的判定表和部分測試用例38以聊天功能為例進(jìn)行集成測試聊天功能的測試模型中包括五個服務(wù)端頁面,分別為:login.asp、chat.asp、read.asp、write.asp、logout.asp。其中,chat.asp會構(gòu)建一個包含兩個框架的客戶端頁面,分別裝載read.asp和write.asp,read.asp會構(gòu)建一個包含了最新20條信息的客戶端頁面,write.asp會構(gòu)建一個包含插入新信息的表單的客戶端頁面。集成測試的次序首先集成測試login.asp和chat.asp,這時需要兩個樁頁面read.asp和write.asp;然后,分別集成read.asp和write.asp,最后,集成logout.asp。93以聊天功能為例進(jìn)行集成測試聊天功能的測試模型中包括五個服務(wù)集成login.asp和chat.asp的測試用例94集成login.asp和chat.asp的測試用例40集成write.asp時增加的測試用例95集成write.asp時增加的測試用例415.6Web應(yīng)用的統(tǒng)計測試Web應(yīng)用軟件一般都具有體系結(jié)構(gòu)復(fù)雜、代碼量大、頁面眾多且相互聯(lián)結(jié)的特點,在一定的時間和投入內(nèi),顯然是無法做到窮盡的測試,而確保其可靠性的一個很好的可選方案就是基于使用模型的統(tǒng)計測試。965.6Web應(yīng)用的統(tǒng)計測試Web應(yīng)用軟
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 應(yīng)當(dāng)建立食品安全自查制度
- 工程聯(lián)系單制度
- 工廠日常巡檢制度
- 長安大學(xué)興華學(xué)院《材質(zhì)渲染綜合應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西體育高等??茖W(xué)校《口腔頜面外科學(xué)實踐(Ⅱ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 運城師范高等??茖W(xué)?!洞柏涍\》2023-2024學(xué)年第二學(xué)期期末試卷
- 甘肅中醫(yī)藥大學(xué)《JAVA高級語言程序設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 農(nóng)村幸福院無糾紛調(diào)處制度
- 齊齊哈爾高等師范??茖W(xué)?!恫牧峡茖W(xué)基礎(chǔ)(Ⅱ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 成都理工大學(xué)工程技術(shù)學(xué)院《影視人類學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 農(nóng)村水利技術(shù)術(shù)語(SL 56-2013)中文索引
- 中考語文文言文150個實詞及虛詞默寫表(含答案)
- 廣西小額貸管理辦法
- 海南省醫(yī)療衛(wèi)生機構(gòu)數(shù)量基本情況數(shù)據(jù)分析報告2025版
- 電影院消防安全制度范本
- 酒店工程維修合同協(xié)議書
- 2025年版?zhèn)€人與公司居間合同范例
- 電子商務(wù)平臺項目運營合作協(xié)議書范本
- 動設(shè)備監(jiān)測課件 振動狀態(tài)監(jiān)測技術(shù)基礎(chǔ)知識
- 專題15平面解析幾何(選擇填空題)(第一部分)(解析版) - 大數(shù)據(jù)之十年高考真題(2014-2025)與優(yōu) 質(zhì)模擬題(新高考卷與全國理科卷)
- 部門考核方案
評論
0/150
提交評論