"大不可量,深不可測"---《韓非子·主道》
一個Web系統一旦開發完成,開發人員就可以暫時松一口氣了;可是測試呢?后臺升級,頁面怎么測試?再來一遍?自動化測試或許是一個好的選擇,那么怎么組織?按照什么思路進行呢?一方面我摸索著使用VSTS進行自動化測試,摸索了一個路子,正在進行中,或許你有更好的方法,請指點!
本文覆蓋一下內容:
1. 定策:先走通 后走對
2. 架子怎么搭?
3.VSTS自動化測試工具能做什么、擅長做什么 ?
定策:先走通后走對
先從這樣一個點切入一下:我們做Web開發實際上是Asp.net框架上的一個應用,Asp.net又是什么呢?Asp.net是對HTTP協議的一個封裝,使得開發更容易,更快捷…;由于Http協議先天的一些特征,比如http協議是無狀態的,所以Asp.net能為我們提供一個服務器端的事件編程模型是戴著鎖鏈跳出了優美的舞姿。
然后,我們的Web自動化測試又在做什么呢?這個問題的答案可以從這樣一個角度分析:Web自動化測試工具出現在了之前測試人員出現的位置上,那么由此我們可以判定—1.Web自動化測試/自動化測試工具肯定做了之前測試人員做的事情 2.Web自動化測試/自動化測試工具肯定做了測試人員做不到的事情
我們的Web測試人員對一個Web系統(比如:電子購物網站)進行測試,最基本的要保證能走通若干個重要的流程,比如檢索—>查看貨物詳細信息—>登錄—>付費等等,這也就是“走通”;在這個過程中測試人員會判斷檢索的結果是不是對的,貨物詳細信息顯示的是不是對的..
這就是“走對”;我們的Web測試人員在日常工作中,無意識的就完成了這樣兩件事情。
當Web自動化測試工具出現在測試人員的位置上的時候它要做到驗證是不是能走通,是不是能走對;同時作為工具它還有人工無法替代的功能,比如:它可以定時的執行,反復的執行,及時的反饋,它可以做壓力測試… 當自動化測試工具做到了測試人員可以做的事情,同時有做到了測試人員無法做到的事情的時候,它就具有了價值,可以成為產品了.
我們可以看看VSTS的Web自動化測試工具,我們簡單看一下MSDN上的描述:可以創建用于廣泛的測試目的的 Web 測試:
創建執行 Web 應用程序的功能測試。
創建數據驅動的測試。
創建并運行可以測試應用程序性能的測試。
使用 .NET 語言進行測試創作、調試和測試擴展。
VSTS的Web自動化測試工具,提供了一系列的機制來實現上面提到的”走通 走對”,后面我們會提到。
架子怎么搭?
有了目標,下面做的就是搭起架子來,也就是說:我們怎樣組織Web自動化測試呢?
怎么容易管理Web自動化測試?怎么樣能容易擴展?怎么樣做到復用?怎么樣做到分工協作?
我們知道HTTP協議是基于請求/響應范式的;那么上面的走通和走對就可以這樣重新解釋:走對是我們得到了一個正確的響應;走通是發出一個請求之后得到了我們期待的響應;
而對于大多數的Web系統,一個請求或者響應往往直接對應一個頁面;于是頁面就天然的成為了Web自動化測試中模塊的最小單位;而請求與響應之間的關聯,或者說頁面之間的關聯最適合用二元關系表達;于是看下圖:
檢驗一下我們的目標達到了么?
1. 是不是容易管理?測試所依賴的文檔和每一個WebTest是一一對應的,當頁面發生變化的時候修改測試用例文檔,而對應文檔編號可以直接定位到該WebTest!文檔和WebTest有一個對應關系,發生變化直接按圖索驥就可以了;是不是容易管理呢?
2. 是不是容易擴展?比如現在首頁也添加了一個熱門圖書的詳細信息的頁面鏈接,我們要做的是什么呢?添加1.2_Default_BookDetail.webtest就可以了;
3. 是不是可以復用?比如3.4_BookDetail – SearchHistory,我們要完成這樣的驗證:BookDetail是對的,SearchHistory是對的,當二者關聯起來的時候也是對的;要完成前面兩個目標很簡單直接調用3.0_BookDetail.webtest 5.0_SearchHistory.webtest就可以了;(點右鍵:Add Call To Web Test…)
4. 是不是可以可以分工協作?顯然每一個webtest都可以獨立的完成,對于重復驗證的部分直接調用你的搭檔的webtest就可以了,互不影響;這和我們開發中的調用很像
這樣做我們得到了什么別的好處?
1. 迅速的定位錯誤;3.0_BookDetail.webtest 不能通過測試5.0_SearchHistory.webtest能通過測試,3.4_BookDetail – SearchHistory不能通過測試;這說明什么?是因為BookDetail頁面的出錯了,而且錯誤導致了后面的SearchHistory頁面也是錯的。而SearchHistory頁面本身是沒有問題的。
2. 網站改進用來評估風險;比如我現在要改進3.0_ BookDetail,改進之后哪些頁面會不正常,直接看3.1到3.4就可以了;
VSTS自動化測試工具能做什么、擅長做什么
下面僅僅是簡單的列了一下,具體的內容請參考MSDN:
Web 測試通過發出 HTTP 請求在協議層工作。
Web 測試不運行 JavaScript。但是,可以在運行時通過使用 Web 測試插件、Web 測試請求插件、提取規則或編碼的 Web 測試來模擬 JavaScript 操作。
通過在瀏覽器會話中記錄活動,可以創建 Web 測試。
還可以使用 Web 測試編輯器手動構建 Web 測試。
Web 測試在“Web 測試編輯器”中最初是一個作為表示 Web 請求的 URL 列表。如有必要,可以將這些請求轉換為 Visual C# 或 Visual Basic 代碼(稱為“編碼的 Web 測試”)。在 Web 測試轉換為相應的編碼格式之后,可以添加循環和分支構造。
Web 測試和 Web 測試結果中可能包含敏感信息,這些信息可能會被用來生成對計算機或網絡的攻擊。Web 測試和 Web 測試結果包含 URL 和連接字符串。在與他人共享測試或測試結果時應注意這一點。
原文轉自:http://www.anti-gravitydesign.com