iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
Modern Web

Google商家大解密就靠網頁設計來加成系列 第 26

[DAY26]白箱與黑箱測試

  • 分享至 

  • xImage
  •  

當專案進開到發一定程度時,測試人員就會開始進行測試的作業,
說到測試,最常聽到的就是白箱測試(White-box testing)與黑箱測試(Black-box testing),接下來就針對這2種測試方式及內容來進行分享。

白箱測試

SA(System Analyst)會進行系統分析規劃、系統架構設計、資料流、系統流程規劃,並會對該專案產出對應的SRD(System requirement and development),此時測試人員就依據SA定義出的文件進行測試,而白箱測試主要就是針對資料流測試(Data flow coverage)系統流程測試(control flow coverage)

資料流測試(Data flow coverage)

測試人員在測試一個功能時會輸入資料,當進行一連串的計算後,會得最後的結果,當這資料從輸入到輸出中間資料會有所變換,就是所謂的資料流。
而資料流測試,就是要確保這些資料流在功能執行運算的過程中是正確無誤的。

系統流程測試(control flow coverage)

跟據SA定義出來的系統流程後,應可繪出一張流程圖,用來說明該系統的執行步驟、順序,在這流程圖中會有所一條或多條路徑,而這些路徑是用來貫穿程式的起點和終點。
而測試人員設計的測試案例,必需包含所有的路徑,以確保流程的正確性。

範例:判斷是不是三角形

三角型的條件有二
1.邊長必須大於0
2.兩邊之和是否大於第三邊
https://ithelp.ithome.com.tw/upload/images/20221007/20152578xJlTiMKDuF.png

邏輯如下

	public boolean isTrangle(int i, int j, int k) {		
		if(i<=0 || j<=0 || k<=0) {
			return false;
		}		
		if(i+j>k || i+k>j || j+k>i) {
			return true;
		}		
		return false;
	} 

資料流測試的重點就會著重於輸入的i,j,k的值是否有被放到正確的位置,以及運算時所產生的值是否正確。

系統流程測試的重點就會在於我們的測試案例是否有包含所有的路徑,而依此案例我們可得知至少有三條路徑:
(1) i,j,k的值不得小於0
(2) 兩邊之和大於第三邊
(3) 兩邊之和小於第三邊
對於每一條路徑,我們可以輸入各種的值來進行測試,這時候就會回來檢視測試人員所設計測試案例的廣度及深度。

黑箱測試

黑箱測試也可以稱為功能測試,測試人員不需要了解資料流與系統流程,只要知道需求規格是什麼,並確認輸入及輸出有符合規格即可。
這種測試方式是從使用者的角度來進行測試,因為我們無法確認使用者會如何操作我們的功能,測試時可以輸入一些極端的值、過長的字串、跳脫字元...等等,可以把自己想像成駭客來對系統進行測試,若測試的結果不如預期,例如輸入極端的值導致系統當機,或著輸入一些sql字串、跳脫字元而導致了SQL Injection等等,都要即時請開發人員進行處理。

範例:A+B=C

https://ithelp.ithome.com.tw/upload/images/20221007/20152578qaaKFDXo5L.png
規格如下:
1.整數
2.範圍:1~100
例:1+2=3

當測試人員只能依據規則來進行測試時,我們可以列出以下的測試案例:

  1. 輸入非整數 ex:A=0.1,B=2、A=1,B=0.2、A=0.1,B=0.2,此時A+B得到的結果為 False。
  2. 輸入範圍錯誤,ex:A=-1,B=2、A=1,B=-2,A=-1,B=-2,此時A+B得到的結果為 False。
  3. 輸入非數字,ex:A=一,B=2、A=1,B=二、 A=一,B=二,此時A+B得到的結果為 False。
  4. 輸入極端的值,ex:A=999999999999,結果應該False。
  5. 輸入sql的字串,ex:A=or 1=1,結果應該False。
  6. 輸入跳脫字元,ex:「'」、「&」「|」、...等符號,結果應該False。
  7. 輸入符合規格的值,ex:A=10,B=30,此時A+B得到的結果為40。

結論

白箱測試可以讓我們清楚測試的目標在那裡,黑箱測試可以讓我們模擬駭客的方式進行測試,各有優缺點,測試時可以撘配使用,只要能提早找出系統問題,都可以免於日後線上系統災難的發生。


上一篇
[DAY25] 圖片類型判別(tika + ImageIo)
下一篇
[DAY27]迴歸測試的重要性
系列文
Google商家大解密就靠網頁設計來加成30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言