示範測試時絕對該避免的情況

我覺得在示範 JUnit 或任何 xUnit 還有其他測試工具時,有種情況絕對要避免

比如說測試一個加法的 mtehod

assertEquals(4, math.add(2, 2));

絕對不要為了示範錯誤情況,而把測試程式的預期值改成錯誤的值,像是

assertEquals(5, math.add(2, 2));

絕對不要這樣!我覺得這樣會誤導初學者。測試程式是為了測出被測試程式的錯誤,像這樣把測試程式改成錯的,並不能點出測試的精神

要示範錯誤情況,應該是用錯誤的 add 實作(比如 + 寫成 -)來示範測出錯誤,然後再把 add 改正確,示範通過測試

PS. 之前看一個學校老師把測試程式的預期值改成錯的,昨天又看到一本書上也這樣做,所以有感而發….

V & V 沒有那麼玄吧

Verification 是開發過程有沒有照規定做,做出符合規格的東西

Validation 是最後的東西有沒有符合使用者需求

Boehm 用兩個句子說明這兩個 V

Verification. “Am I building the product right?”

Validation. “Am I building the right prodcut?”

從句子上來看,因為 right 是形容詞也是副詞

如果擺在後面 “build the product right”,right 修飾的是 build the product,表示開發的過程是對的(手段正確),屬於 verification

如果擺在 product 前面 “build the right product”,right 修飾的是 product,表示開發出來的產品是使用者要的東西(目標正確),屬於 validation

這頁 http://www.sroga.com/school/cs8263/cs8263.htm 的第二個 pdf 檔是 Boehm 的 paper,在第一頁最後一段上面一點的地方就是我上面提的那兩個句子

我不知道為什麼會聽到說,有些書有些老師的說法是兩個 V 和兩個句子的配對對調

Boehm 2003 年的書 Balancing Agility and Discipline 在第一章也有兩個 V 和那兩個句子,配對還是上面那樣,並沒有對調

已經第七版的 軟體工程經典書 在 22 章有引 Boehm 的說法

還有這兩本,也是同樣說法

Software Verification and Validation for Practitioners and Managers

Software Quality Engineering

所以實在不知道何來對調那樣的說法….

用 『validation verification “the right product” “the product right”』 搜尋 google,中文和台灣網頁都是 Boehm 那樣的講法,沒有對調的

英文網頁前二十個是 有一個 是對調的說法,不過其他有些雖然從 google 看好像是顛倒的說法,但其實是格式的關係,實際開去看還是和 Boehm 一樣的

所以我真的不知道有什麼理由去相信和 Boehm 相反的說法….

如果說因為 verification 是比較初期就開始的,而 validation 是比較後期,所以 verification 的 right 在前面…. 這…. 應該是英文死當班的說法….@@”