摘要:隨著Web應(yīng)用軟件的快速發(fā)展,作為保證Web軟件正確性和可靠性的重要手段,Web應(yīng)用軟件測(cè)試受到了人們?cè)絹?lái)越多的重視。文章從web軟件體系結(jié)構(gòu)出發(fā),分析了Web軟件測(cè)試的主要特點(diǎn)和難點(diǎn),指出了傳統(tǒng)軟件測(cè)試與Web軟件測(cè)試之間的差別。總結(jié)了Web軟件測(cè)試的內(nèi)容和方法。這些對(duì)于提高和改善Web軟件的質(zhì)量具有指導(dǎo)意義。
關(guān)鍵詞:Web;軟件游覽;體系結(jié)構(gòu);方法
0 引言
隨著Intemet的普及和電子商務(wù)應(yīng)用的深入。Web應(yīng)用程序得到越來(lái)越廣泛的應(yīng)用,B/$架構(gòu)也逐漸代替C/S架構(gòu)成為主流的應(yīng)用模式。與傳統(tǒng)軟件相比,Web應(yīng)用程序具有分布式、并發(fā)、多用戶異構(gòu)等特點(diǎn),這些特點(diǎn)對(duì)軟件測(cè)試提出了新的要求。Web測(cè)試是保證Web應(yīng)用程序質(zhì)量的有效手段,目前在Web測(cè)試的方法和技術(shù)以及相關(guān)工具等方面的研究已進(jìn)行了一些嘗試。軟件測(cè)試的自動(dòng)化技術(shù)有助于開(kāi)發(fā)出更高質(zhì)量的產(chǎn)品,并且可以節(jié)省開(kāi)發(fā)時(shí)間和開(kāi)支。
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ā)展起來(lái)的新型體系結(jié)構(gòu)。B/S結(jié)構(gòu)利用不斷成熟和普及的瀏覽器技術(shù)實(shí)現(xiàn)原來(lái)需要復(fù)雜專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能。是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。這種結(jié)構(gòu)已成為當(dāng)今應(yīng)用軟件開(kāi)發(fā)的首選體系結(jié)構(gòu)。
Web系統(tǒng)的基本工作過(guò)程是:在客戶端,用戶通過(guò)瀏覽器向Web服務(wù)器中的控制模塊和應(yīng)用程序輸入查詢要求,Web服務(wù)器將用戶的數(shù)據(jù)請(qǐng)求提交給數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS;在服務(wù)器端,數(shù)據(jù)庫(kù)服務(wù)器將查詢的結(jié)果返回給Web服務(wù)器,再以網(wǎng)頁(yè)的形式發(fā)回給客戶端。在此過(guò)程中,對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)要通過(guò)Web服務(wù)器來(lái)執(zhí)行。Web系統(tǒng)的基本體系結(jié)構(gòu)及工作過(guò)程如圖1所示。
從上面的體系結(jié)構(gòu)可以看出,Web測(cè)試應(yīng)該分為三個(gè)層次,客戶端測(cè)試、服務(wù)器端測(cè)試和數(shù)據(jù)庫(kù)測(cè)試。客戶端主要測(cè)試用戶瀏覽器的基本功能和頁(yè)面現(xiàn)實(shí)情況;服務(wù)器端主要測(cè)試用戶請(qǐng)求響應(yīng)情況;數(shù)據(jù)庫(kù)端主要測(cè)試數(shù)據(jù)一致性和輸出錯(cuò)誤。
2 Web軟件測(cè)試的主要特點(diǎn)與難點(diǎn)
Web軟件由于其分布式應(yīng)用、具有各種運(yùn)行時(shí)行為、涉及多種標(biāo)準(zhǔn)協(xié)議,可能在硬件、軟件、通信、對(duì)象管理等環(huán)節(jié)出現(xiàn)各種缺陷。其體系結(jié)構(gòu)和應(yīng)用的復(fù)雜性,以及技術(shù)和規(guī)范不斷地發(fā)生變化,對(duì)測(cè)試提出了新的挑戰(zhàn)。Web軟件測(cè)試的特點(diǎn)與難點(diǎn)主要體現(xiàn)在以下幾個(gè)方面:
(1)Web軟件的開(kāi)發(fā)環(huán)境與其應(yīng)用環(huán)境有很大的不同,在發(fā)布之前,很難對(duì)其實(shí)際的運(yùn)行場(chǎng)景進(jìn)行預(yù)測(cè),如用戶類型、并發(fā)用戶數(shù)量、Web服務(wù)調(diào)用的裝載模式和訪問(wèn)方式等,這些差異和應(yīng)用的不確定性都增加了Web服務(wù)測(cè)試的困難。
(2)Web軟件測(cè)試主要基于軟件接口進(jìn)行設(shè)計(jì)和實(shí)現(xiàn),因此必須采用自動(dòng)化測(cè)試方法,與傳統(tǒng)的需要大量人工干預(yù)的測(cè)試方法截然不同。
(3)Web軟件由于其分布特征,會(huì)出現(xiàn)大量用戶通過(guò)不同的環(huán)境訪問(wèn)同一個(gè)服務(wù)的情形,因此,性能和可擴(kuò)展性是Web軟件測(cè)試的重要方面。
(4)Web軟件及軟件集成的發(fā)布、發(fā)現(xiàn)和綁定都是動(dòng)態(tài)完成的,其過(guò)程的不確定性和不可見(jiàn)性增加了測(cè)試難度。
(5)Web軟件訪問(wèn)接口和訪問(wèn)方法發(fā)布后增加了Web軟件的安全隱患,提高了被系統(tǒng)攻擊的機(jī)會(huì)。此外,對(duì)于所調(diào)用的分散、異構(gòu)的外部Web服務(wù)的安全性的管理也非常困難。如何提高Web軟件的安全性也是測(cè)試者要考慮的重要問(wèn)題。
(6)Web軟件的應(yīng)用通常涉及到軟件提供者、發(fā)布者和使用者三種角色,都需要參與到測(cè)試的不同階段,其分布式合作的特征使得測(cè)試的組織、缺陷管理、結(jié)果評(píng)估等活動(dòng)都更加困難。
目前。針對(duì)Web軟件的測(cè)試方法和技術(shù)的研究還處于初始階段,代表性的研究主要有基于形式化方法對(duì)協(xié)議及規(guī)格說(shuō)明的驗(yàn)證(如WSFL驗(yàn)證技術(shù)、SOAP驗(yàn)證)和Web服務(wù)的集成測(cè)試。
3 傳統(tǒng)軟件測(cè)試與Web軟件測(cè)試
傳統(tǒng)軟件測(cè)試經(jīng)常是靜態(tài)、離線的測(cè)試,盡管這些傳統(tǒng)的測(cè)試技術(shù)也可以應(yīng)用到Web服務(wù)的測(cè)試當(dāng)中,然而相當(dāng)有意義的一部分Web軟件測(cè)試都必須是動(dòng)態(tài)的和在運(yùn)行時(shí)間內(nèi)的即時(shí)測(cè)試。Web軟件這種動(dòng)態(tài)和即時(shí)測(cè)試對(duì)傳統(tǒng)的測(cè)試?yán)碚撎岢隽诵碌奶魬?zhàn)和要求。表1比較了傳統(tǒng)軟件和Web軟件測(cè)試的差別。
4 Web軟件測(cè)試的內(nèi)容和方法
Web測(cè)試主要目標(biāo)是確保提交高質(zhì)量的Web軟件。對(duì)于錯(cuò)綜復(fù)雜的Web軟件,從什么地方開(kāi)始測(cè)試。哪些方面是測(cè)試的核心,有限的測(cè)試資源如何分配,這些都是Web軟件測(cè)試需要重點(diǎn)考慮的問(wèn)題。下面介紹Web軟件測(cè)試的主要內(nèi)容和方法。
4.1 功能測(cè)試
鏈接測(cè)試 鏈接是Web應(yīng)用系統(tǒng)的一個(gè)主要特征,它是在頁(yè)面之間切換和指導(dǎo)用戶去一些不知道地址的頁(yè)面的主要手段。鏈接測(cè)試可分為三個(gè)方面:①測(cè)試所有鏈接是否按指示的那樣確實(shí)鏈接到了該鏈接的頁(yè)面。②測(cè)試所鏈接的頁(yè)面是否存在。③測(cè)試Web應(yīng)用系統(tǒng)上有無(wú)孤立的頁(yè)面。所謂孤立頁(yè)面是指沒(méi)有鏈接指向的頁(yè)面,只有知道正確的URL地址才能訪問(wèn)。


