青島科技大學(xué) 宋 波
關(guān)于Web應(yīng)用中的組合模型和生成測試
青島科技大學(xué) 宋 波
【摘要】如今,隨著Web應(yīng)用的普及,互聯(lián)網(wǎng)上有越來越多可供使用的服務(wù)和信息,而其正確性、安全性和可靠性往往是企業(yè)和組織成功的關(guān)鍵。Web測試是保證Web安全的一種方法。然而,由于Web應(yīng)用的特殊性,傳統(tǒng)的測試方法在諸多方面都不適合進(jìn)行Web測試。一個(gè)典型的Web應(yīng)用程序由兩層組成:客戶端和服務(wù)器?,F(xiàn)有的大多數(shù)工作是從外部或用戶視圖進(jìn)行Web應(yīng)用程序的測試,而不考慮服務(wù)器端的交互與行為。在本文中,對于服務(wù)器端的交互與行為進(jìn)行了特別的考慮,并提出了組合模型和測試Web應(yīng)用程序的方法。有限狀態(tài)機(jī)(FSMs)用于分別從用戶端和服務(wù)器端建立Web應(yīng)用模型,然后,同步產(chǎn)物被用作構(gòu)建有限狀態(tài)機(jī)組成的工具。最后,基于有限狀態(tài)機(jī)的組成,生成測試滿足相應(yīng)的測試復(fù)蓋準(zhǔn)則。
【關(guān)鍵詞】Web;組合模型;測試
如今,隨著Web應(yīng)用的普及,互聯(lián)網(wǎng)上有越來越多可供使用的服務(wù)和信息,Web應(yīng)用在世界各地非常普遍,而其正確性、安全性和可靠性往往是企業(yè)和組織成功的關(guān)鍵。Web應(yīng)用程序開發(fā)需要新方法、技術(shù)和工具,來支持生命周期各個(gè)階段的工程項(xiàng)目。然而,由于Web應(yīng)用的特殊性,傳統(tǒng)的測試方法在諸多方面都不適合進(jìn)行Web測試,而Web測試是保證Web安全的一種方法。Web應(yīng)用非常流行,發(fā)展迅速,已經(jīng)擁有了大量的用戶。Web應(yīng)用由網(wǎng)站或Web系統(tǒng)發(fā)展而來,利用使能技術(shù),一種頁面動(dòng)態(tài)機(jī)制,根據(jù)用戶輸入作出響應(yīng),使其內(nèi)容動(dòng)態(tài)并允許用戶響應(yīng)服務(wù)器的業(yè)務(wù)邏輯。我們知道,Web應(yīng)用程序開發(fā)利用導(dǎo)航和超文本HTML頁面的交互設(shè)備,向用戶提供或獲取信息,同時(shí)向龐大的用戶群體提供跨平臺(tái)訪問的通用Web資源。
Web應(yīng)用的基本結(jié)構(gòu)包括2層:客戶端和服務(wù)器。一個(gè)簡單的靜態(tài)Web應(yīng)用程序,主要是超文本標(biāo)記語言(HTML)頁面。網(wǎng)站中的網(wǎng)頁和其他組件都存儲(chǔ)在服務(wù)器端,當(dāng)用戶訪問Web應(yīng)用程序時(shí),點(diǎn)擊鏈接,請求被發(fā)送至服務(wù)器。收到請求后,服務(wù)器作出響應(yīng),向客戶端發(fā)送一個(gè)相應(yīng)的純HTML顯示給用戶??蛻舳巳绾闻c服務(wù)器進(jìn)行交互,服務(wù)器如何正確響應(yīng)用戶的請求,服務(wù)器端的行為等等,讓我們感到困惑,這對Web開發(fā)者來說是一個(gè)挑戰(zhàn)?,F(xiàn)有的大多數(shù)Web應(yīng)用程序的建模和測試工作都是來自外部或用戶視圖。
在本文中,我們考慮了客戶端和服務(wù)器端的行為,有限狀態(tài)機(jī)被用作客戶端和服務(wù)器端的Web應(yīng)用程序模型。由于客戶端與服務(wù)器進(jìn)行交互或通信是通過發(fā)送消息請求和響應(yīng),因此,采用同步產(chǎn)品來完成客戶端與服務(wù)器端的模型組成。最終,基于組合模型,測試生成。
本文結(jié)構(gòu)安排如下:第二部分給出一個(gè)示例,這個(gè)例子貫穿整篇文章,以證明我們的方法。然后我們使用有限狀態(tài)機(jī)從客戶端和服務(wù)器端建立Web應(yīng)用模型,隨后在第三部分中利用同步產(chǎn)品來完成對有限狀態(tài)機(jī)的組成。第四部分是測試生成過程,此外,第五部分是一些結(jié)論及相關(guān)工作。
圖1 有限狀態(tài)機(jī)示例
為了簡化我們方法的介紹和地址,在這里,我們給出了一個(gè)簡單的例子,如圖1所示。所有的網(wǎng)頁都存儲(chǔ)在服務(wù)器端,用戶在Web瀏覽器的地址欄中鍵入Web應(yīng)用程序的網(wǎng)址,按下Enter鍵后,Web服務(wù)器將返回主頁(P1)給用戶。當(dāng)用戶點(diǎn)擊消息鏈接,對消息的請求將被發(fā)送至服務(wù)器,用戶會(huì)處于短暫的等待狀態(tài)(W1),服務(wù)器收到請求后,將發(fā)送消息網(wǎng)頁(P2)給用戶。在圖1中,符號“’”表示“反應(yīng)”。當(dāng)點(diǎn)擊主頁的登錄鏈接后,用戶將進(jìn)入短暫的等待狀態(tài)(W2),服務(wù)器響應(yīng)后,登錄頁面(P3)出現(xiàn)。用戶輸入用戶名和密碼,并點(diǎn)擊提交按鈕。提交后,用戶名和密碼被發(fā)送至Web服務(wù)器進(jìn)行身份驗(yàn)證,因此,用戶將進(jìn)入短暫的等待狀態(tài)(W3)。如果用戶名和密碼是正確的,一個(gè)用戶私人頁面(P4)會(huì)被加載并顯示。當(dāng)用戶點(diǎn)擊注銷,他/她將返回到主頁(P1)。
圖2 有限狀態(tài)機(jī)用于服務(wù)器
根據(jù)客戶的要求,服務(wù)器將做出相應(yīng)的響應(yīng),我們使用有限狀態(tài)機(jī)來描述服務(wù)器行為,如圖2所示。當(dāng)接收到消息的請求時(shí),服務(wù)器發(fā)送HTML頁面的消息到客戶端(消息’指的是服務(wù)器對消息請求的響應(yīng)),并發(fā)送相同的登錄請求。當(dāng)用戶向服務(wù)器提交他/她的用戶名和密碼時(shí),當(dāng)服務(wù)器收到請求認(rèn)證用戶名和密碼時(shí),服務(wù)器會(huì)發(fā)送一個(gè)查找請求在數(shù)據(jù)庫中進(jìn)行匹配,隨后服務(wù)器進(jìn)入狀態(tài)S5,匹配后,服務(wù)器進(jìn)入狀態(tài)S4,響應(yīng)提交的請求,提交’,此時(shí)服務(wù)器進(jìn)入狀態(tài)S6。在狀態(tài)S6,進(jìn)行構(gòu)建會(huì)話數(shù)據(jù)。當(dāng)用戶點(diǎn)擊注銷鏈接,服務(wù)器會(huì)刪除該會(huì)話的數(shù)據(jù),它將返回狀態(tài)S1。
有限狀態(tài)機(jī)(FSM)提供一種簡便的構(gòu)建軟件行為模型方式,來避免執(zhí)行伴隨的問題。從有限狀態(tài)機(jī)導(dǎo)出的幾種測試方法已被提出,從理論上講,Web應(yīng)用程序可以完全利用有限狀態(tài)機(jī)建模,然而,即使是簡單的網(wǎng)頁,也可能面臨來自狀態(tài)空間爆炸的問題。文本域可以有多種可能的輸入,在一些有大量的選項(xiàng)網(wǎng)頁上,可以選擇信息的輸入順序,這些因素意味著一個(gè)有限狀態(tài)機(jī)可能占據(jù)非常大的因素,即使只有一頁。因此,一個(gè)基于有限狀態(tài)機(jī)的測試方法只能用于發(fā)現(xiàn)生成有限狀態(tài)機(jī)的應(yīng)用技術(shù),這種技術(shù)是描述性的,小卻很實(shí)用,足以產(chǎn)生有效的測試。因此,在本文中,我們不用去考慮每一個(gè)網(wǎng)頁的細(xì)節(jié),而是在一個(gè)較高的抽象層次上,使用有限狀態(tài)機(jī)分別在客戶端和服務(wù)器端建立Web應(yīng)用模型。此外,客戶端通過發(fā)送消息請求和響應(yīng)與服務(wù)器進(jìn)行通信。因此,我們可以將消息的請求和響應(yīng)作為橋梁,來把同步產(chǎn)品組成兩個(gè)有限狀態(tài)機(jī)。進(jìn)而,基于新的復(fù)合狀態(tài)機(jī),可以很容易的生成測試。
通常,我們從外觀視圖方面來對Web應(yīng)用程序進(jìn)行建模和測試,web服務(wù)器的行為都沒有考慮到。這使得我們不知道服務(wù)器的響應(yīng)和互動(dòng)是怎樣的。此外,客戶端和服務(wù)器之間進(jìn)行互動(dòng)或取得通信你是通過消息的請求和響應(yīng)裝置。所以,可以使用該消息來進(jìn)行同步產(chǎn)品的操作已構(gòu)成兩種形式。以這種方式,整個(gè)web應(yīng)用程
序的模式是由FSM的組合物建模組成。
據(jù)我們所知,已經(jīng)有一些Web應(yīng)用的建模和測試技術(shù)被提出,每一種都有不同的起源,在處理Web應(yīng)用的獨(dú)特性時(shí)追求不同的目標(biāo)。
導(dǎo)航模型如使用狀態(tài)圖表示法。他們建立Web導(dǎo)航模型,當(dāng)用戶通過Web應(yīng)用程序時(shí),網(wǎng)頁元素與它們進(jìn)行交互。然而,這與服務(wù)器端的行為是無關(guān)的。
安德魯斯等人提出了一種從有限狀態(tài)機(jī)導(dǎo)出測試的方法。生成基于有限狀態(tài)機(jī)的測試序列,他們嘗試?yán)幂斎爰s束來限制狀態(tài)空間的爆炸。這種方法將整個(gè)Web應(yīng)用分為幾個(gè)子系統(tǒng),然后要求在有限狀態(tài)機(jī)的狀態(tài)序列下生成測試。這種方法也是來自用戶視圖。
在擴(kuò)展有限狀態(tài)機(jī)的構(gòu)造函數(shù)來適應(yīng)其需求之后,使用有限狀態(tài)機(jī)的Web應(yīng)用程序的行為模型。它解決了設(shè)計(jì)方面的問題,而不是實(shí)施的問題。此外,沒有考慮與服務(wù)器的進(jìn)行交互。
在本文中,客戶端和服務(wù)器端的行為都被考慮在內(nèi),使用有限狀態(tài)機(jī)分別在客戶端和服務(wù)器端建立Web應(yīng)用模型。
Web應(yīng)用廣泛應(yīng)用在我們的日常生活中,現(xiàn)有的Web應(yīng)用建模和測試的研究幾乎都是建立在外部或用戶視圖的,不考慮服務(wù)器端的交互行為。本文中,我們利用有限狀態(tài)機(jī)建立客戶端和服務(wù)器端的Web應(yīng)用模型。由于客戶端通過發(fā)送消息請求和響應(yīng)來與服務(wù)器進(jìn)行交互或通信,因此,采用同步產(chǎn)品來完成客戶端與服務(wù)器端的模型組成。最終,基于組合模型,測試生成。
基金項(xiàng)目:國家自然科學(xué)基金面向項(xiàng)目,項(xiàng)目編號:61572268,基于云計(jì)算和MapReduce的區(qū)域醫(yī)療大數(shù)據(jù)分析關(guān)鍵技術(shù)研究;山東省自然科學(xué)基金,項(xiàng)目編號:ZR2011FL010,基于模型的Web應(yīng)用測試與驗(yàn)證方法研究。