在我們的日常工作中,我們通常接觸到的都是比較複雜的系統。而複雜的系統就意味著比較複雜的測試程式。首先,對於複雜的系統來說,如果想要做功能測試,一般需要考慮到測試資料的問題,還要考慮如何從全域性出發,既要把整個業務流程需要測試的內容充分覆蓋到。保證即使是多個功能點交叉、存在複雜約束的條件下,也不會出現漏測或者新bug的問題。
其次,即使是單一功能點,也需要足夠熟悉,才能確保功能能在操作流程中順利實現。
因此,作為軟體測試工程師,我們需要在日常工作中不斷積累經驗,精進技術,確保自己能夠應對不同場景完成測試任務。那麼針對這些複雜的系統,我們應該如何進行測試呢?今天我們就來回顧一下。
為了解決複雜的測試任務,我們提出了基於場景的測試這一概念。這一概念主要以事件流為核心。當然,這一概念,也是為我們後期做高層次的功能測試設計打基礎。那麼,這一概念的基本思想是什麼呢?
它是通過分析不同事件的觸發順序和處理結果,從而構建各個事件流。並且,基於這些事件的觸發控制業務流程,形成多個不同場景,最終基於場景設計測試用例。
上圖是這一概念的原理。我們不難看出,該圖是一條自上而下、貫穿始終的基本事件流(簡稱基本流)。而其中,每個基本流代表乙個被測的典型功能點或主業務。在基本流上,又存在多個觸發點,不同觸發點又會產生不同事件,從而觸發業務流程分流,形成多個備選事件流(簡稱備選流)。由此,由基本流和備選流形成的不同業務流程(簡稱場景)誕生了。
由於在不同的場景中,每個場景至少對應一組輸入和乙個預期輸出結果(簡稱測試用例)。因此,基於場景的測試用例將是乙個既龐大,又複雜的工程。那麼,對於這樣複雜的工程,測試難點有哪些呢?我們又應該如何設定基本流與備選流呢?下面,我們來一一回答。
1)測試難點
主要有以下幾個難點:
l 如何根據業務,來構建測試的基本流和備選流;
l 如何基於事件流構建場景,從而滿足測試的完整性和無冗餘性;
l 如何根據場景,合理設計測試用例。
2)基本流和備選流的設定
針對我們要重點測試的業務,我們需要構建乙個基本流和和若干備選流。
(1)基本流
先來回顧一下概念:基本流是指。從系統的某個初始狀態開始,經一系列狀態變化後,到達終止狀態的過程中,最主要的乙個業務流程。簡言之,就是說整個業務流程中最基本的乙個流程。它不需要很複雜,但卻是一條高風險的業務流程。
(2)備選流
備選流是以基本流為基礎,在經過基本流上每個判定節點(包括條件判定和迴圈判定),滿足不同的觸發條件,而導致的其他事件流。
與基本流不同的是,基本流是一條完整的業務流程,而備選流僅是業務流程中的乙個執行片段。對比圖如下:
對於我們來說,備選流數目決定了我們的工作量有多大。一般情況下,備選流的數目,取決於判定節點的數目與事務分析的顆粒度。簡言之,顆粒度越細,考慮得越周全,得到的數目就越多,測試工作量也就越大。
總之,如果你還是記不太清這兩者的關係,可以通過下圖回憶一下:
我們都知道,場景是基本流與備選流的有序集合。場景實際用途是用來描述流經用例的路徑,即,整個測試過程經歷哪些步驟(基本流和備選流)。這也就不難理解,為什麼乙個測試用例只能對應唯一乙個場景了。
那麼,我們的場景應該是什麼樣的呢?下面我們來回憶一下:
l 場景1:基本流;
l 場景2:基本流+備選流1;
l 場景3:基本流+備選流2;
l 場景4:基本流+備選流2+備選流3;
l 場景5:基本流+備選流2+備選流4;
l 場景6:基本流+備選流5;
l 場景7:基本流+備選流1+備選流2+備選流5;
l 場景8:基本流+備選流1+備選流2+備選流3;
l 場景9:基本流+備選流1+備選流2+備選流4。
除了以上的幾種場景外,我們還可以通過增加更多備選流,從而構建更多的場景。但是,在這個過程中,我們就會發現,工作量變得異常龐大了。
那麼,我們要如何做才能既給自己「減負」,同時又能合理的完成工作呢?我認為,你至少需要考慮這3點:
(1)最少的場景數等於事件流的總數,即基本流與備選流的總數;
(2)有且唯一有乙個場景僅包含基本流;
(3)對應某個備選流,至少應有乙個場景覆蓋該備選流,且在該場景中應盡量避免覆蓋其他的備選流。
基於場景,我們可以按照如下步驟,來設計測試用例:
(1)分析被測業務,基於風險的思想找到基本流和所有備選流;
(2)根據基本流和備選流構造適當規模的場景;
(3)根據場景設計測試用例;
(4)對每個測試用例補充測試資料,並實施測試。
不知道看完上述內容,大家有沒有回憶起在不同應用場景中,我們該如何進行測試呢?希望印象不太深刻的小夥伴可以去翻翻以前的筆記。後面我們還將為大家提供乙個實戰案例,希望對大家的工作有所幫助。
加油吧,測試人!路就在腳下,成功就在明天!
未來的你肯定會感謝現在拼命的自己!
區分 和 的不同應用場景
1 會生成預編譯sql,會正確的處理資料的型別,而katex parse error expected eof got at position 70 s123456 如果使用 那麼生成的sql為 s 那麼生成的sql為 select from student where xcode s123456 ...
區分 和 的不同應用場景
1 會生成預編譯sql,會正確的處理資料的型別,而 katex parse error expected eof got at position 70 s123456 如果使用 那麼生成的sql為 s 那麼生成的sql為 select from student where xcode s123456...
js中this的應用場景
this存在於函式中,函式的呼叫方式決定了this指代的物件 1 作為物件的方法用 var obj obj.x 100 obj.y function obj.y 彈出 100 2 作為函式呼叫 var x the window function f f the window 3 作為閉包函式呼叫 v...