複製鏈接
請複製以下鏈接發送給好友

Web測試

鎖定
Web測試是軟件測試的一部分,是針對Web應用的一類測試。由於Web應用與用户直接相關,又通常需要承受長時間的大量操作,因此Web項目的功能和性能都必須經過可靠的驗證。通過測試可以儘可能地多發現瀏覽器端和服務器端程序中的錯誤並及時加以修正,以保證應用的質量。由於Web具有分佈、異構、併發和平台無關的特性,因而它的測試要比普通程序複雜的多。
中文名
web測試
外文名
web test
測試類型
內容測試、界面測試等
目    的
評價web應用性能
測試工具
Selenium等
所屬學科
軟件工程

Web測試簡介

隨着網絡技術的迅速發展,尤其是Web及其應用程序的普及,各類基於Web的應用程序以其方便、快速、易操作等特點不斷成為軟件開發的重點。Web以其廣泛性、交互性和易用性等特點迅速風靡世界,網頁數量正以幾何數量級飛速增長。能夠吸引儘可能多的用户並對其長時間關注是網站追求的主要目標,也是衡量一個網站是否成功的主要指標,這就對網頁功能的正確性、有效性和完善性提出了較高的要求,從而測試就成為應用開發過程中的一個重要環節。
目前可以見到各種Web服務器平台,然而根據Mereur的研究報告,98%的Web服務器都沒能達到人們所期望的性能,平均只能發揮人們所期望性能的1/6左右。Web性能測試能夠確定影響Web服務器性能的關鍵因素,從而可以有針對性地進行分析和改進,避免Web服務器研究和優化過程中的盲目行為;同時,它也是選取不同的Web服務器的重要參考。
隨着Web應用程序使用越來越廣泛,針對其性能測試的要求也越來越多,然而由於Web程序綜合了大量的新技術,諸如HTMLJavaJavaScriptVBScript等,同時它還依賴很多其他的因素,比如LinkDatabaseNetwork等,使得Web應用程序測試變得非常複雜 [1] 

Web測試測試指標

1.通用指標
通用指標是指Web應用服務器、數據庫服務器必需測試項,包括:
(1)處理器時間:指服務器CPU佔用率,一般平均達到70%時,服務就接近飽和。
(2)可用內存數:如果測試時發現內存有變化情況也要注意,如果是內存泄露則比較嚴重。
(3)物理磁盤讀寫時間。
2.Web服務器指標
(1)平均每秒響應次數為總請求時間與秒數之比。
(2)平均每秒業務腳本的迭代次數。
(3)成功的請求和失敗的請求。
(4)成功的點擊次數和失敗的點擊次數。
(5)每秒點擊次數、每秒成功的點擊次數和每秒失敗的點擊次數。
(6)嘗試連接數。
(1)用户連接數,也就是數據庫的連接數量。
(2)數據庫死鎖量。
(3)數據庫緩存的命中情況。
以上指標只是一些通用指標,對於不同的應用還需作相應的調整,比如程序使用的是.NET技術,則必須加入一些針對性的測試指標。對於這些指標的詳細瞭解,可以參考Windows下面的System Monitor的幫助與Load Runner和ACT的幫助。 [1] 

Web測試測試計劃

當明確了測試的目的之後,真正開始針對一個Web應用程序進行測試的時候,需要制定一套詳細的測試計劃,這樣才能順利地完成所有的測試內容。計劃的內容歸納為以下幾步:
(1)首先對被測的Web應用程序進行需求分析,即對所做的測試作一個簡要的介紹,包括描述測試的目標和範圍,所測試的目標要實現一個什麼樣的功能,總結基本文檔、主要活動。
(2)寫出測試策略和方法,這裏包括測試開始的條件、測試的類型、測試開始的標準以及所測試的功能、測試通過或失敗的標準、結束測試的條件、測試過程中遇到什麼樣的情況終止和怎麼處理後恢復等。 [1] 

Web測試測試類型

