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


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