[讀書心得] 測試(一)

工作即將進行到測試階段,但老實說我從未做過相關工作,所以看了本書Code Complete,這裡來寫一些筆記+心得。

這本書提到測試依層次有分幾類:
1. 單元測試:  這是用來測試某一個完整類別中的函數或變數而常使用的一個方法
2. 元件測試:  用來測試一個完整類別、封裝。
3. 整合測試: 用來測試複數類別、元件或子系統。
4. 迴歸測試: 重覆已執行過的test-case,藉以找出先前測試中未察覺出的缺失。
5. 系統測試: 讓軟體在最終設定下執行,並與其他軟硬體結合,包括安全性、效能、資源損耗、計時問題以及其他無法在低階段整合中測試的問題。

其實還有一堆,像是客戶接受度、效能、設定、平台、壓力及可用性測試等等等,太多了。
知道一堆名詞後,我還是不知道怎麼著手。

一般人將測試分為兩類:黑箱測試及白箱測試,這大家都懂。
然而測試的目的為何? 測試與除錯的差異? 為何測試對於大部分的開發人員來說相當困難?

書上解釋了幾項原因:
1. 因為測試的目標與當初開發的目標正好相反。
    測試的目標:找出可能的錯誤,讓軟體掛掉
    開發的目標:除去所有臭蟲,讓軟體順利執行

2. 測試無法證明錯誤不存在。
    (ㄜ... 這是表示錯誤是NP-H嗎 = =+)

3. 測試本身不能提升軟體品質。
    這應該是倒過來說,測試的結果可以做為品質的一種評估指標,但無法提升其軟體品質。

4. 要假定你自己的程式碼中存在錯誤。
    (這不是廢話嗎... 但要揪出他又是另外一回事了xD)

了解什麼是測試後,書上建議了一些測試前的準備工作:
1. 測試相關需求,確認需求實做是否存在。
    這裡指的應該是客戶需求那玩意。書中也提到可以針對那些需求中,常被遺漏的部分,像是安全性、storage、安裝程序即系統可靠性測試,因為這些常是在需求階段被忽略的東西。
2. 對於1的問題,撰寫即規畫test-case
3. 使用基本測試。
4. 在檢查清單中記錄在過去開發中曾犯的錯誤。

另外也提到了測試的順序應該是邊寫邊測還是最後再測?
書中建議是- 事先寫做test case, 有助於debug所需花費的時間。
理由不外乎是早期發現早期治療、若測試寫的不順表示需求設計可能不良等。

預防勝於治療,啦哩啦雜只解釋了測試的冰山一角....

Comments

Popular posts from this blog

股票評價(Stock Valuation) - 股利折現模型

openwrt feed的使用

How to convert Markdown into HTML