舉某些例子, 軟件測試方法有黑盒測試, 白盒測試 按階段來區分的話有單元測試, 集成測試, 系統測試 按目的來分有性能測試等
對於測試來說應給出相應的標準來量化, 對頁面應用等測試(自主進行). 最後是軟件測試的自動化以及測試的管理
該課程並不會給出具體的工具, 應該針對應用進行相應的修改
成績劃分(Exam70%, Discussion10%(twice, PPT and report), quiz20%(five times))
1. 概述
1.1 爲何軟件測試是需要的
- 軟件無處不在
- 產品的合格率(利用指數函數的性質來說明多部分系統難以完美)
- 舉出例子說明軟件失效造成的災難
- North east Black 停電事故
- Ariane5 爆炸
- Mars Polar Lander 傳感器失效
(1) 有錯誤的軟件是不安全的 (2) 世界上大部分的經濟損失都是由於軟件失效 (3) 充分的測試可以規避風險 (4) 我們希望軟件是可靠的
1.2 軟件測試的部分內容(什麼是缺陷, 歷史, 概念)
Error, Fault, Failure, Incident都統稱爲缺陷
軟件產品中所存在的問題, 最終表現爲不能滿足客戶的需求
缺陷之定義:
- 滿足用戶期望與否
- 非正確執行的可行性
- 所有類型的軟件問題
缺陷的源頭:
- 需求定義
- 設計
- 實現
- 支持的系統
- 軟件測試的完整性
- 更新迭代
軟件的開發流程都有可能出現缺陷
什麼時候會出現缺陷:
- 該完成沒有完成
- 不該完成而去做
- 沒有提及的去做了
- 沒有提及但是應該完成的沒有完成
- ....
大部分情況都會產生缺陷
正確的程序應該具有的特性:
- 沒有語法問題
- 運行中沒有明顯問題
- 沒有不合適的語句
- 有效的輸入, 正確的輸出
- 無效的輸入, 正確的輸出
- 任何可能的輸入, 正確的輸出
軟件質量, 軟件質量保證, 質量控制 (軟件質量的評判是多維度的) 軟件質量保證給出了一系列章程的制訂 質量控制是具體的操作, 是質量保證的具體細節
1.3 軟件測試的定義
首先是定義:
- 軟件測試是系統化, 有計劃的行動步驟
- 通過測試能夠給出產品和服務質量的相關數據
- 測試可以發現用戶期望實現與否
- 測試是軟件質量保證的關鍵步驟
- verification(驗證) 從開發者的角度
- validation(確認) 從用戶的角度
關於測試的類型有許多種, 包括:
- 根據測試生成的源來劃分(C1)
- 根據生命週期中所處的位置來劃分(C2)
- 根據測試目標(C3)
- 根據被測對象的特徵(C4)
- 根據模型進行劃分(C5)
C1: 根據需求 --> 黑盒 根據代碼 --> 白盒 根據形式化模型 --> 模型測試 組件接口 --> 接口測試
C2: 編碼 -->單元測試 集成 --> 集成測試 系統集成 --> 系統測試 維護 --> 迴歸測試 發佈之前的版本 --> beta測試
C3: 系統性能 --> 性能測試 etc
測試用例實質上就是一組輸入和輸出, 最後看預期的結果是否相符