Web測試的類型包括內容測試、界面測試、功能測試、性能測試、兼容性測試、安全性測試等。內容測試、界面測試和兼容性測試都比較簡單,不再細談。Web的功能測試與傳統的軟件測試區別不大,主要是在連接測試方面有點區別,數據的傳遞方面會稍微複雜點。由於Web軟件都是採用B/S結構,客户端所需的服務都是由服務器提供的,所以主要是測試服務器上軟件運行的性能。Web應用程序的測試包括客户端連接服務器速度方面的測試和壓力測試這兩方面。性能測試的基本步驟如下:
(1)分析產品結構,明確性能測試的需求,包括併發、極限、配置和指標等方面的性能要求,必要時基於LOAD測試的相同測試需同時考慮穩定性測試的需求。
(2)分析應用場景和用户數據,細分用户行為和相關的數據流,確定測試點或測試接口,列出系統接口的可能瓶頸,一般是先主幹接口再支線接口,並完成初步的測試用例設計
(3)依據性能測試需求和確定的測試點進行測試組網設計,並明確不同組網方案的重要程度或優先級作為取捨評估的依據,必要時在前期產品設計中提出支持性能測試的可測試性設計方案和對測試工具的需求。
(4)完成性能測試用例設計、分類選擇和依據用户行為分析設計測試規程,並準備好測試用例將用到的測試數據。
(5)確定採用的測試工具。
(6)進行初驗測試,以主幹接口的可用性為主,根據測試結果分析性能瓶頸,通過選代保證基本的指標等測試的環境。
(7)迭代進行全面的性能測試,完成計劃中的性能測試用例的執行。
(8)完成性能測試評估報告。 [1] 

Web測試功能測試

(1)鏈接測試。鏈接是Web應用系統的一個主要特徵,它是在頁面之間切換和指導用户去一些未知地址的頁面的主要手段。鏈接測試可分為3個方面。首先,測試所有鏈接是否按指示的那樣確實鏈接到了該鏈接的頁面;其次,測試所鏈接的頁面是否存在;最後,保證 Web應用系統上沒有孤立的頁面,所謂孤立頁面是指沒有鏈接指向該頁面,只有知道正確的URL地址才能訪問。鏈接測試可以自動進行,現在已經有許多工具可以採用。鏈接測試必須在集成測試階段完成,亦即在整個Web應用系統的所有頁面開發完成之後進行鏈接測試。
(2)表單測試。當用户通過表單提交信息的時候,都希望表單能正常工作。如果使用表單來進行在線註冊,要確保提交按鈕能正常工作,當註冊完成後應返回註冊成功的消息。如果使用表單收集配送信息,應確保程序能夠正確處理這些數據,最後能讓用户收到信息。要測試這些程序,需要驗證服務器是否能正確保存這些數據,而且後台運行的程序能否正確解釋和使用這些信息。當用户使用表單進行用户註冊、登錄、信息提交等操作時,必須測試提交操作的完整性,以校驗提交給服務器的信息的正確性。如果使用默認值,還要檢驗默認值的正確性。如果表單只能接受指定的某些值,則也要進行測試。
(3)Cookie測試。Cookie通常用來存儲用户信息和用户在某些應用系統的操作,當一個用户使用Cookie訪問了某一個應用系統時,Web服務器將發送關於用户的信息,把該信息以Cookie的形式存儲在用户端計算機上,這可用來創建動態和自定義頁面或者存儲登錄等信息。如果Web應用系統使用了Cookie,就必須檢查Cookie是否能正常工作。測試的內容可包括Cookie是否起作用、是否按預定的時間進行保存、刷新對Cookie有什麼影響等。如果在Cookie中保存了註冊信息,應確認該Cookie能夠正常工作而且已對這些信息加密。如果使用Cookie來統計次數,需要驗證次數累計是否正確。
(4)數據庫測試在Web應用技術中,數據庫起着重要的作用,數據庫為Web應用系統的管理、運行、查詢和實現用户對數據存儲的請求等提供空間。在Web應用中,最常用的數據庫類型是關係型數據庫,可以使用SQL對信息進行處理。在使用了數據庫的Web應用系統中,一般情況下可能發生兩種錯誤,分別是數據一致性錯誤和輸出錯誤。數據一致性錯誤主要是由於用户提交的表單信息不正確而造成的,而輸出錯誤主要是由於網絡速度或程序設計問題等引起的,針對這兩種情況,可分別進行測試。 [1] 

