- 相關(guān)推薦
如何進行測試方案設(shè)計
容量測試是用來研究程序已經(jīng)加載非常大量的數(shù)據(jù)后,處理很少量或很大量數(shù)據(jù)任務(wù)時的運行情況。下面請看小編帶來的如何進行測試方案設(shè)計!
如何進行測試方案設(shè)計
一、方法簡介
1. 定義
容量測試是用來研究程序已經(jīng)加載非常大量的數(shù)據(jù)后,處理很少量或很大量數(shù)據(jù)任務(wù)時的運行情況。這一測試主要關(guān)注一次處理合理需求的大量數(shù)據(jù)時功能的運行情況。
2. 設(shè)計方法
系統(tǒng)中有許多功能都需要進行容量測試,比如:在局容量中進行了限定的指標都需要進行容量測試,另外系統(tǒng)經(jīng)常擴容或者改版,每次擴容和改版都需要進行相應(yīng)的容量測試。容量測試是用來測試系統(tǒng)已經(jīng)加載了大量數(shù)據(jù)的情況下,系統(tǒng)各個功能的運行情況。容量測試有兩個關(guān)鍵點:(1)如何加載大容量的數(shù)據(jù);(2)加載數(shù)據(jù)后,需要進行哪些測試。以下用一個配置表的容量測試進行說明。
二、加載大容量數(shù)據(jù)的方法
添加數(shù)據(jù)一般需要開發(fā)測試腳本,根據(jù)數(shù)據(jù)呈現(xiàn)出的不同規(guī)律性,腳本的開發(fā)方式也有所差異,下面介紹使用WinRunner開發(fā)容量測試腳本的三種方式:
1. 開發(fā)結(jié)構(gòu)化腳本進行容量測試
結(jié)構(gòu)化腳本類似于結(jié)構(gòu)化程序設(shè)計,利用腳本中的指令控制腳本的執(zhí)行。這些指令一般是選擇結(jié)構(gòu)或者迭代結(jié)構(gòu)。選擇控制結(jié)構(gòu)使腳本具有判斷功能,最普通的形式是if語句。迭代控制結(jié)構(gòu)可以根據(jù)需要重復一條或者幾條語句,直到滿足重復的次數(shù)為止。我們正是利用了WinRunner腳本的能夠循環(huán)添加數(shù)據(jù)的功能達到容量測試的目的。結(jié)構(gòu)化腳本適用于所添加的數(shù)據(jù)具有某種規(guī)律性,把數(shù)據(jù)的這種規(guī)律性以腳本的形式設(shè)計出來就可以完成數(shù)據(jù)的添加。
腳本設(shè)計步驟如下:
。1)尋找添加數(shù)據(jù)的規(guī)律,容量測試的數(shù)據(jù)在添加的時候一般都具有規(guī)律性,有的以某個關(guān)鍵字遞增,有的以某個指標遞增,首先把這種規(guī)律總結(jié)出來;
。2)將數(shù)據(jù)增加的規(guī)律以腳本的形式錄制下來;
(3)添加迭代結(jié)構(gòu)和選擇控制結(jié)構(gòu),一般以循環(huán)結(jié)構(gòu)滿足數(shù)據(jù)重復添加的需要;
。4)調(diào)試并運行腳本,添加數(shù)據(jù);
下面以添加No.7路由為例進行說明。
(1)尋找規(guī)律。局容量中設(shè)定了No.7路由的最大值為255,通過試驗,我們發(fā)現(xiàn)No.7路由數(shù)據(jù)以路由號為關(guān)鍵字遞增,每次添加路由數(shù)據(jù)成功后,添加的路由號都被刪除,新添加時只需記錄先前的位置即可。
。2)錄制單次執(zhí)行的腳本。如下所示:
# Add signaling route
win_mouse_click ("Add signaling route", 165, 46);
win_type ("Add signaling route","Route");
win_mouse_click ("Add signaling route", 193, 154);
。3)添加迭代語句。局容量中No.7路由的最大值為255,我們要將步驟(2)中錄制的語句循環(huán)執(zhí)行255次就可以添加255條數(shù)據(jù),為此需要在(2)中的腳本上加入控制結(jié)構(gòu),如下:
For(i=0;i<255;i++)
{
# Add signaling route
win_mouse_click ("Add signaling route", 165, 46);
win_type ("Add signaling route","Route");
win_mouse_click ("Add signaling route", 193, 154);
}
。4)循環(huán)執(zhí)行,添加數(shù)據(jù)。
2. 數(shù)據(jù)驅(qū)動的容量測試
如果添加的數(shù)據(jù)沒有規(guī)律,那么就需要使用數(shù)據(jù)驅(qū)動腳本。數(shù)據(jù)驅(qū)動是指通過讀取本地Excel表的方式進行測試。當執(zhí)行數(shù)據(jù)驅(qū)動腳本時,WinRunner會讀取數(shù)據(jù)表中的每一筆數(shù)據(jù),并放入被參數(shù)化的地方,然后執(zhí)行一次,直到把所有的數(shù)據(jù)都添加完為止。
腳本的設(shè)計步驟如下:
(1)將需要添加的數(shù)據(jù)放入一個Excel表中,表的第一行表示這組數(shù)據(jù)的名稱。表中的數(shù)據(jù)可以是雜亂無章、毫無規(guī)律的數(shù)據(jù),WinRunner將讀取該表的數(shù)據(jù)添加到被測系統(tǒng)中;
(2)錄制一個添加數(shù)據(jù)的普通腳本,我們將在這個腳本的基礎(chǔ)上構(gòu)建數(shù)據(jù)驅(qū)動測試;
。3)加上開啟及關(guān)閉數(shù)據(jù)表的指令;
。4)加上循環(huán)語句,完成讀取數(shù)據(jù)表的每一筆數(shù)據(jù)的功能;
。5)將腳本中錄制的固定值參數(shù)化為數(shù)據(jù)表的字段值;
(6)調(diào)試并執(zhí)行腳本,添加數(shù)據(jù);
下面以號碼分析為例進行說明。
。1)建立Excel數(shù)據(jù)表。將需要進行號碼分析的數(shù)據(jù)添加到該表中,注意第一行表示數(shù)據(jù)的名稱,不是真正的`數(shù)據(jù)。
(2)錄制普通腳本。錄制號碼分析的普通腳本,其中133851就是添加的號碼,后面我們將對這個號碼參數(shù)化,使其能夠讀取Eecel數(shù)據(jù)表中的數(shù)據(jù)。
# Add the Analysed Digit Type5 [Local Network] Entry5
win_mouse_click ("Add the Analysed Digit Type5 [Local Network] Entry5", 174, 25);
win_type ("Add the Analysed Digit Type5 [Local Network] Entry5","133851");
。3)添加開啟和關(guān)閉數(shù)據(jù)表的指令,數(shù)據(jù)表只有在打開的條件下才能夠讀取數(shù)據(jù)。
table = "D: tableconfig_table.xls"; 表的路徑
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
pause("Cannot open table.");
# Add the Analysed Digit Type5 [Local Network] Entry5
win_mouse_click ("Add the Analysed Digit Type5 [Local Network] Entry5", 174, 25);
win_type ("Add the Analysed Digit Type5 [Local Network] Entry5","133851");
ddt_close(table);
注:該步驟也可以使用WinRunner 自帶的數(shù)據(jù)驅(qū)動向?qū)нM行添加。
。4)添加循環(huán)語句。通過循環(huán)語句逐句讀取數(shù)據(jù)表中的數(shù)據(jù),完成數(shù)據(jù)的自動添加。
table = "D: tableconfig_table.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
ddt_set_row(table,table_Row);
# Add the Analysed Digit Type5 [Local Network] Entry5
win_mouse_click ("Add the Analysed Digit Type5 [Local Network] Entry5", 174, 25);
win_type ("Add the Analysed Digit Type5 [Local Network] Entry5","133851");
}
ddt_close(table);
(5)參數(shù)化。將固定值133851替換為表的Digit參數(shù),這樣每一次循環(huán)就可以讀取數(shù)據(jù)表的一個值,而不是原先的固定值了。
table = "D: tableconfig_table.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
ddt_set_row(table,table_Row);
# Add the Analysed Digit Type5 [Local Network] Entry5
win_mouse_click ("Add the Analysed Digit Type5 [Local Network] Entry5", 174, 25);
win_type ("Add the Analysed Digit Type5 [Local Network] Entry5", ddt_val(table,"Digit"));
}
ddt_close(table);
。6)調(diào)試并執(zhí)行步驟5中的腳本,即可完成數(shù)據(jù)的自動添加。
3. 結(jié)構(gòu)化腳本和數(shù)據(jù)驅(qū)動相結(jié)合
如果添加的數(shù)據(jù)跟測試環(huán)境(如局向號、版本號等)有很大的關(guān)系,但是測試環(huán)境一旦確定下來,其數(shù)據(jù)又有很大的規(guī)律性,在這種情況下添加數(shù)據(jù)就需要將上述的兩種方法結(jié)合起來開發(fā)腳本。使用數(shù)據(jù)驅(qū)動應(yīng)對測試環(huán)境的變化,使用結(jié)構(gòu)化腳本應(yīng)對測試數(shù)據(jù)的變化,具體的使用方法2.1和2.2中已經(jīng)說明,在此不再贅述。
三、 加載數(shù)據(jù)后的測試項
容量測試需要測試的內(nèi)容:一是大容量的數(shù)據(jù)是否可以加載成功;二是加載大容量數(shù)據(jù)后系統(tǒng)是否可以正常運行。第二點需要根據(jù)系統(tǒng)的特點不斷的進行整理總結(jié),如下是一個配置表加滿后的測試設(shè)計項目:
1. 能夠添加最大的容量數(shù)據(jù),在達到最大容量時功能能夠正常運行;
2. 達到最大容量后,該功能的顯示、修改和刪除正常;
3. 超出容量最大值時會有限制,且提示已經(jīng)達到了最大容量;
4. 能夠進行備份、恢復和數(shù)據(jù)同步,同步后系統(tǒng)能夠穩(wěn)定的工作;查看前臺表,數(shù)據(jù)跟后臺一致,尤其是最后的幾條記錄;
5. 關(guān)聯(lián)功能的測試,添加大容量的數(shù)據(jù)后,與該功能關(guān)聯(lián)的功能能夠正常使用;
6. 進行主備倒換和重啟,單板能夠啟動并運行正常;
7. 日志管理中沒有異常的日志信息;
8. 告警管理中,如果有相關(guān)的告警其告警信息正確;
9. 加滿數(shù)據(jù)后不影響后臺的使用,后臺的CPU和內(nèi)存沖高后可以恢復;
10. 前臺的CPU和內(nèi)存沖高后可以恢復;
11. 達到最大容量后,刪除部分排序在前的數(shù)據(jù),再次增加:
。1)配置數(shù)據(jù)達到最大容量;
。2)刪除部分中間的數(shù)據(jù)或者排序在前面的數(shù)據(jù);
。3)再次增加數(shù)據(jù),測試是否能夠增加成功。
四、總結(jié)
容量測試不僅僅是添加數(shù)據(jù)就可以了,要進行全面、深入的容量測試,必須在加載數(shù)據(jù)的基礎(chǔ)上從多個不同的角度測試系統(tǒng)。本文給出了加載數(shù)據(jù)的方法和加載數(shù)據(jù)后的測試樣例,實際應(yīng)用中需要根據(jù)不同系統(tǒng)的特點進行不同的設(shè)計。