昨天我們又講了關於測試的一些內容,今天我們要再講關於測試的內容,Mutation test
它是用來評估測試的品質。它透過對程式的原始碼故意引入小錯誤或變異(mutations),然後執行測試來檢測這些變異,進而確定測試是否能夠檢測到這些錯誤。
甚麼意思呢? 以一個function a+b來說,如果我們的測試a+b會通過測試,那麼function變成a-b應該要fail才對,如果a-b還是讓我們的測試過了,代表我們的測試寫得不夠好XD 沒有抓到這個變異。
它的步驟包括:
通過對原始碼進行變異操作,例如修改運算符(+,-,等)、刪除程式碼等,創建多個版本的程式,每個版本都有一個小錯誤(變異)。
對每個變異版本運行相同的測試,以檢查測試是否能夠捕捉到這些變異。
分析測試結果,確定哪些變異被檢測到了(殺死了),哪些未被檢測到(存活了)。
Mutation test的目標是檢測測試的品質,因為如果測試能夠有效檢測到變異,那麼它很可能也能夠檢測到真正的軟體缺陷。如果我們的測試未能檢測到變異,那麼代表我們的測試覆蓋率不足或測試案例不夠強大。
講這麼多,那麼它有缺點嗎?
缺點就是可能需要較大的計算資源和時間,因為需要對每個變異版本執行測試。