Web測試性能測試

(1)連接速度測試。用户連接到Web應用系統的速度根據上網方式的變化而變化,或許是電話撥號,或許是寬帶上網。當下載一個程序時,用户可以等較長的時間,但如果僅僅訪問一個頁面就不會這樣。如果Web系統響應時間太長(例如超過5s),用户就會因沒有耐心等待而離開。另外,有些頁面有超時的限制,如果響應速度太慢,用户可能還來不及瀏覽內容,就需要重新登錄了。而且,連接速度太慢,還可能引起數據丟失,使用户得不到真實的頁面。
(2)負載測試。負載測試是為了測量Web系統在某一負載級別上的性能,以保證Web系統在需求範圍內能正常工作。負載級別可以是某個時刻同時訪問Web系統的用户數量,也可以是在線數據處理的數量。
負載測試應該安排在Web系統發佈以後,在實際的網絡環境中進行測試。因為對於一個企業,其內部員工數量總是有限的,而一個Web系統能同時處理的請求數量將遠遠超出這個限度,所以,只有放在Internet上,接受負載測試,其結果才是正確可信的。
(3)壓力測試。壓力測試的區域包括表單、登錄和其他信息傳輸頁面等。進行壓力測試是指實際破壞一個Web應用系統,測試系統的反應。壓力測試是測試系統的限制和故障恢復能力,也就是測試Web應用系統會不會崩潰,在什麼情況下會崩潰。在Internet上黑客攻擊常採用的方式是:提供錯誤的數據負載,直到Web應用系統崩潰,接着當系統重新啓動時獲得存取權。因此,對應用系統的壓力測試很有必要。 [1] 

Web測試用户界面測試

(1)導航測試。導航描述了用户在一個頁面內操作的方式,在不同的用户接口控制之間,例如按鈕、對話框、列表和窗口等;或在不同的連接頁面之間。
在一個頁面上放太多的信息往往起到與預期相反的效果。Web應用系統的用户趨向於目的驅動,很快地掃描一個Web應用系統,看是否有滿足自己需要的信息,如果沒有,就會很快地離開。很少有用户願意花時間去熟悉Web應用系統的結構,因此,Web應用系統導航幫助要儘可能地準確。導航的另一個重要方面是Web應用系統的頁面結構、導航、菜單、連接的風格是否一致,確保用户能快速瞭解Web應用系統中是否還有內容以及內容的位置。Web應用系統的層次一旦決定,就要着手測試用户導航功能,讓最終用户參與這種測試,效果將更加明顯。
(2)圖形測試。在Web應用系統中,適當的圖片和動畫既能起到廣告宣傳的作用,又能起到美化頁面的功能。一個Web應用系統的圖形可以包括圖片、動畫、邊框顏色、字體、背景、按鈕等。圖形測試的內容有:
1)確保圖形有明確的用途,圖片或動畫必須排列有序以節約傳輸時間。Web應用系統的圖片尺寸要儘量小,並且能清楚地説明某件事情,一般都鏈接到某個具體的頁面。
2)驗證所有頁面字體的風格是否一致。
3)背景顏色應該與字體顏色和前景顏色相搭配。
4)圖片的大小和質量也是一個很重要的因素,一般採用JPG或GIF壓縮,最好能使圖片的大小減小到30KB以下。
5)需要驗證的是文字迴繞是否正確。如果説明文字指向右邊的圖片,應該確保該圖片出現在右邊。不要因為使用圖片而使窗口和段落排列古怪或者出現孤行。
(3)內容測試。內容測試用來檢驗Web應用系統提供信息的正確性、準確性和相關性。信息的正確性是指信息是可靠的還是誤傳的。信息的準確性是指是否有語法或拼寫錯誤,這種測試通常使用一些文字處理軟件來進行。信息的相關性是指是否在當前頁面可以找到與當前瀏覽信息相關的信息列表或入口,也就是一般Web站點中的所謂“相關文章列表”。
(4)整體界面測試。整體界面是指整個Web應用系統的頁面結構設計,是給用户的一個整體感。對整體界面的測試過程,其實是一個對最終用户進行調查的過程。一般Web應用系統採取在主頁上做一個調查問卷的形式,來得到最終用户的反饋信息。對所有的用户界面測試來説,都需要有外部人員的參與,最好是讓最終用户參與。 [1] 

