摘要:隨著Web應(yīng)用軟件的快速發(fā)展,作為保證Web軟件正確性和可靠性的重要手段,Web應(yīng)用軟件測試受到了人們越來越多的重視。文章從web軟件體系結(jié)構(gòu)出發(fā),分析了Web軟件測試的主要特點和難點,指出了傳統(tǒng)軟件測試與Web軟件測試之間的差別??偨Y(jié)了Web軟件測試的內(nèi)容和方法。這些對于提高和改善Web軟件的質(zhì)量具有指導(dǎo)意義。
關(guān)鍵詞:Web;軟件游覽;體系結(jié)構(gòu);方法
0 引言
隨著Intemet的普及和電子商務(wù)應(yīng)用的深入。Web應(yīng)用程序得到越來越廣泛的應(yīng)用,B/$架構(gòu)也逐漸代替C/S架構(gòu)成為主流的應(yīng)用模式。與傳統(tǒng)軟件相比,Web應(yīng)用程序具有分布式、并發(fā)、多用戶異構(gòu)等特點,這些特點對軟件測試提出了新的要求。Web測試是保證Web應(yīng)用程序質(zhì)量的有效手段,目前在Web測試的方法和技術(shù)以及相關(guān)工具等方面的研究已進(jìn)行了一些嘗試。軟件測試的自動化技術(shù)有助于開發(fā)出更高質(zhì)量的產(chǎn)品,并且可以節(jié)省開發(fā)時間和開支。
1 Web軟件體系結(jié)構(gòu)
Web應(yīng)用程序采用B/S結(jié)構(gòu),它是伴隨著Intemet技術(shù)的不斷進(jìn)步,由C/S結(jié)構(gòu)改進(jìn)和發(fā)展起來的新型體系結(jié)構(gòu)。B/S結(jié)構(gòu)利用不斷成熟和普及的瀏覽器技術(shù)實現(xiàn)原來需要復(fù)雜專用軟件才能實現(xiàn)的強(qiáng)大功能。是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。這種結(jié)構(gòu)已成為當(dāng)今應(yīng)用軟件開發(fā)的首選體系結(jié)構(gòu)。
Web系統(tǒng)的基本工作過程是:在客戶端,用戶通過瀏覽器向Web服務(wù)器中的控制模塊和應(yīng)用程序輸入查詢要求,Web服務(wù)器將用戶的數(shù)據(jù)請求提交給數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫管理系統(tǒng)DBMS;在服務(wù)器端,數(shù)據(jù)庫服務(wù)器將查詢的結(jié)果返回給Web服務(wù)器,再以網(wǎng)頁的形式發(fā)回給客戶端。在此過程中,對數(shù)據(jù)庫的訪問要通過Web服務(wù)器來執(zhí)行。Web系統(tǒng)的基本體系結(jié)構(gòu)及工作過程如圖1所示。
從上面的體系結(jié)構(gòu)可以看出,Web測試應(yīng)該分為三個層次,客戶端測試、服務(wù)器端測試和數(shù)據(jù)庫測試??蛻舳酥饕獪y試用戶瀏覽器的基本功能和頁面現(xiàn)實情況;服務(wù)器端主要測試用戶請求響應(yīng)情況;數(shù)據(jù)庫端主要測試數(shù)據(jù)一致性和輸出錯誤。
2 Web軟件測試的主要特點與難點
Web軟件由于其分布式應(yīng)用、具有各種運(yùn)行時行為、涉及多種標(biāo)準(zhǔn)協(xié)議,可能在硬件、軟件、通信、對象管理等環(huán)節(jié)出現(xiàn)各種缺陷。其體系結(jié)構(gòu)和應(yīng)用的復(fù)雜性,以及技術(shù)和規(guī)范不斷地發(fā)生變化,對測試提出了新的挑戰(zhàn)。Web軟件測試的特點與難點主要體現(xiàn)在以下幾個方面:
(1)Web軟件的開發(fā)環(huán)境與其應(yīng)用環(huán)境有很大的不同,在發(fā)布之前,很難對其實際的運(yùn)行場景進(jìn)行預(yù)測,如用戶類型、并發(fā)用戶數(shù)量、Web服務(wù)調(diào)用的裝載模式和訪問方式等,這些差異和應(yīng)用的不確定性都增加了Web服務(wù)測試的困難。
(2)Web軟件測試主要基于軟件接口進(jìn)行設(shè)計和實現(xiàn),因此必須采用自動化測試方法,與傳統(tǒng)的需要大量人工干預(yù)的測試方法截然不同。
(3)Web軟件由于其分布特征,會出現(xiàn)大量用戶通過不同的環(huán)境訪問同一個服務(wù)的情形,因此,性能和可擴(kuò)展性是Web軟件測試的重要方面。
(4)Web軟件及軟件集成的發(fā)布、發(fā)現(xiàn)和綁定都是動態(tài)完成的,其過程的不確定性和不可見性增加了測試難度。
(5)Web軟件訪問接口和訪問方法發(fā)布后增加了Web軟件的安全隱患,提高了被系統(tǒng)攻擊的機(jī)會。此外,對于所調(diào)用的分散、異構(gòu)的外部Web服務(wù)的安全性的管理也非常困難。如何提高Web軟件的安全性也是測試者要考慮的重要問題。
(6)Web軟件的應(yīng)用通常涉及到軟件提供者、發(fā)布者和使用者三種角色,都需要參與到測試的不同階段,其分布式合作的特征使得測試的組織、缺陷管理、結(jié)果評估等活動都更加困難。
目前。針對Web軟件的測試方法和技術(shù)的研究還處于初始階段,代表性的研究主要有基于形式化方法對協(xié)議及規(guī)格說明的驗證(如WSFL驗證技術(shù)、SOAP驗證)和Web服務(wù)的集成測試。
3 傳統(tǒng)軟件測試與Web軟件測試
傳統(tǒng)軟件測試經(jīng)常是靜態(tài)、離線的測試,盡管這些傳統(tǒng)的測試技術(shù)也可以應(yīng)用到Web服務(wù)的測試當(dāng)中,然而相當(dāng)有意義的一部分Web軟件測試都必須是動態(tài)的和在運(yùn)行時間內(nèi)的即時測試。Web軟件這種動態(tài)和即時測試對傳統(tǒng)的測試?yán)碚撎岢隽诵碌奶魬?zhàn)和要求。表1比較了傳統(tǒng)軟件和Web軟件測試的差別。
4 Web軟件測試的內(nèi)容和方法
Web測試主要目標(biāo)是確保提交高質(zhì)量的Web軟件。對于錯綜復(fù)雜的Web軟件,從什么地方開始測試。哪些方面是測試的核心,有限的測試資源如何分配,這些都是Web軟件測試需要重點考慮的問題。下面介紹Web軟件測試的主要內(nèi)容和方法。
4.1 功能測試
鏈接測試 鏈接是Web應(yīng)用系統(tǒng)的一個主要特征,它是在頁面之間切換和指導(dǎo)用戶去一些不知道地址的頁面的主要手段。鏈接測試可分為三個方面:①測試所有鏈接是否按指示的那樣確實鏈接到了該鏈接的頁面。②測試所鏈接的頁面是否存在。③測試Web應(yīng)用系統(tǒng)上有無孤立的頁面。所謂孤立頁面是指沒有鏈接指向的頁面,只有知道正確的URL地址才能訪問。
表單測試 單元當(dāng)用戶給Web應(yīng)用系統(tǒng)管理員提交信息時,就需要使用表單操作。例如用戶注冊、登陸、信息提交等。在這種情況下,我們必須測試提交操作的完整性,以校驗提交給服務(wù)器的信息的正確性。例如:用戶填寫的出生日期與職業(yè)是否恰當(dāng),填寫的所屬省份與所在城市是否匹配等。
Cookies潮試Cookies通常用來存儲用戶信息和用戶在某應(yīng)用系統(tǒng)的操作。當(dāng)一個用戶使用Cookies訪問了某一個應(yīng)用系統(tǒng)時,Web服務(wù)器將發(fā)送用戶的信息,把該信息以Cookies的形式存儲在客戶端計算機(jī)上,這可用來創(chuàng)建動態(tài)和自定義頁面或者存儲登錄等信息。如果Web應(yīng)用系統(tǒng)使用了Cookies。就必須檢查Cookies是否能正常工作而且對存儲的信息已經(jīng)加密。測試的內(nèi)容可包括Cookies是否起作用,是否按預(yù)定的時間進(jìn)行保存,刷新對Cookies有什么影響等。
設(shè)計語言測試 Web設(shè)計語言版本的差異,例如使用不同版本的HTML等,可以引起客戶端或服務(wù)器端嚴(yán)重的問題。在分布式開發(fā)環(huán)境中,開發(fā)人員都不在一起,這個問題就顯得尤為重要。除了HTML的版本問題外,不同的腳本語言,例如Java、JavaSeript、ActiveX、VBScript或Perl等也要進(jìn)行驗證。
數(shù)據(jù)庫測試 數(shù)據(jù)庫為Web應(yīng)用系統(tǒng)的管理、運(yùn)行、查詢和實現(xiàn)用戶對數(shù)據(jù)存儲的請求等提供空間。在使用了數(shù)據(jù)庫的Web應(yīng)用系統(tǒng)中,一般情況下,可能發(fā)生兩種錯誤,分別是數(shù)據(jù)一致性錯誤和輸出錯誤。數(shù)據(jù)一致性錯誤主要是由于用戶提交的表單信息不正確而造成的,而輸出錯誤主要是由于網(wǎng)絡(luò)速度或程序設(shè)計問題等引起的。針對這兩種情況,可分別進(jìn)行測試。
4.2 性能測試
網(wǎng)站的性能測試對于網(wǎng)站的運(yùn)行而言異常重要,但是目前對于網(wǎng)站的性能測試做得不夠,我們在進(jìn)行系統(tǒng)設(shè)計時也沒有一個很好的基準(zhǔn)可以參考,因而建立一整套網(wǎng)站的性能測試方案將是至關(guān)重要的。
連接速度測試 用戶連接到Web應(yīng)用系統(tǒng)的速度根據(jù)上網(wǎng)方式的變化而變化,他們或許是電話撥號,或是寬帶上網(wǎng)。當(dāng)下載一個程序時,用戶可以等較長的時間,但如果僅僅訪問一個頁面就不會這樣。連接速度太慢。還可能引起數(shù)據(jù)丟失,使用戶得不到真實的頁面。
負(fù)載測試 負(fù)載測試是為了測量Web系統(tǒng)在某一負(fù)載級別上的性能,以保證Web系統(tǒng)在需求范圍內(nèi)能正常工作。負(fù)載級別可以是某個時刻同時訪問Web系統(tǒng)的用戶數(shù)量,也可以是在線數(shù)據(jù)處理的數(shù)量。例如:Web應(yīng)用系統(tǒng)能允許多少個用戶同時在線;如果超過了這個數(shù)量,會出現(xiàn)什么現(xiàn)象。
壓力測試 壓力測試是指實際破壞一個Web應(yīng)用系統(tǒng),測試系統(tǒng)的反映。壓力測試是測試系統(tǒng)的限制和故障恢復(fù)能力,也就是測試Web應(yīng)用系統(tǒng)會不會崩潰,在什么情況下會崩潰。黑客常常提供錯誤的數(shù)據(jù)負(fù)載,直到Web應(yīng)用系統(tǒng)崩潰,接著當(dāng)系統(tǒng)重新啟動時獲得存取權(quán)。
4.3接口測試
服務(wù)器接口 第一個需要測試的接口是瀏覽器與服務(wù)器的接口。測試方式一般是,測試人員提交事務(wù),然后查看服務(wù)器記錄,并驗證在瀏覽器上看到的正好是服務(wù)器上發(fā)生的。測試人員還可以查詢數(shù)據(jù)庫,確認(rèn)事務(wù)數(shù)據(jù)已正確保存。
外部接口有些Web系統(tǒng)有外部接口,例如,網(wǎng)上商店可能要實時驗證信用卡數(shù)據(jù)以減少欺詐行為的發(fā)生,測試的時候,要使用Web接口發(fā)送一些事務(wù)數(shù)據(jù),分別對有效信用卡、無效信用卡和被盜信用卡進(jìn)行驗證。
錯誤處理 最容易被測試人員忽略的地方是接口錯誤處理。通常我們試圖確認(rèn)系統(tǒng)能夠處理所有錯誤,但卻無法預(yù)期系統(tǒng)所有可能的錯誤。為此,可以嘗試在處理過程中中斷事務(wù),看看會發(fā)生什么情況,訂單是否完成,嘗試中斷用戶到服務(wù)器的網(wǎng)絡(luò)連接,系統(tǒng)能否正確處理這些錯誤。
4.4 兼容性測試
平臺測試市場上有很多不同類型的操作系統(tǒng),最常見的有Windows、Unix、Macintosh、Linux等。Web應(yīng)用系統(tǒng)的最終用戶究竟使用哪一種操作系統(tǒng),取決于用戶系統(tǒng)的配置。這樣,就可能會發(fā)生兼容性問題,同一個應(yīng)用可能在某些操作系統(tǒng)下能正常運(yùn)行,但在另外的操作系統(tǒng)下運(yùn)行可能會失敗。因此,在Web系統(tǒng)發(fā)布之前,需要在各種操作系統(tǒng)下對其進(jìn)行兼容性測試。
瀏覽器測試 瀏覽器是Web客戶端最核心的構(gòu)件。來自不同廠商的瀏覽器對JavadavaScript、ActiveX或不同的HTlML規(guī)格有不同的支持,例如,ActiveX是Microsoft的產(chǎn)品,是為Intemet Explorer而設(shè)計的,JavaScript是Netscape的產(chǎn)品,Java是Sun的產(chǎn)品等等。測試瀏覽器兼容性的一個方法是創(chuàng)建一個兼容性矩陣,在這個矩陣中,測試不同廠商、不同版本的瀏覽器對某些構(gòu)件和設(shè)置的適應(yīng)性。
4.5 安全測試
景登 現(xiàn)在的Web應(yīng)用系統(tǒng)基本采用先注冊,后登錄的方式,因此,必須測試有效和無效的用戶名和密碼。要注意到系統(tǒng)是否對大小寫敏感,可以試行登錄多少次,是否可以不登錄而直接瀏覽某個頁面等。
日志文件為了保證Web應(yīng)用系統(tǒng)的安全性,日志文件是至關(guān)重要的。需要測試相關(guān)信息是否寫進(jìn)了日志文件、是否可追蹤。
安全漏洞 服務(wù)器端的腳本常常構(gòu)成安全漏洞,這些漏洞又常常被黑客利用。所以,還要測試沒有經(jīng)過授權(quán),就不能在服務(wù)器端放置和編輯腳本的問題。
5 結(jié)束語
一般軟件的發(fā)布周期以月或年計算。而Web應(yīng)用軟件的發(fā)布周期以天甚至以小時計算。Web測試人員必須處理更短的發(fā)布周期,他們面臨著從測試傳統(tǒng)的C/S結(jié)構(gòu)和框架環(huán)境到測試快速改變的Web應(yīng)用系統(tǒng)的轉(zhuǎn)變?;赪eb的系統(tǒng)測試與傳統(tǒng)的軟件測試不同,它不但需要檢查和驗證系統(tǒng)是否按照設(shè)計要求運(yùn)行,而且還要測試系統(tǒng)在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進(jìn)行安全性和可用性測試。因此,我們必須為測試和評估復(fù)雜的基于Web的系統(tǒng)軟件研究新的方法和技術(shù)。