程序員的職業素養 讀書筆記 - 第8章 測試策略
QA應該找不到任何錯誤
QA也是團隊的一部分
QA和開發人員應該緊密協作,攜手保障系統的質量。
QA在團隊中要扮演的便是需要規約定義者(specifier)和特性描述者(characterizer)。
需求規約定義者
QA的任務便是和業務人員一起創建自動化驗收測試,作為系統真正的需求規約文檔。
業務人員編寫針對正常路徑(happy-path)的測試。
QA編寫針對極端情況(corner)、邊界狀態(boundary)和異常路徑(unhappy-path)的測試。
特性描述者
QA的另一項任務是遵循探索式測試的原則,描述系統運行中的真實情況,將之反饋給開發人員和業務人員。
自動化測試金字塔
單元測試
金字塔底部是單元測試,單元測試由程序員使用與系統開發相同的語言來編寫,供程序員自己使用。
編寫單元測試的目的是在最低層次上來定義系統。
組件測試
組件測試是驗收測試的一種,它們是針對系統的各個組件而編寫。
系統的組件封裝了業務規則,對這些組件的測試便是對其中業務規則的驗收測試。
組件測試由QA和業務人員編寫,開發人員提供輔助。
集成測試
集成測試只對那些組件很多的較大型系統才有意義。它將組件裝配成組,測試它們彼此之間是否能正常通信。
集成測試是編排性(choreography)測試。它們並不會測試業務規則,而是主要測試組件裝配在一起時是否協調。
集成測試一般由系統架構師或主設計師來編寫,用以確認系統架構層面的結構是事正確無誤。
系統測試
系統測試是針對整個集成完畢的系統來運行的自動化測試,是最終的集成測試。
它們不會直接測試業務規則,而是測試系統是否已正確組裝完畢,以及系統各個組成部件之間是否能正確交互。
包含吞吐率測試和性能測試。
人工探索式測試
需要人工介入、敲擊鍵盤、盯牢屏幕的測試。它們既非自動化的測試,亦非腳本化的測試。
探索式測試是要確保系統在人工操作下表現良好,同時富有創造性地找出盡可能多的“古怪之處”。
程序員的職業素養 讀書筆記 - 第8章 測試策略