一、什么是功能測試?
a.功能測試根據測試用例逐一對被測系統的各項功能進行驗證,驗證各項功能是否滿足用戶的需要(需求規格說明書),關注一個用戶使用被測系統的情況
二、什么是性能測試?
在系統功能已通過測試后,借助測試工具(Loadrunner、Jmeter)在正常、峰值以及異常的情況下來測試被測系統的各項性能指標是否滿足用戶需求,關注多用戶使用被測系統時快不快
三、什么是黑盒測試?
不考慮系統的內部邏輯結構,把程序看成是一個黑盒子,只考慮系統的輸入輸出,檢查程序是否按照需求規格說明書正常使用
輸入:測試用例中的數據
輸出:被測系統的反饋情況(響應)
黑盒測試又稱為數據驅動測試,基於功能的測試
四、什么是白盒測試?
白盒測試是通過對程序內部結構進行分析來檢測出問題,又稱為透明盒測試和邏輯驅動測試,基於代碼的測試
五、白盒測試
1、為什么要做白盒測試?
在系統中出現一個缺陷往往不是由一個原因導致的,就需要通過白盒測試,提前把每個功能模塊都測試一次
2、白盒測試的目的:
a.保證程序中所有關鍵路徑都被測試到,防止系統投入生產后用戶發現系統問題
b.便於衡量測試的完整性,完整性:有沒有把某個功能點的所有可能情況都測試到
c.可以測試到程序中所有的真分支、假分支
d.檢查內存泄漏
c語言:malloc()-->free()
e.檢查程序的異常處理能力,Exception
f.解決實際實驗條件下很難搭建真實測試環境的問題
測試環境:被測系統(數據庫+服務器、代碼)、網絡、操作系統、測試工具
g.檢查代碼是否遵循一定的編碼規范
功能:升溫、降溫
驅動模擬溫度高於+300->降溫
驅動模擬溫度低於-300->升溫
username + passwd
if(username正確andpasswd正確)
返回登錄成功界面
else
提示用戶名錯誤或者密碼錯誤
3、白盒測試的分類:
(1)靜態白盒測試
a.什么是靜態測試?
不實際運行被測系統本身,檢查文檔內容、界面、代碼規范等
b.靜態白盒測試
不實際運行被測系統本身,檢查和審查代碼的設計、結構,也稱為結構化分析
盡早發現程序中的缺陷,可以發現30%-70%的缺陷,可以為黑盒測試人員提供測試思路
c.靜態白盒測試的策略(方法)
--桌前走查
--代碼檢查
--代碼審查(人員:語言專家、行業專家、程序員、項目經理、測試人員)
--正式審查
d.審查單(Checklist):記錄審查代碼時或者公司內部整理的錯誤類型
(2)動態白盒測試
a.設計測試用例,根據測試用例執行被測程序(代碼),驗證代碼的邏輯結構是否滿足需求
b.設計測試用例的方法:
語句覆蓋
判定覆蓋
條件覆蓋
判定+條件覆蓋
條件組合覆蓋
路徑覆蓋
基本路徑測試方法
六、動態白盒測試--邏輯覆蓋
邏輯:代碼
覆蓋:測試
1、語句覆蓋:關心代碼中的可執行語句,設計足夠多的測試用例來執行代碼,確保程序中所有的可執行語句都至少被執行一次
(1)程序流程圖的組成:
菱形--判定語句
長方形--可執行語句
箭頭--程序流向
圓角長方形--程序開始、結束
判定M:a>0 and b>0 真分支Y
a<=0 or b<=0 假分支N
判定Q:a>1 or c>1 真分支Y
a<=1 and c<=1假分支N
1) 需求:把程序中所有可執行語句都至少測試一次
2) 找到程序中所有可執行語句
可執行語句1
可執行語句2
可執行語句3
3) 如果要執行語句1,程序必須執行判定MY,要執行語句2,程序必須執行判定QY,執行完判定M和判定Q,就會執行語句3
4) 找到滿足用例的條件
MY:a>0 and b>0
QY:a>1 or c>1
5) 設計測試
a=9,b=16,c=8
2、判定覆蓋:設計足夠多的測試用例來執行被測程序,把程序中所有判定的真分支、假分支至少執行一次
判定M:a>0 and b>0 真分支Y
a<=0 or b<=0 假分支N
判定Q:a>1 or c>1 真分支Y
a<=1 and c<=1假分支N
1) 需求:測試程序中所有判定的真、假分支
2) 找到程序中所有的真、假分支
分支1:MY
分支2:MN
分支3:QY
分支4:QN
3) 程序執行M判定后,會執行到Q判定,所有程序執行一次可以覆蓋兩個分支
a:MY->QY b:MN->QN
4) 找到滿足用例的條件
a:a>0 and b>0 and a>1 or c>1
b:a<=0 or b<=0 and a<=1 and c<=1
5) 設計測試用例
a:a=6,b=19,c=20
b:a=,b=,c=
3、條件覆蓋:設計足夠多的測試用例,來執行被測程序,使得程序中所有 (判定) 中的所有 (條件) 的所有 (取值) 都至少被執行一次
判定M:a>0 and b>0 真分支Y
a<=0 or b<=0 假分支N
判定Q:a>1 or c>1 真分支Y
a<=1 and c<=1假分支N
1) 需求:測試程序中判定中條件的取真、假值
2) 找到程序中所有的取值
取值1:a>0 真
取值2:a<=0 假
取值3:b>0 真
取值4:b<=0 假
取值5:a>1 真
取值6:a<=1 假
取值7:c>1 真
取值8:c<=1 假
3) 分析
程序執行一次可以覆蓋4個取值,a b a c
a: a 真 b 真 a 真 c真
b: a 假 b 假 a 假 c假
4) 設計測試用例
a: a=12,b=15,c=14
b: a=0,b=-23,c=1
4、條件組合覆蓋:設計足夠多的測試用例,來執行被測程序,使得程序中所有條件取值組合都至少被執行一次
判定M:a>0 and b>0 真分支Y
a<=0 or b<=0 假分支N
判定Q:a>1 or c>1 真分支Y
a<=1 and c<=1假分支N
1) 需求:測試所有條件取值的組合
2) 找到所有條件取值組合
組合1:a>0 and b>0
組合2:a>0 and b<=0
組合3:a<=0 and b<=0
組合4:a<=0 and b>0
組合5:a>1 and c>1
組合6:a>1 and c<=1
組合7:a<=1 and c<=1
組合8:a<=1 and c>1
5、路徑覆蓋:設計所有的測試用例,來執行被測程序,使得程序中所有的可執行路徑至少被執行一次
判定M:a>0 and b>0 真分支Y
a<=0 or b<=0 假分支N
判定Q:a>1 or c>1 真分支Y
a<=1 and c<=1假分支N
1) 要求:測試所有的可執行路徑
2) 找到程序中所有的可執行路徑
路徑1:MY->QY
路徑2:MY->QN
路徑3:MN->QY
路徑4:MN->QN
6、基本路徑測試方法
(1)基本路徑測試方法跟路徑覆蓋類似,至少路徑覆蓋適合簡單的程序,復雜的程序使用基本路徑測試方法計算出所有的關鍵路徑
(2)基本路徑測試方法是根據程序(代碼)畫出控制流圖,根據控制流圖計算圈復雜度(可執行路徑數),根據圈復雜度導出獨立路徑(程序怎么執行,有哪些路徑),根據獨立路徑設計測試用例
(3)畫控制流圖
a.圓圈:一條或者多條語句
b.箭頭:程序的控制流向
c.圓圈可以是判斷語句,如果是判斷語句發出的箭頭必須有一個終止的節點
d.一個圓圈稱為一個節點
e.由節點和箭頭圈定的范圍稱為一個區域,區域用來計算圈復雜度,區域外的范圍也應該計為一個區域
(4)計算圈復雜度
a.V(G)=區域數
b.V(G)=邊(箭頭)-節點(圓圈)+2
c.V(G)=判定節點+1,不適合case多分支語句
(5)導出獨立路徑
路徑1:4→14
路徑2:4→6→7→ 13→4→14
路徑3:4→6→9→10→13→4→14
路徑4:4→6→9→12→13→4→14
