軟件測試中web應用程序測試方法和測試技術詳述
1. 概述
隨著web應用的增多,新的模式解決方案中以web為核心的應用也越來越多, 很多公司各種應用的架構都以B/S及web應用為主,但是有關WEB測試方面的內容并沒有相應的總結,所以我在這里對web的測試方法和采用的測試技術進行總結,便于內部交流。
測試方法盡量涵蓋web程序的各個方面,測試技術方面在繼承傳統測試技術的技術上結合web應用的特點。
相關的測試和實現技術也有著很大的關系,由于本公司使用J2EE體系,也許例子中只有JAVA平臺可以使用,.NET平臺測試技術暫時不涉及,如果你有請與我聯系。
2. 測試方法
說明:測試方法的選擇取決你的測試策略。
一般的web測試和以往的應用程序的測試的側重點不完全相同,基本包括以下幾個方面。
當然圓滿的完成測試還要有好的團體和流程等的方方面面的支持,你同樣應該對這些方面進行注意。
有些測試方法設計到了流程,哪些應該在你的測試團隊建設中建立。
2.1 界面測試
現在一般人都有使用瀏覽器瀏覽網頁的經歷,用戶雖然不是專業人員但是對界面效果的印象是很重要的。如果你注重這方面的測試,那么驗證應用程序是否易于使用就非常重要了。很多人認為這是測試中最不重要的部分,但是恰恰相反界面對不懂技術的客戶來說那相當關鍵,慢慢體會你會明白的。
方法上可以根據設計文檔,如果夠專業的話可以專業美工人員,來確定整體風格頁面風格,然后根據這個可以頁面人員可以生成靜態的HTML,CSS等甚至生成幾套不用的方案來討論,或者交給客戶評審,最后形成統一的風格的頁面/框架。注意不要靠程序員的美術素養形成你的web風格,那樣可能會很糟糕。
主要包括以下幾個方面的內容:
- 站點地圖和導航條 位置、是否合理、是否可以導航等內容布局 布局是否合理,滾動條等簡介說明 說明文字是否合理,位置,是否正確
- 背景/色調 是否正確、美觀,是否符合用戶需求
- 頁面在窗口中的顯示是否正確、美觀(在調整瀏覽器窗口大小時,屏幕刷新是否正確)表單樣式 大小,格式,是否對提交數據進行驗證(如果在頁面部分進行驗證的話)等
- 連接 連接的形式,位置,是否易于理解等
web測試的主要頁面元素
- 頁面元素的容錯性列表(如輸入框、時間列表或日歷)
- 頁面元素清單(為實現功能,是否將所需要的元素全部都列出來了,如按鈕、單選框、復選框、列表框、超連接、輸入框等等)
- 頁面元素的容錯性是否存在
- 頁面元素的容錯性是否正確
- 頁面元素基本功能是否實現(如文字特效、動畫特效、按鈕、超連接)
- 頁面元素的外形、擺放位置(如按鈕、列表框、核選框、輸入框、超連接等)
- 頁面元素是否顯示正確(主要針對文字、圖形、簽章)
- 元素是否顯示(元素是否存在)
頁面元素清單(為實現功能,是否將所需要的元素全部都列出來了,如按鈕、單選框、復選框、列表框、超連接、輸入框等等)
測試技術
- 通過頁面走查,瀏覽確定使用的頁面是否符合需求?梢越Y合兼容性測試對不用分辨率下頁面顯示效果,如果有影響應該交給設計人員提出解決方案。
- 可以結合數據定義文檔查看表單項的內容,長度等信息。
- 對于動態生成的頁面最好也能進行瀏覽查看。如Servelet部分可以結合編碼規范,進行代碼走查。是否支持中文,如果數據用XML封裝要做的工作會多一點等等。
界面測試要素:
符合標準和規范,靈活性,正確性,直觀性,舒適性,實用性,一致性
1.直觀性:
- 用戶界面是否潔凈,不唐突,不擁擠.界面不應該為用戶制造障礙.所需功能或者期待的響應應該明顯,并在預期出現的地方.
- 界面組織和布局合理嗎?是否允許用戶輕松地從一個功能轉到另一個功能?下一步做什么明顯嗎?任何時刻都可以決定放棄或者退回,退出嗎?輸入得到承認了嗎?菜單或者窗口是否深藏不露?
- 有多余功能嗎?軟件整體抑或局部是否做得太多?是否有太多特性把工作復雜化了?是否感到信息太龐雜?
- 如果其他所有努力失敗,幫助系統真能幫忙嗎?
2.一致性
- 快速鍵和菜單選項.在Windows 中按F1鍵總是得到幫助信息
- 術語和命令.整個軟件使用同樣的術語嗎?特性命名一致嗎?例如,Find是否一直叫Find,而不是有時叫Search?
- 軟件是否一直面向同一級別用戶?帶有花哨用戶界面的趣味賀卡程序不應該顯示泄露技術機密的錯誤提示信息.
- 按鈕位置和等價的按鍵.大家是否注意到對話框有OK按鈕和Cancle按鈕時,OK按鈕總是在上方或者左方,而Cancle按鈕總是在下方或右方?同樣原因,Cancle按鈕的等價按鍵通常是Esc,而選中按鈕的等價按鈕通常是Enter.保持一致.
3.靈活性
- 狀態跳轉.靈活的軟件實現同一任務有多種選擇方式.
- 狀態終止和跳過,具有容錯處理能力.
- 數據輸入和輸出.用戶希望有多種方法輸入數據和查看結果.例如,在寫字板插入文字可用鍵盤輸入,粘貼,從6種文件格式讀入,作為對象插入,或者用鼠標從其他程序拖動.
4.舒適性
- 恰當.軟件外觀和感覺應該與所做的工作和使用者相符.
- 錯誤處理.程序應該在用戶執行嚴重錯誤的操作之前提出警告,并允許用戶恢復由于錯誤操作導致丟失的數據.如大家認為undo /redo是當然的.
- 性能.快不見得是好事.要讓用戶看得清程序在做什么,它是有反應的.
2.2 功能測試
對功能測試是測試中的重點
主要包括一下幾個方面的內容
- 連接 這個連接和界面測試中的連接不同那里注重的是連接方式和位置,如是圖像還是文字放置的位置等,還是其他的方式。這里的連接注重功能。如是否有連接,連接的是否是說明的位置等。
- 表單提交應當模擬用戶提交,驗證是否完成功能,如注冊信息,要測試這些程序,需要驗證服務器能正確保存這些數據,而且后臺運行的程序能正確解釋和使用這些信息。還有數據正確性驗證,異常處理等,最好結合易用性要求等。B/S結構實現的功能可能主要的就在這里,提交數據,處理數據等如果有固定的操作流程可以考慮自動化測試工具的錄制功能,編寫可重復使用的腳本代碼,可以在測試、回歸測試時運行以便減輕測試人員工作量。
- Cookies 驗證如果系統使用了cookie,測試人員需要對它們進行檢測。如果在 cookies 中保存了注冊信息,請確認該 cookie能夠正常工作而且已對這些信息已經加密。如果使用 cookie 來統計次數,需要驗證次數累計正確。關于cookie的使用可以參考瀏覽器的幫助信息。如果使用B/S結構cookies中存放的信息更多。功能易用性測試 完成了功能測試可以對應用性進行了解,最好聽聽客戶的反映,在可以的情況下對程序進行改進是很有必要的,和客戶保持互動對系統滿意度也是很有幫助的。
測試技術 功能測試的測試技術可是很多的,我們可以結合實際環境選擇使用
- 白盒測試技術(White Box Testing) 深入到代碼一級的測試,使用這種技術發現問題最早,效果也是最好的。該技術主要的特征是測試對象進入了代碼內部,根據開發人員對代碼和對程序的熟悉程度, 對有需要的部分進行在軟件編碼階段,開發人員根據自己對代碼的理解和接觸所進行的軟件測試叫做白盒測試。這一階段測試以軟件開發人員為主,在JAVA平臺使用Xunit系列工具進行測試,Xunit測試工具是類一級的測試工具對每一個類和該類的方法進行測試。
- 黑盒測試技術(Black Box Testing)黑盒測試的內容主要有以下幾個方面,但是主要還是功能部分。主要是覆蓋全部的功能,可以結合兼容,性能測試等方面進行,根據軟件需求,設計文檔,模擬客戶場景隨系統進行實際的測試,這種測試技術是使用最多的測試技術涵蓋了測試的方方面面,可以考慮以下方面
正確性 (Correctness):計算結果,命名等方面
可用性 (Usability):是否可以滿足軟件的需求說明。
邊界條件 (Boundary Condition)輸入部分的邊界值,就是使用一般書中說的等價類劃分,試試最大最小和非法數據等等.
性能 (Performance) 正常使用的時間內系統完成一個任務需要的時間,多人同時使用的時候響應時間,在可以接受范圍內.J2EE技術實現的系統在性能方面更是需要照顧的,一般原則是3秒以下接受,3-5秒可以接受,5秒以上就影響易用性了. 如果在測試過程中發現性能問題,修復起來是非常艱難的,因為這常常意味著程序的算法不好,結構不好,或者設計有問題。因此在產品開發的開始階段,就要考慮到軟件的性能問題
壓力測試 (Stress) 多用戶情況可以考慮使用壓力測試工具,建議將壓力和性能測試結合起來進行.如果有負載平衡的話還要在服務器端打開監測工具,查看服務器CPU使用率,內存占用情況, 如果有必要可以模擬大量數據輸入,對硬盤的影響等等信息.如果有必要的話必須進行性能優化(軟硬件都可以).這里的壓力測試針對的是某幾項功能,.
錯誤恢復 (Error Recovery) 錯誤處理,頁面數據驗證,包括突然間斷電,輸入臟數據等.
安全性測試(Security)這個領域正在研究中,不過防火墻,補丁包.殺毒軟件等的就不必說了,不過可以考慮破壞性測試時任意.看了一些資料后得知,這里面設計到的知識\內容可以寫本書了,不是一兩句可以說清的,特別是一些商務網站,或者跟錢有關,或者和公司秘密有關的web更是,需要這方面的測試,在外國有一種專門干這一行的人叫安全顧問,可以審核代碼,提出安全建議,出現緊急事件是的處理辦法等,在國內沒有聽說哪里有專門搞安全技術測試的內容.
兼容性 (Compatibility) 不同瀏覽器,不同應用程序版本在實現功能時的表現,不同的上網方式,如果你測試的是一個公共網站的話.
兼容性測試內容詳述
- 硬件平臺
- 瀏覽器軟件和版本:瀏覽器插件,瀏覽器選項,視頻分辨率和色深.文字大小,調制解調器速率.
軟件配置 (Configuration) 如IE瀏覽器的不用選項-安全設定最高,禁用腳本程序,等等,你們的程序在各種不用的設置下表現如何.
單元測試技術(Unit Test):
2.2.1 下面是對白盒測試和單元測試的區別的論述:
單元測試和白盒測試是不同的,雖然單元測試和白盒測試都是關注功能雖然他們都需要代碼支持,但是級別不同,白盒測試關注的是類中一個方法的功能是更小的單位,但是完成一個單元測試可能需要N多類,所以說作單元測試需要什么寫驅動和穩定樁,比如查詢單元是一個查詢包包N多的測試類,測試數據,運行他需要提供數據的部分,輸入參數和發出命令的驅動等等.是比類大的一個整體進行的.
另一個明顯的區別是白盒測試不會關注類接口,但是單元測試主要的內容就是類接口測試.
不過很多時候是很少區分的,因為這兩種技術實現起來有很多相互關聯的部分.不過要看你對質量的關注程度來決定.
2.2.2 功能測試邊界測試\越界測試技術詳述
- 邊界條件
邊界條件是指軟件計劃的操作界限所在的邊緣條件.
如果軟件測試問題包含確定的邊界,那么數據類型可能是:
數值 速度 字符 地址 位置 尺寸 數量
同時,考慮這些類型的下述特征:
第一個/最后一個 最小值/最大值
開始/完成 超過/在內
空/滿 最短/最長
最慢/最快 最早/最遲
最大/最小 最高/最低
相鄰/最遠 - 越界測試
通常是簡單加1或者很小的數(對于最大值)和減少1或者很小的數(對于最小值),例如:
第一個減1/最后一個加1
開始減1/完成加1
空了再減/滿了再加
慢上加慢/快上加快
最大數加1/最小數減1
最小值減1/最大值加1
剛好超過/剛好在內
短了再短/長了再長
早了更早/晚了更晚
最高加1/最低減1
另一些該注意的輸入:默認,空白,空值,零值和無;非法,錯誤,不正確和垃圾數據.
2.2.3 狀態測試技術
- 軟件可能進入的每一種獨立狀態;
- 從一種狀態轉入另一種狀態所需的輸入和條件;
- 進入或退出某種狀態時的設置條件及輸入結果.
具體測試方法可以參考如下:
- 每種狀態至少訪問一次;
- 測試看起來最常見最普遍的狀態轉換;
- 測試狀態之間最不常用的分支
- 測試所有錯誤狀態及其返回值
- 測試隨機狀態轉換
文章來源于領測軟件測試網 http://www.kjueaiud.com/