精準測試最為簡單的問題之一:資料與邏輯

houzf發表於2020-12-29

資料與邏輯

現代計算機的基本原理主要分為程式儲存和程式控制。

​ ——馮諾依曼原理

程式控制即邏輯控制,程式儲存即資料儲存。

程式是一個或多個邏輯的過程。程式裡的程式,就是語句的語法、語句順序、語句分之等,而函式(方法)只是程式的一個執行路徑而已,同樣也是邏輯的重要組成部分。

當代大資料已經成為一個極度熱門的學科,無論是企業、學校、政府機構等都在不斷髮揮資料對這個社會的重要影響。在網際網路中,業務資料已經成為企業的核心競爭力。

如果把一個應用比作一個人類,那邏輯就是遍佈全身的血管組織,而流淌在血管中的血液就是資料。

程式和資料分離是當代所有計算機系統,包括網際網路產品的基本特徵。產品和研發負責的是程式,業務人員和資料分析員處理的是資料。

無論每天百度的爬蟲新抓到了多少網頁,爬蟲的原理都是不變的;無論新浪微博每天新註冊了多少帳號,微博的編寫、評論、轉發功能都是不變的。縱觀現在市場上所有熱門的網際網路產品,都將處理程式的工作與處理資料的工作相分離。

測試用例是一組經過精心設計的資料,包含輸入資料、執行條件以及期望的輸出資料。

測試物件就是我們面對的應用程式。

測試過程就是通過使用應用程式執行已經準備好的測試資料,也就是通過資料驗證邏輯的過程。

一個質量合格的產品標準至少要滿足以下四個基本標準:

1.業務功能實現完整

即應該是一個完整的人類

即業務邏輯齊全

即測試資料準備全面,涵蓋所有業務功能

2.邏輯覆蓋全面

即每一根血管都應該流淌著新鮮的血液

即每個方法、每個語句都可以得到預期的資料值(邏輯覆蓋、程式碼覆蓋)

3.穩定執行

即應該是一個可以經歷四季且健壯的人

即效能滿足日常要求,且抗得過高峰時段的壓力

即環境部署簡單,相容多種環境

4.安全

即資料安全

通過以上標準,我們可以看出黑盒測試其實就是在解決兩個基本問題:程式邏輯、測試資料。而效能就是程式就是處理大量資料的能力。安全就是程式對資料的保護。其中前兩點有著相似之處,但是卻從不同角度進行的剖析。完整的業務流程不能完整的程式邏輯,完整的程式邏輯卻可以覆蓋完整的業務流程,但是部分邏輯不屬於業務功能範疇。

因此,我們的任何測試行為的本質都是資料與邏輯的統一,使用資料驗證邏輯,同時也分析邏輯 校驗資料(辯證統一的關係)。

迴歸到我們的日常測試工作,一般情況下,我們採用正向思維和逆向思維去分析PRD編寫測試用例,最終就是我們的測試資料。但是關於程式邏輯,我們可以檢視開發人員的設計文件,傾聽開發人員的口述,使用實際資料去驗證自己的猜想,甚至自己去查閱業務程式碼。

可見,我們可以按照嚴格的流程以及標準去完成業務資料的蒐集和整理,但是不能很好的覆蓋完整的邏輯。這就是我們面臨的現狀。

還有,我們不清楚我們準備的業務資料(測試用例)能夠覆蓋哪些邏輯,哪些邏輯沒有覆蓋到、哪些邏輯覆蓋不到,甚至哪些邏輯不需要再覆蓋。在這些問題面前我們無法回答清楚。

對於上面提及的諸多問題,可能有人會提及各種測試方式,例如黑盒測試和白盒測試。兩者都有著各自強大的優勢得到大家的認可,但同時有著重大缺陷。此處就不在再進行詳細的分析和論述,簡單描述就是:黑盒有著大量且全面的測試資料;白盒測試近距離接觸程式碼,能夠明確每一行程式碼的具體作用,每個方法的呼叫情況。

那我們的最終問題就出來了:

什麼樣的方式既可以有著白盒的優勢,又能夠擁有黑盒的優勢?

兩者優點的結合是否能夠對測試效能有著極大的提升?

即把資料精準的匹配到相應的邏輯。

為了解決這個問題,我們開始了精準測試的探索之旅。

相關文章