Skip to main content

系統設計與回歸測試

關於 從 #回歸測試 到 #系統設計方法 概念
#案例窮舉 #排列組合 #LeetCode


刷 leetcode 的時候
通常是透過 test cases 通過的完成度
代表是否完成一個題目

這背後其實代表一件事:

對一段邏輯 (不管叫演算法 / Function / Method)
先不管裡面的運算是怎麼算, 時間或空間複雜度,
首先要思考的是, 使用情境的 #排列組合
等於要有個方法可以 #窮舉 所有的情境

不然邏輯寫出來了
但不知道怎麼測
後面這個把測試案例列舉出來
是很多工程師做不到的
大部分只列得出 happy path ...
要展開其他排列組合 就比較少看到有人做得好
這就變成演算法寫的很好
但案例太少 只能淪為紙上自嗨

然後我隨便踩一下就炸了 XD


之前在引導同仁設計的時候
經常會用矩陣思考
步驟大概是

  1. 先列出幾個案例 A / B / C ... etc
  2. 從案例中找出找出相關的變因
  3. 從變因中分析出同類型的因素
  4. 依照變因, 定義 X 軸, Y 軸
  5. 把 案例 A / B / C 放到矩陣
  6. 展開 A / B / C 以外的案例

到這裡, 是才看清所有案例的 #可能性
當矩陣式 9 x 9
那就是有 81 種可能性
但是實際上真實情使用情境可能只會用到 1/3, 1/4 ... etc
其他的都只是邏輯的可能
但沒有實質意義


我這段分析方法過程
最難的就是定義 X / Y 軸
有時候過程會發現 有五六個軸
或者 X / Y 軸有 #子軸 XA / XB / XC ...; YA / YB / YC ...
這時候的排列組合的數量會非常驚人

但這就是實際上在 #設計分析 過程必要的
也就是我們要比使用者看到更多
然後透過業務需求
決定哪一些先做
哪一些後做
那一些不用做

這段過程通常會在 2 -> 5 一直循環
因為有時候 X / Y 會定義錯誤
然後重新排列組合

這讓我想起數學的矩陣運算 ...


我這個方法的例子
就是去年上市的 #薩爾達傳說 - #王國之類
遊戲中的各種道具 (武器 / 防具 / 物品)
都可以透過 #餘料建造 產生組合
而武器就是一個軸,彼此之間可以相互組合
假設武器的數量有 N 個,那就是有 N x N 個排列組合
道具還有防具 (M), 物品 (Q) 個
那麼排列組合就會有 N x M x Q 個
成法就是 餘料建造 這個功能
每個道具都還有 X 個角度可以轉
排列組合又更多了

這個數字則是開發團隊必須要測試過的
也就是實際上要執行的測試項目

上述都還沒討論
每個道具的物理與化學屬性
如何實作


會有這樣的思維
是以前在做測試計畫時
經常要思考的就是這個窮舉的方法
這個過程在 #回歸測試 (Regression Test)
需要知道的大盤
無法掌握 基本上就沒有辦法說這個回歸測試是足夠的

文章有列舉一些從 #整合測試 的角度來窮舉排列組合的複雜度
不要來 diss 裡面的公式對不對
我更多是想表達複雜度而已 XDDD

從 iOS 無限黑屏事件,談軟體測試階段 - 回歸測試 Regression Test


原始資料