VS2010中的自動化測試(4)——Web性能測試

網站的性能由很多不同的因素決定,比如:網絡速度、不同的瀏覽器或者在同一時刻的用戶數量、硬件處理能力等因素,都會影響到網站的性能和響應時間。Web性能測試就是幫助開發者在開發工程中就能確認並盡力修復這些問題。

下面討論幾種主要的性能測試:

  • Validation and verification test: 這個測試用來幫助我們檢驗輸入值和是否能在期望的入口安全登錄。比如:一個字段要求你輸入一個Email地址,那麼你必須正確輸入才能提交頁面。
  • Web page usability test: 它相當於是在生產環境中,通過模擬用戶行爲來查看網站內容是否完整。比如:每個鏈接是否正確或者頁面上的信息是否顯示正確等。
  • Security Testing: 它幫助我們檢驗不同權限的用戶是否能得到相應的內容,還有對本地或者服務器上其它資源文件的訪問權限。
  • Performance Testing: 幫助我們驗證在特地環境下頁面響應的時間,它包括壓力測試和負載測試。
  • Testing web page compatibility: 這個就是驗證網站在不同瀏覽器上的兼容性。
  • Testing a web application using different networks: 這個測試取決於我們的最終用戶是處在什麼樣的網絡環境中。

對於Web性能測試,還有很多其它相關的測試,比如不同的操作系統、不同的數據庫的影響等等都與性能有一定的關係。

上面我所說的性能測試,在VS2010中提供了相應的工具,爲我們進行測試,下面我們就來創建一個簡單的Web性能測試。

創建Web性能測試

在我們創建Web性能測試之前先創建一個簡單的網站,包括一個添加用戶數據和顯示用戶數據的網頁,數據表設計如下:

20111029165035

網站用戶界面如下:

20111029180723

這個Web應用程序可以部署在Web服務器上進行測試,也可以直接在ASP.NET Development Server上進行測試,當然,如果在開發環境上測試,需要保持Development Server運行着。

現在開始來創建一個Web性能測試,可以直接點擊VS工具欄上Test->New Test…,然後選擇如圖所示文件:

20111029182117

點擊OK後,會提示你新建一個測試工程,並給它命名,然後點擊Create。這時會彈出一個IE窗口如下所示:

20111029184423

左側是一個Web Test Recorder(有可能在你創建測試文件後,彈出IE時沒有這個東西出現,你可以通過IE的工具->管理加載項選項中將Web Test Recorder啓用),它主要用來記錄瀏覽測試網頁時所有的操作,它會將所有的request和response記錄下來,它還可以幫我們在不同的情況下找出我們期望的結果。

現在我們輸入剛剛創建的那個網頁的地址,然後我們輸入一些信息進行提交:

20111029191558

點擊Insert之後,我們會看到Recorder幫我們捕捉到一些信息:

20111029191758

完成所有操作後,點擊Recorder面板中的Stop按鈕,我們就可以自動跳轉回VS中,並顯示出之前記錄的所有請求信息。

20111029201648

至此,一個簡單的Web性能測試就建好了。可以點擊工具欄左上角的運行測試一下。上圖顯示的是一個Web性能測試的編輯窗口,窗口中,樹的每一個層級都有不同的屬性可以進行設置。除此之外,編輯窗口還有一個工具欄,能爲測試用例提供不同的功能以及數據源等。

上次說到我們編輯窗口中的樹結構,每一層都會有不同的屬性設置。

image

  • Root Level:可以說是一條Web性能測試的入口點,比如:可以在此設置用戶驗證、代理或者爲這條測試添加一些描述信息等;
  • Request Level:在Web性能測試中記錄下來的每一條單獨的請求,可以在此設置用戶思考時間(think time)、請求方式(GET或者POST)或者設置是否緩存等;
  • Request Parameter Level: 這裏是每次請求的參數設置,可以在此設置是否進行Url編碼、值還有名稱。

這裏所有的屬性設置你都可以在屬性視窗中看到說明,如果還有不懂的,可以查看MSDN進行幫助,所有的屬性都在Microsoft.VisualStudio.TestTools.WebTesting這個命名空間下。

提取規則(Extraction Rules)

在VS中我們可以用提取規則的功能把網站中的一些有用的數據提取出來。

通常情況下,幾乎所有的網站,它們頁面之間總會有一些依賴關係,比如說你的下一個請求依賴你上一次請求響應中得到的一些數據。所以提取規則這個功能就是可以讓你從響應的數據中提取到你需要的數據,並保存下來,用於你下一次的請求或者你之後需要的時候。它保存下來的數據在一個上下文參數中,你可以在全局環境中使用它。

在VS2010中已經爲我們內建了幾種提取規則,如圖:

