本文目錄一覽:
剛面完的位元組跳動Python軟件測試用例編寫(含思路)
軟件測試編寫是軟件測試的基本技能;也有很多人認為測試用例是軟件測試的核心;軟件測試中最重要的是設計和生成有效的測試用例;測試用例是測試工作的指導,是軟件測試的必須遵守的準則。
在這裡我們不討論以上的各種觀點,但是綜上所述,大家可以看出,測試用例編寫這項軟技能非常重要且是測試人的必備技能,相信很多人沒有質疑。
下面我們介紹下測試用例編寫。
我們將用例編寫分為黑盒用例編寫和白盒用例編寫兩大類。
黑盒測試用例(優先)+白盒測試用例(補充)=完整測試用例
總體編寫策略:
對於測試用例編寫來說,常用的四種方法基本就夠用了,等價類、邊界值、正交實驗法、錯誤推斷法,輔以場景測試法、需求/設計轉換法、探索式測試思想,可以應付絕大多數產品的測試。個別的產品還需要在某一點細化和擴充,需要就事論事。
使用各種編寫方法的綜合設計策略;
1)在任何情況下都必須使用邊界值分析方法,經驗表明用這種方法設計出測試用例發現程序錯誤的能力最強。
2)必要時用等價類劃分方法補充一些測試用例,尤其注意無效等價類情況。
3)如果程序的功能說明中含有輸入條件的組合情況,則一開始就可選用因果圖法(或判定表法、正交試驗法)。
4)用錯誤推測法再追加一些測試用例,主要是利用測試經驗。
5)對照程序邏輯,檢查已設計出的測試用例的邏輯覆蓋程度,如果沒有達到要求的覆蓋標準,應當再補充足夠的測試用例;參照白盒用例編寫。
6)對程序的應用場景進行研究和思考,增加不同場景下的測試用例;用戶場景測試必須重視,很大一部分程序錯誤就是因為測試場景與用戶真實場景的差異性帶來的。
7)對業務和程序有更深的理解之後,可以充分發揮發散思維和探索式想法;大家不要誤解探索式測試就是漫無目的的測試,其實探索式測試有非常詳細的測試指導思路。
常見的方法如下:
(1)等價類
(2)邊界值
(3)因果圖
(4)判定表驅動法
(5)正交實驗法
(6)功能圖法
(7)場景實驗法
(8)錯誤推斷法
(9)需求轉化
(10)設計文檔
(11)探索式測試
等價類:選取少數有代表性的數據,這一類數據等價於這一類的其它值;找出最小的子集,可以發現最多的錯誤;
兩大特性:必須設計的用例;涵蓋了大部分情況;
兩類情況:有效等價類;無效等價類;
轉化為測試用例
1、按照輸入條件、有效等價類、無效等價類建立等價類列表,列出所有的等價類;
2、為每一個等價類固定一個編號;
3、設計一個測試用例,使其覆蓋一個或多個有效的等價類;
4、設計一個或更多的測試用例以覆蓋剩餘的有效等價類;
使用場景:輸入條件(取值範圍/值個數;必須值集合;布爾值;一組處理值;必須遵守的規則;再細分更小等價類;)
等價類舉例:
以三角形測試為例:輸入3個整數做為三角形的三個邊,通過程序判定三角形的類型。
邊界值:所謂邊界條件,是指輸入和輸出等價類中那些恰好處於邊界、超過邊界、或在邊界以下的狀態 ;
兩個特徵:選擇一個或多個元素,以便等價類的每一個邊界都經過了測試;與僅僅關注輸入條件不同,還需要考慮結果空間(輸出等價類)設計測試用例;
邊界條件可能非常微妙,因此把他們確定下來煞費心思;
使用場景:輸入+輸出都需要考慮(值的範圍;值個數;有序集合;內部數據結構;分析規格說明;)
邊界值舉例:
以三角形測試為例:輸入3個整數做為三角形的三個邊,1a、b、c10,通過程序判定三角形的類型;
因果圖:輸入條件的組合進行分析。用一個系統的方法選擇出高效的測試用例集;
分析思路:
1、分析規格說明描述,確定原因和結果,並賦予標識符;
2、分析規格說明語義,找出原因與原因之間,原因與結果之間關係,畫出因果圖;
3、有些原因與原因之間,原因與結果之間組合不會出現,用記號表明約束或限制條件;
4、因果圖轉換為判定表;
5、判定表的每一列作為依據,設計測試用例;
使用場景:必須考慮輸入條件的各種組合(一種適合於描述多種條件的組合、相應產生多個動作的形式來進行設計);
4、黑盒-判定表
判定表:分析和表達多邏輯條件下執行不同操作的情況的工具 ;略過因果圖的繪製,直接列出所有組合進行篩選;
分析思路:判定表通常有四個部分組成:條件樁、動作樁、條件項、動作項;
判定表的建立步驟:(根據軟件規格說明)
確定規則個數;列出所有條件樁和動作樁;填入條件項;填入動作項,得到初始判定表;簡化合併相似規則;
使用場景:控制類和遊戲。優點是能把複雜的問題按各種可能的情況一一列舉出來,簡明而易於理解,也可避免遺漏。缺點是不能表達重複執行的動作,例如循環結構。
5、黑盒-正交試驗法
正交實驗法:利用因果圖來設計測試用例時, 輸入原因與輸出結果之間的因果關係,有時很難從軟件需求規格說明中得到;往往因果關係非常龐大,以至於測試用例數目巨大,為了有效地、合理地減少測試的工時與費用,可利用正交實驗設計方法進行測試用例的設計。
分析思路:
(1)提取功能說明,構造因子–狀態表 ;
(2)加權篩選,生成因素分析表 ;
(3)利用正交表構造測試數據集 ;
使用場景:必須考慮輸入條件的各種組合(從大量的數據中挑取適量、有代表性的點,合理有效的測試);
6、黑盒-場景實驗法
場景實驗法:軟件幾乎都是由事件觸發來控制流程的,事件觸發時的情景便形成了場景,而同一事件不同的觸發順序和處理結果形成事件流;生動的描繪出事件觸發時的情景,有利於設計用例,同時測試用例也更容易的得到理解和執行。
分析思路:
每條路徑都反映了基本流和備選流;基本流是最簡單的路徑;備選流自基本流開始,會有特定條件下加入並執行,可能有多種情況;
使用場景(0代表基本流):0;0+1;0+1+2;0+3;0+3+1;0+3+1+2;0+4;0+3+4;…
7、錯誤推斷法
錯誤推斷法:基於經驗和直覺推測程序中所有可能存在的各種錯誤,從而有針對性的設計測試用例的方法;更多的與用戶的使用習慣及測試程序中的常見問題為主。
分析思路:
(1)列舉出程序中所有可能有的錯誤和容易發生錯誤的特殊情況,根據這些情況選擇測試用例;
(2)注意積累與分享;
使用場景:任何測試、任何情景下都會用到的方法。
有常用的測試用例集,可以參照。
舉例:數字輸入驗證,分別輸入數字(正數、負數、零值、單精度、雙精度)、字符串、空白值、空值、臨界數值;不合法的輸入,系統給出必要的判斷提示信息;
8、黑盒-需求轉換法
需求轉換法:根據需求,執行需求分析,並編寫測試用例。
分析思路:
(1)將需求轉換為思維導圖;
(2)仔細推敲每一個字的含義;
(3)與用戶的使用場景和目的結合;
(4)嚴格設計每一個用例;
(5)可以建立一種模型,進行需求轉換;
使用場景:任何測試、任何情景下都會用到的方法。
注意:需求的變更帶來的影響;需求理解偏差帶來的影響;需求含糊不清帶來的影響等;
9、黑盒-設計文檔
設計文檔:參照設計文檔,可以理解軟件系統內部設計流程及處理機制,對比寫好的測試用例,可以在對應功能及模塊處新增;
分析思路:
(1)仔細閱讀設計文檔;
(2)與相關人員溝通實現機制;
(3)結合測試用例編寫方法,對比之前寫好的用例;
使用場景:任何測試、任何情景下都會用到的方法。
注意:設計文檔的編寫正確性;設計文檔的理解偏差;
10、黑盒-探索式測試法
探索式測試法:無限創意的測試點,永無止境的探索測試;我們要在測試的最前沿發揮洞察力、技術及應變措施,找出產品的缺陷;
分析思路:
局部探索式測試;全局探索式測試;混合探索式測試;
使用場景:任何測試、任何情景下都會用到的方法。像漫遊一樣,自由地尋找軟件中的缺陷,軟件測試的未來必然有探索式測試。
基本思路:
第一步需要繪製流程圖;
第二步根據路徑分析法確定測試用例;
第三步使用等價類/邊界值的方法確定測試用例的數據
第四步根據實際情況補充(如默認流程、特殊流程等)
基本策略:
1、語句覆蓋準則基本上沒啥用,比較強的邏輯覆蓋準則是判定覆蓋或者條件覆蓋;通常判定覆蓋可以滿足語句覆蓋;語句覆蓋判定覆蓋條件覆蓋;
2、循環覆蓋來說,完全的路徑測試並不符合實際;
若你想深入學習軟件測試,但是卻苦於沒有資源,現在就給大家奉上一份13G的超實用乾貨測試學習資源,涉及的內容非常全面。 需要點擊鏈接免費領取喔
包括測試軟件學習路線圖,50多天的測試上課視頻、16個突擊實戰測試項目,80餘個軟件測試用軟件,37份測試文檔,70個軟件測試相關問題,40篇測試經驗級文章,上千份測試真題分享,還有2022年軟件測試面試寶典,還有軟件測試求職的各類精選簡歷,希望對大家有所幫助……
如何着手開始Python程序的測試驅動開發
首先必然是選用一個測試框架,然後循環三步軍規:編寫用例,實現用例,重構
如何使用python 語言來實現測試開發
對於各種驅動接口,Python來編寫測試用例的好處是:由於Python不需要編譯,你所執行的也就是你所編寫的,當發生異常的時候,你無須打開集成開發環境,加載測試工程、並調試,你能夠很方便的看到python測試腳本的內容,什麼地方出了異常可以立刻發現,例如:
from ctypes import *
rc =c_int(-12345);
dll = windll.LoadLibrary(“dmodbc.dll”);#加載被測試組件
#=================#
SQLHANDLE_env = pointer(c_long(0));
SQLHANDLE_cnn = pointer(c_long(0));
SQLHANDLE_stmt = pointer(c_long(0));
pdns = c_char_p(“FASTDB”);
puid = c_char_p(“SYSDBA”);
ppwd = c_char_p(“SYSDBA”);
#env handle
rc = dll.SQLAllocHandle(1,None,byref(SQLHANDLE_env));
print “result of henv handle alloc :%d” %rc;
#cnn handle
rc = dll.SQLAllocHandle(2,SQLHANDLE_env,byref(SQLHANDLE_cnn));
print “result of cnn handle alloc :%d” %rc;
#connect!
rc = dll.SQLConnect(SQLHANDLE_cnn,pdns,-3,puid,-3,ppwd,-3)
print “result of connect :%d” %rc;
#stmt handle
rc = dll.SQLAllocHandle(3,SQLHANDLE_cnn,byref(SQLHANDLE_stmt));
print “result of stmt handle alloc:%d” %rc;
#exec
rc = dll.SQLExecDirect(SQLHANDLE_stmt,”insert into t values(1)”,-3);
print “result of exec:%d” %rc;
#free========================
rc = dll.SQLFreeHandle(3, SQLHANDLE_stmt);
print rc;
rc = dll.SQLDisconnect(SQLHANDLE_cnn);
print rc;
rc = dll.SQLFreeHandle(2, SQLHANDLE_cnn);
print rc;
rc = dll.SQLFreeHandle(1, SQLHANDLE_env);
print rc;
在上面我們可以看到,Python調用c/c++接口是十分容易的,只需要把動態庫加載進來,然後把這個動態庫當作一個對象實例來使用就可以了。下面將是一個使用ado.net接口的例子:
import System;
from Dm import *#Dm是DMDBMS提供的ado.Net的DataProvider
#print dir(Dm.DmCommand);
i =0;
cnn = Dm.DmConnection(“server = 127.0.0.1; User ID = SYSDBA; PWD = SYSDBA; Database = SYSTEM; port = 12345”);
cmd = Dm.DmCommand();
cmd.Connection = cnn;
cmd.CommandText = “insert into t values(1);”;
cnn.Open();
i=cmd.ExecuteNonQuery();
print i;
cmd.Dispose();
cnn.Close();
可以看到,.net對象的使用與在VisualStdio上進行開發幾乎沒有任何區別。
通過使用Python進行測試用例的開發,最大的好處莫過於:學習成本非常低,測試工程師只需要學習Python,對於其他語言稍有了解就可以了。同時只需要少量的測試開發工程師對Python測試框架進行維護。
這樣的好處就是便於測試人員將精力專精在一個方向,免於「什麼都會一點,但什麼都不精」的情況。當然測試人員具備廣闊的知識面,會使用各種常見的開發工具與平台是好事情,並且也是必要的,不過在短時間內要求迅速能夠勝任大多數任務也是企業在人才培養上的期望目標。
原創文章,作者:BRTV8,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/129742.html