黑盒測試總結和反思
從2月初寫黑盒測試**,到現在已經有超過寫了超過50個測試類、700個測試方法的**,從最開始的不知道怎麼寫、為什麼寫,到後來的為什麼這樣寫、怎樣把測試寫好、思考背後的邏輯方法的執行(結合mybatis)。在這裡寫下自己對黑盒測試的體會。
黑盒測試也稱
功能測試
,它是通過測試來檢測每個功能是否都能正常使用。在測試中,把
程式看作乙個不能開啟的黑盒子,在完全不考慮程式內部結構和內部特性的情況下,在
程式介面
進行測試,它只檢查程式功能是否按照需求規格說明書的規定正常使用,程式是否能適當地接收輸入資料而產生正確的輸出資訊。黑盒測試著眼於
程式外部結構,不考慮內部
邏輯結構
,主要針對
軟體介面
和軟體功能進行測試。黑盒測試是以使用者的角度,從輸入資料與輸出資料的對應關係出發進行測試的。
我寫的測試是**,省略了產品的頁面輸入環節,直接在**上「賦值」輸入資料,下一步就呼叫已經寫好的crud方法對資料庫進行操作,測試的目的也是檢查每乙個「方法」是否能成功執行,也就是產品的需求細節有沒有達到預期目標。
從最單一的方法說起,以在資料庫裡面新增乙個資料為例:
新增銀行資料
public
void
addbank()
addbank
(token, bank
)方法返回值為
void,無法通過測試屬性直接檢查該銀行資料是否插入資料庫,在這種情況下,我們看似寫了測試**,實際上並沒有真正的檢測出
addbank
()方法是否能夠滿足專案需求,所以需要把剛才「寫入」到資料庫的資料,重新「提取」出來,檢視是否相同:
///獲取銀行
///[test]
public
void
getbank()
根據銀行的唯一標識查出銀行資訊,getbank()方法返回的是乙個「銀行」物件,但由於assert
.isnotnull(ret,
"執行失敗"
)方法只能檢查查詢結果是否為空,也不能檢查出資料是否與原始資料相同,此時,我們可以採用一下方法來判斷資料的真實性:
//這裡的
」0001
」為原始資料 if
(ret.alipayfinanceaccountcode==
"0001")
else
以上是我在測試過程中總結的測試技巧,由於是黑盒測試,我們並不能看見執行過程,更不可能隨意新增測試介面,只能在現有的基礎上,盡可能的讓測試**完善。但如果測試**沒有相應的「查詢邏輯」,那麼插入到資料庫的資料是很難檢測到的。
當寫完乙個測試類後,就可以按照分類,對資料進行測試,比如乙個測試類有銀行,物業小區,居委會等模組,那麼可以給銀行類的方法新增字首「a_01」,物業類的就為「b_01」,以此類推。
以上是單一「物件」問題,但我們在測試中會經常遇到對個物件同時出現,即物件依賴問題
,比如說建立報修單:建立保修單物件需要乙個eaareacode
資料,而這個資料沒有,不管以前有沒有過
eaareacode
物件資料,都最好是自己在該測試**裡面自己建立乙個,如果你以前測試過
eaareacode
類的相關方法,一方面我們去找這個資料時會耽擱時間(測試資料越多越耽擱),另一方面每個測試類幾乎都有增刪查改方法,我們可能在當時測試的時候刪除了測試資料,所以哪怕就算你拿到了當時的資料,也會出現各種問題。
///建立報修單
///[test]
public
void
a01createrepairorders()
最後來說一下資料的包含邏輯:
如圖,可以看出兩個方法之間的關係:表決物件作為表決物件列表的乙個屬性儲存在列表中。在新增表決物件方法裡面,沒有把具體的儲存方法實現(這裡就檢測出方法錯誤了),而在增加列表中,只需要建立列表list,list中存的元素必為voteobject物件(見後面的**)。
總結:在測試的時候要盡量做到測試資料的範圍廣闊,通過寫測試**,不僅要測試出**的問題,更要讓自己達到以下幾點目標:
1. 在專案邏輯上,能夠理解專案的模組劃分,比如銀行、街道、物業公司等模組,理清楚他們之間的聯絡,在沒有看專案說明書之前,能大致**他們的功能,更深刻的理解專案本身;
2. 由於是黑盒測試,看不到**執行的邏輯(過程),但對每一次的crud,結合專案所用的orm框架,要知道邏輯是怎麼實現的,資料庫語句是怎麼寫的;
3. 要養成良好的測試習慣,每發現一次錯誤,及時記錄下來,反饋到專案組。
2018.3.5
黑盒測試總結
黑盒測試 概述這種方法是把測試物件看做乙個黑盒子,測試人員完全不考慮程式內部的邏輯結構和內部特性,只依據程式的需求規格說明書,檢查程式的功能是否符合它的功能說明。黑盒測試又叫做功能測試或資料驅動測試。作用黑盒測試法注重於測試軟體的功能需求,主要試圖發現下列幾類錯誤。1.功能不正確或遺漏 2.介面錯誤...
功能測試總結反思
參考 引用原博很多內容 功能測試階段是測試職業生涯的基礎階段,在這段時間內要注意培養測試思維 做事方式 溝通能力 對需求及使用者體驗的理解把握能力 對於軟體開發具體實現的基本理解 對於軟體開發整體流程的理解和把握 對一些工具和簡單指令碼的熟悉使用。大部分初入測試行業的人有乙個誤區,就是侷限於執行被分...
白盒測試與黑盒測試
1白盒測試 定義 透明的,可以看見內部結構的,按照程式內部邏輯結構和編碼結構設計測試資料並完成測試的一種測試方法。分類 靜態測試和動態測試 邏輯覆蓋 語句覆蓋 每一條語句至少被執行一次 語句覆蓋是最弱的邏輯覆蓋 判定覆蓋 每乙個分支至少通過一次即每一條分支語句的 真 值和 假 值都至少執行一次。判定...