QQ截圖20111120120426

關於內建提取規則說明,可參見這裏。如果內建的這些提取規則還不能滿足你的需要,也可以自定義自己的提取規則。

這裏我借百度(偷個懶^_^)做個Demo,看下怎麼使用提取規則。

根據上篇內容,首先利用Recorder來打開百度,然後隨便搜索一個東西(我百度的James),最後點擊Stop,會在VS中生成如下數據:

QQ截圖20111120175711

現在我們在第一請求節點上右鍵添加一個提取規則,因爲我是要提取第一次請求響應回來的中的值,如下所示:

QQ截圖20111120180704

提取規則設置如下:

QQ截圖20111120182417

通過上面的設置,我將百度頁面中,搜索按鈕的值(“百度一下”)進行了提取,那麼baidu這個參數在之後的程序中將一直保存着這個值。它的訪問方式類似於key-value這樣的形式。我們運行一下這個測試,就可以在結果中看到我們提取的信息了。

QQ截圖20111120183128

我們可以將保存出來的信息用於下一次請求或者之後的任何一次請求中,比如我們可以修改第二個請求中需要搜索的值:

QQ截圖20111120184302

通過右鍵屬性,然後在值屬性中,將它重新綁定到baidu屬性,我們還需要注意一下的是我們之前提取的值是中文,所以需要將Url編碼設置爲ture。最後我們重新運行一下測試看下結果:

QQ截圖20111120185609

這裏可以看到我們的第二次搜索不在是James,而是“百度一下”了。

驗證規則(Validation Rules)

很多網站都有一些驗證程序來驗證輸入或者輸出是否正確,比如:用戶名不能含有特殊的字符、密碼不得少於6個字符或者正確的Email格式等等。

驗證規則這個功能就是驗證響應的數據是否包含期望的信息,如果有,這條請求就可以pass,否則就會fail。

我的VS2010也內建了幾種驗證規則:

QQ截圖20111120210649

關於內建的驗證規則說明,可參見這裏。如果內建的這些驗證規則還不能滿足你的需要,也可以自定義自己的驗證規則。

驗證規則的使用方法其實和提取規則差不多,但是它只是起驗證的作用,而不會幫你保存數據。但是要注意的一點是,隨着驗證規則的增多,網站的性能測試和測試時間都將受到影響,尤其是在做壓力測試的時候,更要決定好哪些數據非常重要的、需要驗證的。當然,VS中也提供設置驗證規則的級別來降低這些影響。

我們可以劃分一批請求組合成一個事務,然後我們就可以跟蹤分析這個事務請求所花費的總體時間了。

事務可以通過簡單的指定開始的request和結束的request來設定。

在Root節點右鍵鼠標,選擇Add Transaction…點擊。

image

然後在彈出的對話框中,填寫事務的名字,選擇好第一個Request和最後一個Request,事務會自動將它們兩個之間所有的request都添加進來。

image

點擊OK之後,就可以在我們的編輯窗口見到我們的兩個request添加進事務了。

image

點擊運行一下,我們可以看到測試運行結果,裏面包含了事務運行的總時間等。

image

添加數據源(Add Data Source)

在之前的文章裏我們知道我們可以設置請求的參數。如果我們每次測試程序,都需要不同的參數來測試,那我們每次都得手動來修改這些參數則非常的麻煩且浪費時間。所以,我們可以提供一個數據源來自動完成這個修改的過程。

我們通過點擊工具欄上的添加數據按鈕來添加數據源。

image

支持的數據源格式有CSV、SQL Server數據庫、XML或者Access數據庫等。這裏填好數據源的名字之後,我選擇的是一個CSV的文件。

image

這個CSV文件格式如下,它提供給我們百度的一些搜索關鍵詞。

image

完成數據源的添加後,我們就可以在編輯器窗口看到我們添加的數據源了。

image

最後,我們就可以在Request中的參數中綁定我們設置的數據源了。

image

這樣,我們測試用例中的請求參數就可以使用我們數據源中的數據進行替代了。

參數化Web服務器(Parameterize Web Server)

我們在做Web性能測試時,一般不可能只在一個服務器上做測試,我們可能還會在不同配置的服務器上做相同的測試,這時,VS提供將Web服務器參數化的功能。

在編輯窗口中,我們點擊工具欄中的如下按鈕。

image

點擊之後,會彈出一個窗口,這個窗口將列出我們性能測試中所用到得服務器的Url以及它們的上下文參數名字。

image

可以在這個窗口上點擊Change…來更改參數的名字以及服務器的Url地址。

image

這裏,我都保持默認不變,點擊OK之後,就可以看到編輯器中,所有Request中的Url都變成如下圖所示了。

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章