qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          VS2010中的自動化測試——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性能測試之前先創建一個簡單的網站,包括一個添加用戶數據和顯示用戶數據的網頁,數據表設計如下:

            網站用戶界面如下:

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

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

           

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

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

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

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



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

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

            下面我來詳細說一下性能測試編輯窗口中的各個功能及操作。

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

            ● Root Level:可以說是一條Web性能測試的入口點,比如:可以在此設置用戶驗證、代理或者為這條測試添加一些描述信息等;

            ● Request Level:在Web性能測試中記錄下來的每一條單獨的請求,可以在此設置用戶思考時間(think time)、請求方式(GET或者POST)或者設置是否緩存等;

            ● Request Parameter Level: 這里是每次請求的參數設置,可以在此設置是否進行Url編碼、值還有名稱。

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

            三、提取規則(Extraction Rules)

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

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

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

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



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

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

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

            提取規則設置如下:



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

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

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

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

            四、驗證規則(Validation Rules)

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

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

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

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

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

          posted on 2011-12-05 14:17 順其自然EVO 閱讀(1853) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2011年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 梅河口市| 星子县| 谷城县| 磐安县| 松阳县| 德令哈市| 茌平县| 苗栗县| 崇左市| 武山县| 沧源| 辽中县| 元氏县| 阳曲县| 绍兴县| 五河县| 绥滨县| 通州区| 文化| 科技| 涞源县| 常宁市| 北海市| 潮州市| 梁山县| 开原市| 平谷区| 信宜市| 孙吴县| 西畴县| 二连浩特市| 宾川县| 淮南市| 西安市| 遂昌县| 荆州市| 渝中区| 斗六市| 江源县| 揭东县| 双桥区|