基于Web的系統(tǒng)測試與傳統(tǒng)的軟件測試既有相同之處,也有不同的地方,對軟件測試提出了新的挑戰(zhàn);赪eb的系統(tǒng)測試不但需要檢查和驗證是否按照設(shè)計的要求運行,而且還要評價系統(tǒng)在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進行安全性和可用性測試。
本文從功能、性能、可用性、客戶端兼容性、安全性等方面討論了基于Web的系統(tǒng)測試方法。
隨著Internet和Intranet/Extranet的快速增長,Web已經(jīng)對商業(yè)、工業(yè)、銀行、財政、教育、政府和娛樂及我們的工作和生活產(chǎn)生了深遠的影響。許多傳統(tǒng)的信息和數(shù)據(jù)庫系統(tǒng)正在被移植到互聯(lián)網(wǎng)上,電子商務(wù)迅速增長,早已超過了國界。范圍廣泛的、復(fù)雜的分布式應(yīng)用正在Web環(huán)境中出現(xiàn)。Web的流行和無所不在,是因為它能提供支持所有類型內(nèi)容連接的信息發(fā)布,容易為最終用戶存取。
Yogesh Deshpande和Steve Hansen在1998年就提出了Web工程的概念。Web工程作為一門新興的學(xué)科,提倡使用一個過程和系統(tǒng)的方法來開發(fā)高質(zhì)量的基于Web的系統(tǒng)。它"使用合理的、科學(xué)的工程和管理原則,用嚴密的和系統(tǒng)的方法來開發(fā)、發(fā)布和維護基于Web的系統(tǒng)"。目前,對于web工程的研究主要是在國外開展的,國內(nèi)還剛剛起步。
在基于Web的系統(tǒng)開發(fā)中,如果缺乏嚴格的過程,我們在開發(fā)、發(fā)布、實施和維護Web的過程中,可能就會碰到一些嚴重的問題,失敗的可能性很大。而且,隨著基于Web的系統(tǒng)變得越來越復(fù)雜,一個項目的失敗將可能導(dǎo)致很多問題。當(dāng)這種情況發(fā)生時,我們對Web和Internet的信心可能會無法挽救地動搖,從而引起Web危機。并且,Web危機可能會比軟件開發(fā)人員所面對的軟件危機更加嚴重、更加廣泛。
在Web工程過程中,基于Web系統(tǒng)的測試、確認和驗收是一項重要而富有挑戰(zhàn)性的工作。基于Web的系統(tǒng)測試與傳統(tǒng)的軟件測試不同,它不但需要檢查和驗證是否按照設(shè)計的要求運行,而且還要測試系統(tǒng)在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進行安全性和可用性測試。然而,Internet和Web媒體的不可預(yù)見性使測試基于Web的系統(tǒng)變得困難。因此,我們必須為測試和評估復(fù)雜的基于Web的系統(tǒng)研究新的方法和技術(shù)。
一般軟件的發(fā)布周期以月或以年計算,而Web應(yīng)用的發(fā)布周期以天計算甚至以小時計算。Web測試人員必須處理更短的發(fā)布周期,測試人員和測試管理人員面臨著從測試傳統(tǒng)的C/S結(jié)構(gòu)和框架環(huán)境到測試快速改變的Web應(yīng)用系統(tǒng)的轉(zhuǎn)變。
一、功能測試
1、鏈接測試
鏈接是Web應(yīng)用系統(tǒng)的一個主要特征,它是在頁面之間切換和指導(dǎo)用戶去一些不知道地址的頁面的主要手段。鏈接測試可分為三個方面。首先,測試所有鏈接是否按指示的那樣確實鏈接到了該鏈接的頁面;其次,測試所鏈接的頁面是否存在;最后,保證Web應(yīng)用系統(tǒng)上沒有孤立的頁面,所謂孤立頁面是指沒有鏈接指向該頁面,只有知道正確的URL地址才能訪問。
鏈接測試可以自動進行,現(xiàn)在已經(jīng)有許多工具可以采用。鏈接測試必須在集成測試階段完成,也就是說,在整個Web應(yīng)用系統(tǒng)的所有頁面開發(fā)完成之后進行鏈接測試。
2、表單測試
當(dāng)用戶給Web應(yīng)用系統(tǒng)管理員提交信息時,就需要使用表單操作,例如用戶注冊、登陸、信息提交等。在這種情況下,我們必須測試提交操作的完整性,以校驗提交給服務(wù)器的信息的正確性。例如:用戶填寫的出生日期與職業(yè)是否恰當(dāng),填寫的所屬省份與所在城市是否匹配等。如果使用了默認值,還要檢驗?zāi)J值的正確性。如果表單只能接受指定的某些值,則也要進行測試。例如:只能接受某些字符,測試時可以跳過這些字符,看系統(tǒng)是否會報錯。
3、Cookies測試
Cookies通常用來存儲用戶信息和用戶在某應(yīng)用系統(tǒng)的操作,當(dāng)一個用戶使用Cookies訪問了某一個應(yīng)用系統(tǒng)時,Web服務(wù)器將發(fā)送關(guān)于用戶的信息,把該信息以Cookies的形式存儲在客戶端計算機上,這可用來創(chuàng)建動態(tài)和自定義頁面或者存儲登陸等信息。
如果Web應(yīng)用系統(tǒng)使用了Cookies,就必須檢查Cookies是否能正常工作。測試的內(nèi)容可包括Cookies是否起作用,是否按預(yù)定的時間進行保存,刷新對Cookies有什么影響等。
4、設(shè)計語言測試
Web設(shè)計語言版本的差異可以引起客戶端或服務(wù)器端嚴重的問題,例如使用哪種版本的HTML等。當(dāng)在分布式環(huán)境中開發(fā)時,開發(fā)人員都不在一起,這個問題就顯得尤為重要。除了HTML的版本問題外,不同的腳本語言,例如Java、javascript、 ActiveX、VBScript或Perl等也要進行驗證。
5、數(shù)據(jù)庫測試
在Web應(yīng)用技術(shù)中,數(shù)據(jù)庫起著重要的作用,數(shù)據(jù)庫為Web應(yīng)用系統(tǒng)的管理、運行、查詢和實現(xiàn)用戶對數(shù)據(jù)存儲的請求等提供空間。在Web應(yīng)用中,最常用的數(shù)據(jù)庫類型是關(guān)系型數(shù)據(jù)庫,可以使用SQL對信息進行處理。
在使用了數(shù)據(jù)庫的Web應(yīng)用系統(tǒng)中,一般情況下,可能發(fā)生兩種錯誤,分別是數(shù)據(jù)一致性錯誤和輸出錯誤。數(shù)據(jù)一致性錯誤主要是由于用戶提交的表單信息不正確而造成的,而輸出錯誤主要是由于網(wǎng)絡(luò)速度或程序設(shè)計問題等引起的,針對這兩種情況,可分別進行測試。
二、性能測試
1、連接速度測試
用戶連接到Web應(yīng)用系統(tǒng)的速度根據(jù)上網(wǎng)方式的變化而變化,他們或許是電話撥號,或是寬帶上網(wǎng)。當(dāng)下載一個程序時,用戶可以等較長的時間,但如果僅僅訪問一個頁面就不會這樣。如果Web系統(tǒng)響應(yīng)時間太長(例如超過5秒鐘),用戶就會因沒有耐心等待而離開。
另外,有些頁面有超時的限制,如果響應(yīng)速度太慢,用戶可能還沒來得及瀏覽內(nèi)容,就需要重新登陸了。而且,連接速度太慢,還可能引起數(shù)據(jù)丟失,使用戶得不到真實的頁面。
2、負載測試
負載測試是為了測量Web系統(tǒng)在某一負載級別上的性能,以保證Web系統(tǒng)在需求范圍內(nèi)能正常工作。負載級別可以是某個時刻同時訪問Web系統(tǒng)的用戶數(shù)量,也可以是在線數(shù)據(jù)處理的數(shù)量。例如:Web應(yīng)用系統(tǒng)能允許多少個用戶同時在線?如果超過了這個數(shù)量,會出現(xiàn)什么現(xiàn)象?Web應(yīng)用系統(tǒng)能否處理大量用戶對同一個頁面的請求?
3、壓力測試
負載測試應(yīng)該安排在Web系統(tǒng)發(fā)布以后,在實際的網(wǎng)絡(luò)環(huán)境中進行測試。因為一個企業(yè)內(nèi)部員工,特別是項目組人員總是有限的,而一個Web系統(tǒng)能同時處理的請求數(shù)量將遠遠超出這個限度,所以,只有放在Internet上,接受負載測試,其結(jié)果才是正確可信的。
進行壓力測試是指實際破壞一個Web應(yīng)用系統(tǒng),測試系統(tǒng)的反映。壓力測試是測試系統(tǒng)的限制和故障恢復(fù)能力,也就是測試Web應(yīng)用系統(tǒng)會不會崩潰,在什么情況下會崩潰。黑客常常提供錯誤的數(shù)據(jù)負載,直到Web應(yīng)用系統(tǒng)崩潰,接著當(dāng)系統(tǒng)重新啟動時獲得存取權(quán)。
壓力測試的區(qū)域包括表單、登陸和其他信息傳輸頁面等。
三、可用性測試
1、導(dǎo)航測試
導(dǎo)航描述了用戶在一個頁面內(nèi)操作的方式,在不同的用戶接口控制之間,例如按鈕、對話框、列表和窗口等;或在不同的連接頁面之間。通過考慮下列問題,可以決定一個Web應(yīng)用系統(tǒng)是否易于導(dǎo)航:導(dǎo)航是否直觀?Web系統(tǒng)的主要部分是否可通過主頁存。縒eb系統(tǒng)是否需要站點地圖、搜索引擎或其他的導(dǎo)航幫助?
在一個頁面上放太多的信息往往起到與預(yù)期相反的效果。Web應(yīng)用系統(tǒng)的用戶趨向于目的驅(qū)動,很快地掃描一個Web應(yīng)用系統(tǒng),看是否有滿足自己需要的信息,如果沒有,就會很快地離開。很少有用戶愿意花時間去熟悉Web應(yīng)用系統(tǒng)的結(jié)構(gòu),因此,Web應(yīng)用系統(tǒng)導(dǎo)航幫助要盡可能地準(zhǔn)確。
導(dǎo)航的另一個重要方面是Web應(yīng)用系統(tǒng)的頁面結(jié)構(gòu)、導(dǎo)航、菜單、連接的風(fēng)格是否一致。確保用戶憑直覺就知道Web應(yīng)用系統(tǒng)里面是否還有內(nèi)容,內(nèi)容在什么地方。
Web應(yīng)用系統(tǒng)的層次一旦決定,就要著手測試用戶導(dǎo)航功能,讓最終用戶參與這種測試,效果將更加明顯。
2、圖形測試
在Web應(yīng)用系統(tǒng)中,適當(dāng)?shù)膱D片和動畫既能起到廣告宣傳的作用,又能起到美化頁面的功能。一個Web應(yīng)用系統(tǒng)的圖形可以包括圖片、動畫、邊框、顏色、字體、背景、按鈕等。圖形測試的內(nèi)容有:
(1)要確保圖形有明確的用途,圖片或動畫不要胡亂地堆在一起,以免浪費傳輸時間。Web應(yīng)用系統(tǒng)的圖片尺寸要盡量地小,并且要能清楚地說明某件事情,一般都鏈接到某個具體的頁面。
(2)驗證所有頁面字體的風(fēng)格是否一致。
(3)背景顏色應(yīng)該與字體顏色和前景顏色相搭配。
(4)圖片的大小和質(zhì)量也是一個很重要的因素,一般采用JPG或GIF壓縮。
3、內(nèi)容測試
內(nèi)容測試用來檢驗Web應(yīng)用系統(tǒng)提供信息的正確性、準(zhǔn)確性和相關(guān)性。
信息的正確性是指信息是可靠的還是誤傳的。例如,在商品價格列表中,錯誤的價格可能引起財政問題甚至導(dǎo)致法律糾紛;信息的準(zhǔn)確性是指是否有語法或拼寫錯誤。這種測試通常使用一些文字處理軟件來進行,例如使用Microsoft Word的"拼音與語法檢查"功能;信息的相關(guān)性是指是否在當(dāng)前頁面可以找到與當(dāng)前瀏覽信息相關(guān)的信息列表或入口,也就是一般Web站點中的所謂"相關(guān)文章列表"。
4、整體界面測試
整體界面是指整個Web應(yīng)用系統(tǒng)的頁面結(jié)構(gòu)設(shè)計,是給用戶的一個整體感。例如:當(dāng)用戶瀏覽Web應(yīng)用系統(tǒng)時是否感到舒適,是否憑直覺就知道要找的信息在什么地方?整個Web應(yīng)用系統(tǒng)的設(shè)計風(fēng)格是否一致?
對整體界面的測試過程,其實是一個對最終用戶進行調(diào)查的過程。一般Web應(yīng)用系統(tǒng)采取在主頁上做一個調(diào)查問卷的形式,來得到最終用戶的反饋信息。
對所有的可用性測試來說,都需要有外部人員(與Web應(yīng)用系統(tǒng)開發(fā)沒有聯(lián)系或聯(lián)系很少的人員)的參與,最好是最終用戶的參與。
四、客戶端兼容性測試
1、平臺測試
市場上有很多不同的操作系統(tǒng)類型,最常見的有Windows、Unix、Macintosh、Linux等。Web應(yīng)用系統(tǒng)的最終用戶究竟使用哪一種操作系統(tǒng),取決于用戶系統(tǒng)的配置。這樣,就可能會發(fā)生兼容性問題,同一個應(yīng)用可能在某些操作系統(tǒng)下能正常運行,但在另外的操作系統(tǒng)下可能會運行失敗。
因此,在Web系統(tǒng)發(fā)布之前,需要在各種操作系統(tǒng)下對Web系統(tǒng)進行兼容性測試。
2、瀏覽器測試
瀏覽器是Web客戶端最核心的構(gòu)件,來自不同廠商的瀏覽器對Java,、javascript、 ActiveX、 plug-ins或不同的HTML規(guī)格有不同的支持。例如,ActiveX是Microsoft的產(chǎn)品,是為Internet Explorer而設(shè)計的,javascript是Netscape的產(chǎn)品,Java是Sun的產(chǎn)品等等。另外,框架和層次結(jié)構(gòu)風(fēng)格在不同的瀏覽器中也有不同的顯示,甚至根本不顯示。不同的瀏覽器對安全性和Java的設(shè)置也不一樣。
測試瀏覽器兼容性的一個方法是創(chuàng)建一個兼容性矩陣。在這個矩陣中,測試不同廠商、不同版本的瀏覽器對某些構(gòu)件和設(shè)置的適應(yīng)性。
五、安全性測試
Web應(yīng)用系統(tǒng)的安全性測試區(qū)域主要有:
(1)現(xiàn)在的Web應(yīng)用系統(tǒng)基本采用先注冊,后登陸的方式。因此,必須測試有效和無效的用戶名和密碼,要注意到是否大小寫敏感,可以試多少次的限制,是否可以不登陸而直接瀏覽某個頁面等。
(2)Web應(yīng)用系統(tǒng)是否有超時的限制,也就是說,用戶登陸后在一定時間內(nèi)(例如15分鐘)沒有點擊任何頁面,是否需要重新登陸才能正常使用。
(3)為了保證Web應(yīng)用系統(tǒng)的安全性,日志文件是至關(guān)重要的。需要測試相關(guān)信息是否寫進了日志文件、是否可追蹤。
(4)當(dāng)使用了安全套接字時,還要測試加密是否正確,檢查信息的完整性。
(5)服務(wù)器端的腳本常常構(gòu)成安全漏洞,這些漏洞又常常被黑客利用。所以,還要測試沒有經(jīng)過授權(quán),就不能在服務(wù)器端放置和編輯腳本的問題。
六、總結(jié)
本文從功能、性能、可用性、客戶端兼容性、安全性等方面討論了基于Web的系統(tǒng)測試方法。
基于Web的系統(tǒng)測試與傳統(tǒng)的軟件測試既有相同之處,也有不同的地方,對軟件測試提出了新的挑戰(zhàn)。基于Web的系統(tǒng)測試不但需要檢查和驗證是否按照設(shè)計的要求運行,而且還要評價系統(tǒng)在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進行安全性和可用性測試。
摘自 天極網(wǎng)