表單測(cè)試 單元當(dāng)用戶給Web應(yīng)用系統(tǒng)管理員提交信息時(shí),就需要使用表單操作。例如用戶注冊(cè)、登陸、信息提交等。在這種情況下,我們必須測(cè)試提交操作的完整性,以校驗(yàn)提交給服務(wù)器的信息的正確性。例如:用戶填寫的出生日期與職業(yè)是否恰當(dāng),填寫的所屬省份與所在城市是否匹配等。
Cookies潮試Cookies通常用來(lái)存儲(chǔ)用戶信息和用戶在某應(yīng)用系統(tǒng)的操作。當(dāng)一個(gè)用戶使用Cookies訪問(wèn)了某一個(gè)應(yīng)用系統(tǒng)時(shí),Web服務(wù)器將發(fā)送用戶的信息,把該信息以Cookies的形式存儲(chǔ)在客戶端計(jì)算機(jī)上,這可用來(lái)創(chuàng)建動(dòng)態(tài)和自定義頁(yè)面或者存儲(chǔ)登錄等信息。如果Web應(yīng)用系統(tǒng)使用了Cookies。就必須檢查Cookies是否能正常工作而且對(duì)存儲(chǔ)的信息已經(jīng)加密。測(cè)試的內(nèi)容可包括Cookies是否起作用,是否按預(yù)定的時(shí)間進(jìn)行保存,刷新對(duì)Cookies有什么影響等。
設(shè)計(jì)語(yǔ)言測(cè)試 Web設(shè)計(jì)語(yǔ)言版本的差異,例如使用不同版本的HTML等,可以引起客戶端或服務(wù)器端嚴(yán)重的問(wèn)題。在分布式開(kāi)發(fā)環(huán)境中,開(kāi)發(fā)人員都不在一起,這個(gè)問(wèn)題就顯得尤為重要。除了HTML的版本問(wèn)題外,不同的腳本語(yǔ)言,例如Java、JavaSeript、ActiveX、VBScript或Perl等也要進(jìn)行驗(yàn)證。
數(shù)據(jù)庫(kù)測(cè)試 數(shù)據(jù)庫(kù)為Web應(yīng)用系統(tǒng)的管理、運(yùn)行、查詢和實(shí)現(xiàn)用戶對(duì)數(shù)據(jù)存儲(chǔ)的請(qǐng)求等提供空間。在使用了數(shù)據(jù)庫(kù)的Web應(yīng)用系統(tǒng)中,一般情況下,可能發(fā)生兩種錯(cuò)誤,分別是數(shù)據(jù)一致性錯(cuò)誤和輸出錯(cuò)誤。數(shù)據(jù)一致性錯(cuò)誤主要是由于用戶提交的表單信息不正確而造成的,而輸出錯(cuò)誤主要是由于網(wǎng)絡(luò)速度或程序設(shè)計(jì)問(wèn)題等引起的。針對(duì)這兩種情況,可分別進(jìn)行測(cè)試。
4.2 性能測(cè)試
網(wǎng)站的性能測(cè)試對(duì)于網(wǎng)站的運(yùn)行而言異常重要,但是目前對(duì)于網(wǎng)站的性能測(cè)試做得不夠,我們?cè)谶M(jìn)行系統(tǒng)設(shè)計(jì)時(shí)也沒(méi)有一個(gè)很好的基準(zhǔn)可以參考,因而建立一整套網(wǎng)站的性能測(cè)試方案將是至關(guān)重要的。
連接速度測(cè)試 用戶連接到Web應(yīng)用系統(tǒng)的速度根據(jù)上網(wǎng)方式的變化而變化,他們或許是電話撥號(hào),或是寬帶上網(wǎng)。當(dāng)下載一個(gè)程序時(shí),用戶可以等較長(zhǎng)的時(shí)間,但如果僅僅訪問(wèn)一個(gè)頁(yè)面就不會(huì)這樣。連接速度太慢。還可能引起數(shù)據(jù)丟失,使用戶得不到真實(shí)的頁(yè)面。
負(fù)載測(cè)試 負(fù)載測(cè)試是為了測(cè)量Web系統(tǒng)在某一負(fù)載級(jí)別上的性能,以保證Web系統(tǒng)在需求范圍內(nèi)能正常工作。負(fù)載級(jí)別可以是某個(gè)時(shí)刻同時(shí)訪問(wèn)Web系統(tǒng)的用戶數(shù)量,也可以是在線數(shù)據(jù)處理的數(shù)量。例如:Web應(yīng)用系統(tǒng)能允許多少個(gè)用戶同時(shí)在線;如果超過(guò)了這個(gè)數(shù)量,會(huì)出現(xiàn)什么現(xiàn)象。
壓力測(cè)試 壓力測(cè)試是指實(shí)際破壞一個(gè)Web應(yīng)用系統(tǒng),測(cè)試系統(tǒng)的反映。壓力測(cè)試是測(cè)試系統(tǒng)的限制和故障恢復(fù)能力,也就是測(cè)試Web應(yīng)用系統(tǒng)會(huì)不會(huì)崩潰,在什么情況下會(huì)崩潰。黑客常常提供錯(cuò)誤的數(shù)據(jù)負(fù)載,直到Web應(yīng)用系統(tǒng)崩潰,接著當(dāng)系統(tǒng)重新啟動(dòng)時(shí)獲得存取權(quán)。
4.3接口測(cè)試
服務(wù)器接口 第一個(gè)需要測(cè)試的接口是瀏覽器與服務(wù)器的接口。測(cè)試方式一般是,測(cè)試人員提交事務(wù),然后查看服務(wù)器記錄,并驗(yàn)證在瀏覽器上看到的正好是服務(wù)器上發(fā)生的。測(cè)試人員還可以查詢數(shù)據(jù)庫(kù),確認(rèn)事務(wù)數(shù)據(jù)已正確保存。
外部接口有些Web系統(tǒng)有外部接口,例如,網(wǎng)上商店可能要實(shí)時(shí)驗(yàn)證信用卡數(shù)據(jù)以減少欺詐行為的發(fā)生,測(cè)試的時(shí)候,要使用Web接口發(fā)送一些事務(wù)數(shù)據(jù),分別對(duì)有效信用卡、無(wú)效信用卡和被盜信用卡進(jìn)行驗(yàn)證。
錯(cuò)誤處理 最容易被測(cè)試人員忽略的地方是接口錯(cuò)誤處理。通常我們?cè)噲D確認(rèn)系統(tǒng)能夠處理所有錯(cuò)誤,但卻無(wú)法預(yù)期系統(tǒng)所有可能的錯(cuò)誤。為此,可以嘗試在處理過(guò)程中中斷事務(wù),看看會(huì)發(fā)生什么情況,訂單是否完成,嘗試中斷用戶到服務(wù)器的網(wǎng)絡(luò)連接,系統(tǒng)能否正確處理這些錯(cuò)誤。
4.4 兼容性測(cè)試
平臺(tái)測(cè)試市場(chǎng)上有很多不同類型的操作系統(tǒng),最常見(jiàn)的有Windows、Unix、Macintosh、Linux等。Web應(yīng)用系統(tǒng)的最終用戶究竟使用哪一種操作系統(tǒng),取決于用戶系統(tǒng)的配置。這樣,就可能會(huì)發(fā)生兼容性問(wèn)題,同一個(gè)應(yīng)用可能在某些操作系統(tǒng)下能正常運(yùn)行,但在另外的操作系統(tǒng)下運(yùn)行可能會(huì)失敗。因此,在Web系統(tǒng)發(fā)布之前,需要在各種操作系統(tǒng)下對(duì)其進(jìn)行兼容性測(cè)試。
瀏覽器測(cè)試 瀏覽器是Web客戶端最核心的構(gòu)件。來(lái)自不同廠商的瀏覽器對(duì)JavadavaScript、ActiveX或不同的HTlML規(guī)格有不同的支持,例如,ActiveX是Microsoft的產(chǎn)品,是為Intemet Explorer而設(shè)計(jì)的,JavaScript是Netscape的產(chǎn)品,Java是Sun的產(chǎn)品等等。測(cè)試瀏覽器兼容性的一個(gè)方法是創(chuàng)建一個(gè)兼容性矩陣,在這個(gè)矩陣中,測(cè)試不同廠商、不同版本的瀏覽器對(duì)某些構(gòu)件和設(shè)置的適應(yīng)性。
4.5 安全測(cè)試
景登 現(xiàn)在的Web應(yīng)用系統(tǒng)基本采用先注冊(cè),后登錄的方式,因此,必須測(cè)試有效和無(wú)效的用戶名和密碼。要注意到系統(tǒng)是否對(duì)大小寫敏感,可以試行登錄多少次,是否可以不登錄而直接瀏覽某個(gè)頁(yè)面等。
日志文件為了保證Web應(yīng)用系統(tǒng)的安全性,日志文件是至關(guān)重要的。需要測(cè)試相關(guān)信息是否寫進(jìn)了日志文件、是否可追蹤。
安全漏洞 服務(wù)器端的腳本常常構(gòu)成安全漏洞,這些漏洞又常常被黑客利用。所以,還要測(cè)試沒(méi)有經(jīng)過(guò)授權(quán),就不能在服務(wù)器端放置和編輯腳本的問(wèn)題。
5 結(jié)束語(yǔ)
一般軟件的發(fā)布周期以月或年計(jì)算。而Web應(yīng)用軟件的發(fā)布周期以天甚至以小時(shí)計(jì)算。Web測(cè)試人員必須處理更短的發(fā)布周期,他們面臨著從測(cè)試傳統(tǒng)的C/S結(jié)構(gòu)和框架環(huán)境到測(cè)試快速改變的Web應(yīng)用系統(tǒng)的轉(zhuǎn)變?;赪eb的系統(tǒng)測(cè)試與傳統(tǒng)的軟件測(cè)試不同,它不但需要檢查和驗(yàn)證系統(tǒng)是否按照設(shè)計(jì)要求運(yùn)行,而且還要測(cè)試系統(tǒng)在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進(jìn)行安全性和可用性測(cè)試。因此,我們必須為測(cè)試和評(píng)估復(fù)雜的基于Web的系統(tǒng)軟件研究新的方法和技術(shù)。