Web測試兼容性測試

(1)平台測試。市場上有很多不同的操作系統類型,最常見的有Windows,UNIX,Macintosh,Linux等。Web應用系統的最終用户究竟使用哪一種操作系統,取決於用户系統的配置。這樣,可能會發生兼容性問題,同一個應用可能在某些操作系統下能正常運行,但在另外的操作系統下可能會運行失敗。因此,在Web系統發佈前,需要在各種操作系統下對Web系統進行兼容性測試。
(2)瀏覽器測試。瀏覽器是Web客户端最核心的構件,來自不同廠商的瀏覽器對Java,JavaScript,ActiveX,plug-ins或不同的HTML規格有不同的支持。另外,框架和層次結構風格在不同的瀏覽器中也有不同的顯示,甚至根本不顯示。不同的瀏覽器對安全性和Java的設置也不同。測試瀏覽器兼容性的一個方法是創建兼容性矩陣。在這個矩陣中,測試不同廠商、不同版本的瀏覽器對某些構件和設置的適應性。
(3)組合測試。最後需要進行組合測試。600像素×800像素的分辨率在MAC機上可能不錯,但是在IBM兼容機上卻很難看。在IBM機器上使用Netscape能正常顯示,但卻無法使用Lynx來瀏覽。如果是內部使用的Web站點,測試可能會輕鬆一些。如果公司指定使用某個類型的瀏覽器,那麼只需在該瀏覽器上進行測試。如果所有的人都使用T1專線,可能不需要測試施加的下載。有些內部應用程序,開發部門可能在系統需求中聲明不支持某些系統而只支持那些已設置的系統。但是,理想的情況是,系統能在所有機器上運行,這樣就不會限制將來的發展和變動。 [1] 

Web測試安全測試

安全測試是檢驗在系統中已存在的系統安全性、保密性措施是否發揮作用。它主要包括以下幾個方面:
(1)目錄設置:正確設置目錄。
(2)SSL:使用SSL進行安全傳送,確定是否有相應的替代頁面。
(3)登錄:驗證系統阻止非法的用户名/口令登錄。
(4)日誌文件:注意驗證服務器日誌是否正常。
(5)腳本語言:腳本語言是常見的安全隱患。 [1] 

Web測試接口測試

