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