15.8運用測試工具
前面說了這么多理論和規(guī)定,我們看看實際工作如何進行。VSTS既然是一套軟件工具,它一定有一些幫助測試人員的工具。Visual Studio 2005的眾多套件中,有一款是:Visual Studio Team Edition for Software Tester。我們在這里也簡單地介紹基本工具的使用。
15.8.1運用工具記錄手工測試
不管多少人,多少文章描述了“測試自動化”及其前景,這些自動化的東西最初還是得有人“手動”地進行。下面的步驟演示了如何創(chuàng)建手工測試。
?。?)在VSTS(有Team Edition For Tester 套件)中,新建一個項目,在Visual C# 或者其他類型中,選中Test。填入適當?shù)捻椖棵趾徒鉀Q方案的名字,可以把它加入源碼控制中。
我們會看到新的項目新建了不少文件(如圖15-2所示)。其中有UnitTest1.cs,我們之前已經(jīng)談過。另一個文件是ManualTest1.mht。
圖15-2創(chuàng)建新的測試項目
(2)打開ManualTest1.mht,你會看到它是模板(又一個模板),在這個文件中,你可以填入下面的內(nèi)容:
a. 測試的標題(Test Title)——簡明的標題。
b. 測試的詳情(Test Details)——測什么。
c. 測試的對象(Test Target)——測試什么功能。
d. 測試的步驟(Test Steps)——提供詳細的測試步驟和每一步期望的結(jié)果。
e. 修改的記錄(Revision History)——對這一測試進行修改的歷史記錄。
九條:不就是這樣一個簡單的文件么,我自己不用寫也可以記住。
阿亨:好記性不如爛筆頭,當測試矩陣有上百個可能的設置,產(chǎn)品又日趨復雜的時候,我們需要把一些手工測試記下來。
15.8.2運用工具記錄自動測試
對于網(wǎng)絡程序,我們可以把對網(wǎng)頁的訪問像錄音一樣錄下,以后測試的時候重新放錄音帶即可。
操作:鼠標右鍵選中測試項目,選擇 Add | Web Test(如圖15-3所示)。
圖15-3新增加一個 Web Test
Internet Explorer 就會打開,同時Web Test Recorder 也會激活,測試人員就可以按照場景測試網(wǎng)站的各項功能進行測試,同時注意到Web Test Recorder 會記錄每一個網(wǎng)頁的地址,以及可能的參數(shù)。
測試人員可以進一步增強測試的內(nèi)容(如圖15-4所示):
圖15-4進一步增加Web Test 的功能
其中值得提出來的是,測試人員可以選中 “Generate Code”,生成測試腳本,可以在腳本一級開發(fā)測試。
不同的測試可以以不同的次序結(jié)合起來運行,測試人員可以用“Ordered Test”來管理這樣的測試集合。可以用和創(chuàng)建Web Test 類似的方法創(chuàng)建 Ordered Test。
15.8.3如何測試效能
除了功能方面的測試外,我們還要測試那些“服務質(zhì)量”。如效能測試、負載測試、壓力測試。我們在第7章中講到了這三種測試的區(qū)別。在Stone 項目中,以產(chǎn)品搜索為例,這三種測試的區(qū)別如下:
效能測試:在100個用戶的情況下,產(chǎn)品搜索必須在3秒鐘內(nèi)返回結(jié)果。
負載測試:在2 000 用戶的情況下,產(chǎn)品搜索必須在8秒鐘內(nèi)返回結(jié)果。
壓力測試:在高峰壓力(4 000 用戶)持續(xù)48小時的情況下,產(chǎn)品搜索的返回時間必須保持穩(wěn)定。系統(tǒng)不至于崩潰。
我們可以舉一個現(xiàn)實生活中旅客列車的例子:
效能測試:在80%上座率的情況下,期望:列車按時到達,并且乘客享受到優(yōu)質(zhì)服務。
負載測試:在100%上座率的情況下,期望:列車大部分按時到達,乘客享受到基本服務。
壓力測試:在高峰壓力是200%上座率,全國鐵路系統(tǒng)增加20%列車,持續(xù)15天的情況下,期望:列車能到站,乘客能活著下車,系統(tǒng)不至于崩潰。
效能、負載、壓力這些方面的測試會產(chǎn)生很多數(shù)據(jù),這些數(shù)據(jù)最好保存在數(shù)據(jù)庫中,以便于跟蹤分析。這些數(shù)據(jù)為以后做網(wǎng)站容量規(guī)劃(Capacity Planning,又稱能力規(guī)劃)提供重要的依據(jù)。
在VSTS中,效能和壓力測試都可以用“Load Test”來實現(xiàn),Load Test 牽涉到許多因素,因此我們需要按部就班地設置,如圖15-5所示:
圖15-5創(chuàng)建負載測試向?qū)?/p>
負載測試的一個核心概念是“場景”,這和軟件設計的場景有所區(qū)別,它主要包含負載測試的各種參數(shù):
?。?)停頓時間(Think Time):在每次請求之間和一批測試之間的停頓。
?。?)負載模型(Load Pattern):模擬的用戶量是恒定在一個數(shù)值(如:總是30 個用戶),或者是分級進行(如:開始是5個用戶,每分鐘增加10個用戶,直到最高50 個用戶)。
?。?)測試混合模型(Test Mix):此次負載測試要運行多少種測試,每種測試所占的比例是多少。
(4)瀏覽器混合模型(Browser Mix):各種瀏覽器的選擇及比例。
(5)網(wǎng)絡混合模型(Network Mix):各種帶寬的網(wǎng)絡及比例。
設置場景后,下一步要決定我們收集什么樣的效能數(shù)據(jù)(Performance Counter),這時候,我們可以收集代理機器(Agent,模擬的服務請求從這里發(fā)出)和控制機器(Controller)的效能數(shù)據(jù),更重要的是收集網(wǎng)絡服務器的效能數(shù)據(jù)(如圖15-6所示)。
圖15-6收集效能數(shù)據(jù)
這些效能數(shù)據(jù)會反映在負載測試中。
最后一步是設置運行負載測試中的各種參數(shù)。
圖15-7是一個網(wǎng)絡負載測試運行的結(jié)果圖:
圖15-7負載測試運行結(jié)果
九條:數(shù)據(jù)太多了,我看這個表有點頭暈,比打麻將要看的數(shù)據(jù)多多了。
阿亨:的確,網(wǎng)絡應用的負載測試是一個復雜的領(lǐng)域,我們要下一番苦功把它掌握。一般把所有數(shù)據(jù)都保持到數(shù)據(jù)庫中,以便將來做分析。但是我們還是要明確測試的目標:看看網(wǎng)絡服務器能否在規(guī)定時間內(nèi)處理用戶的請求,服務器上有沒有出現(xiàn)錯誤。這兩種數(shù)據(jù)都能夠馬上得到。