(1)服務器接口。第一個需要測試的接口是瀏覽器與服務器的接口。測試人員提交事務,然後查看服務器記錄,並驗證在瀏覽器上看到的正好是服務器上發生的。測試人員還可以查詢數據庫,確認事務數據已正確保存。
(2)外部接口。有些Web系統有外部接口。例如,網上商店可能要實時驗證信用卡數據以減少欺詐行為的發生。測試的時候,要使用Web接口發送一些事務數據,分別對有效信用卡、無效信用卡和被盜信用卡進行驗證。如果商店只使用Visa卡和MasterCard卡,可以嘗試使用Discover卡的數據(簡單的客户端腳本能夠在提交事務之前對代碼進行識別。
(3)錯誤處理。最容易被測試人員忽略的地方是接口錯誤處理。通常我們試圖確認系統能夠處理所有錯誤,但卻無法預期系統所有可能的錯誤。可以嘗試在處理過程中突然中斷事務,看看會發生什麼情況,看訂單是否完成;或是嘗試中斷用户到服務器的網絡連接,或者嘗試中斷Web服務器到信用卡驗證服務器的連接,在這些情況下,系統能否正確處理這些錯誤,是否已對信用卡進行收費。如果用户自己中斷事務處理,在訂單已保存而用户沒有返回網站確認的時候,需要由服務提供商致電用户進行訂單確認。 [1] 

Web測試測試工具

由於Web頁數數目巨大且變動頻繁,對其測試如果單靠手工是無法進行的,必須有測試工具的參與[5],它們在保障Web應用的功能、性能方面起了重要的作用。
1.界面測試工具
一般對於Web界面測試工具有Selenium。Selenium直接運行在瀏覽器中,就像真正的用户在操作一樣。可測試與瀏覽器的兼容性——是否能夠很好地工作在不同瀏覽器和操作系統之上。測試系統功能——創建衰退測試檢驗軟件功能和用户需求。支持的瀏覽器包括IE,Mozilla和Firefox等。支持自動錄製動作和自動生成.Net、Java、Perl等不同語言的測試腳本。
2.功能測試工具
針對每一個的測試都有各種不同的測試工具,該文將對比較常用和綜合測試的3種工具——WinrunnerRational RobotQTP
Winrunner7.0是一種企業級的功能測試工具,用於檢測應用程序是否能夠達到預期的功能及正常運行。通過自動錄製、檢測和回放用户的應用操作,Winrunner能夠有效地幫助測試人員對複雜的企業級應用的不同發佈版進行測試,提高測試人員的工作效率和質量,確保跨平台的、複雜的企業級應用無故障發佈及長期穩定運行。
Rational Robot是Rational的產品之一,提供了軟件測試的功能和許多類似機器人的重複過程,供測試用,可以讓測試人員對.NET、Java、Web和其他基於GUI的應用程序進行自動的功能性迴歸測試。是一種對環境的多功能的、迴歸和配置測試工具,在該環境中,可以使用一種以上的IDE和(或)編程語言開發應用程序。可以很容易的使手動測試小組轉變到自動測試上來。使用IBM Rational Robot進行迴歸測試是早期步入自動化的很好的一步,因為它易於使用,並且可以幫助測試者在工作的過程中學習一些自動處理的知識。
QTP是QTP Professional的簡稱,是一種自動測試工具。使用QTP可執行重複的手動測試,主要是用於迴歸測試和測試同一軟件的新版本。
3.性能測試工具
負載性能測試工具的原理通常是通過錄制、回放腳本、模擬多用户同時訪問被測試系統,製造負載,產生並記錄各種性能指標,生成分析結果,從而完成性能測試的任務。
主流的負載性能測試工具有:QA Load,Load-Runner,Web load和WAS(Microsoft Web Application Stress Tool),下面將主要介紹和對比這這4款工具。
Load Runner:一種較高規模適應性的自動負載測試工具,它能預測系統行為,優化性能。強調是整個企業的系統,它通過模擬實際用户的操作行為和實行實時性能監測,可更快的確認和查找問題。能支持最寬範的協議和技術,為特殊環境量身定做地提供解決方案。
QA Load:Compuware公司的QALoad是客户/服務器系統、企業資源配置(ERP)和電子商務應用的自動化負載測試工具。QALoad是QACenter性能版的一部分,它通過可重複的、真實的測試能夠徹底地度量應用的可擴展性和性能。QACenter彙集完整的跨企業的自動測試產品,中國IT室驗實專為提高軟件質量而設計,可以在整個開發生命週期、跨越多種平台、自動執行測試任務。
Webload:是RadView公司推出的一個性能測試和分析工具,它讓Web應用程序開發者自動執行壓力測試;通過模擬真實用户的操作,生成壓力負載來測試Web的性能,用户創建的是基於JavaScript的測試腳本,稱為議程agenda,用它來模擬客户的行為,通過執行該腳本來衡量Web應用程序在真實環境下的性能。
Microsoft Web Application Stress Tool是由微軟的網站測試人員所開發,專門用來進行實際網站壓力測試的一套工具。透過這套功能強大的壓力測試工具,您可以使用少量的Client端計算機仿真大量用户上線對網站服務所可能造成的影響 [2] 
參考資料