網站測試—系統應該有的功能

發表于:2012-09-11來源:不祥作者:知平軟件點擊數: 標簽:自動化測試
在前面幾篇文章網站測試自動化系統—基于Selenium和VSTT、數據驅動測試、在測試代碼中硬編碼測試數據里,大概介紹了編寫測試代碼的過程。然而光把代碼寫完了是不夠的,自動化測試不僅僅是將原本手工執行的測試用例通過編碼的方式自動化。一個完整的自動化測試

  在前面幾篇文章網站測試自動化系統—基于Selenium和VSTT、數據驅動測試、在測試代碼中硬編碼測試數據里,大概介紹了編寫測試代碼的過程。然而光把代碼寫完了是不夠的,自動化測試不僅僅是將原本手工執行的測試用例通過編碼的方式自動化。一個完整的自動化測試過程應該包括如下幾個過程:

  1. 在實驗室里面自動選擇機器來執行測試過程,比如說為了測試一個軟件產品,以Office舉例。因為微軟已經為Windows發布了很多的版本,Windows XP, Windows Vista, Windows 7等,而每一個版本的Windows還有不同的變種,例如Vista有企業版,旗艦版,專業版等等,每個變種提供的功能有一點的差別。另外,還要考慮在64位和32位操作系統上安裝,還有國際化測試等等。這樣一來,為了完全測試Office,測試矩陣肯定非常大,也許需要測試幾百個平臺,即使以每個平臺需要一臺測試機估計的話,也需要幾百臺機器。如果是純粹人工來管理這些機器的話,不僅費時費力,而且出錯的幾率會很大—比如說你不能找一臺32位處理器的機器安裝64位的操作系統。因此,一般來說,一個大的軟件產品團隊都會使用或者自己編寫工具來管理測試機。

  測試網站也是一樣的,需要考慮到瀏覽器之間的兼容性,不同測試類型需要不同的測試機器,以及國際化等方面的因素,同樣會要求不少的機器執行測試。因為這個軟件的制作涉及到分布式開發的一些理念,所以我不會在這系列的文章里講解如何實現這種系統。

  2. 自動準備測試環境,既然機器已經從測試機集群中挑選出來了,下一步就是準備測試環境,例如重裝系統(當然啦,Ghost還原也行),安裝產品所依賴的軟件,以及安裝最新版本的產品(每日編譯完成以后生成的新版本),將自動化測試用例程序拷貝到測試機,準備測試數據等等。

  3. 執行自動化測試用例。這一過程,包括我們通常理解的將需要手工執行的測試用例使用編碼的方式使之自動運行。另外,這一過程還包括一些可選的子過程:

  a) 自動生成測試用例所需要的測試數據,生成隨機的合法的測試數據不是一件容易的工作。雖然你可以random()之類的函數生成隨機數據,但是采用這種簡單的方法很難生成合法的數據。比如說,為了測試網站的用戶登錄系統,大部分網站都是要求用戶名不能包括特殊字符,這樣你就需要在隨機生成數據的過程中添加一些限制條件。

  一般來說,軟件產品在接受用戶輸入的時候,都會有一些不同的限制條件;因此提供一個生成隨機但又合法的測試數據的通用代碼庫不是一件容易的事情。這也是為什么,我在這系列文章里面,介紹數據驅動測試的原因。

  b) 自動生成自動化測試用例。這一步驟并不是說錄制測試步驟,根據測試步驟生成C#或者其他語言的代碼。這里說的是,軟件自動生成測試用例,并生成對應的自動化測試代碼。比如說,單元測試一般就是根據函數的參數,設計對應的測試用例;在程序中,參數類型一般來說都是有限的,要么就是編程語言自帶的固定類型,要么就是程序員自定義的類型。這樣我們是有機會根據參數類型,自動生成測試用例的,微軟的Pex就是一個這個領域很好的例子。

  又比如,測試人員可以設計產品的模型,即描述產品應該實現的功能,然后通過特定的軟件分析這個模型生成測試用例,微軟的Spec Explorer就是這方面的例子。

  再比如,如果你是在測試一個函數庫,例如.NET Framework。一般來說,用戶(程序員)使用函數庫的時候無非就是一些API的排列組合。我們可以先針對每個公開的API設計單元測試代碼,然后編寫一個程序將這些單元測試用例隨機組合,生成新的測試用例。舉個例子,假設要測試數據庫連接方面的API,先單獨根據Open, ReadData, Close等函數編寫好單元測試用例,然后由程序將這些用例隨機排列成一些新的用例。當然,隨機排列的問題就是會生成非法的調用序列,比如Close, ReadData, Open這個序列的就是非法的。因此測試用例隨機產生程序的一個很重要的工作就是在測試工程師的配合下,移除掉這些非法的序列。

  4. 測試結果收集自動化,因為是同時在多臺機器上執行測試用例,要求測試人員手工收集測試結果是一個很麻煩的過程;所以這一部分由程序自動完成是非常必要的, 一般來說,測試用例執行完畢以后,自動化測試腳本會將測試結果自動發布到一個中心數據庫上。項目管理團隊會通過一些報表服務—例如SQL Server Reporting Services等系統來評估以下幾個內容:

  a) 產品哪些組件的風險比較高,即容易出錯或者沒有完整地測試過。

  b) 產品的健壯程度。

  c) 是否可以發布產品,或者延期發布?

  這篇文章大致總結了自動化測試系統應該完成的任務,本來應該當作緒論寫的。不過我覺得可能很多人對純理論的東西不感興趣,因此將一些實現細節放在前面先寫了。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97