標籤:
《軟體測試》Ron Patton著。
這本書很全面地介紹了軟體測試的理論基礎知識,也就是看了這本書對軟體測試有了一定的瞭解,協助我找到了一份關於軟體測試的工作。在看這本過程中也有一些有疑問的地方,這裡主要是針對自學軟體測試以來對軟體測試的理解的一點總結,並把自己不懂的地方梳理一遍。
一、軟體測試工程師究竟要做些什嗎?
這本書中給到一個相對完整的答案:軟體測試員的目標就是儘可能早地找出軟體缺陷,並確保其得以修複。
在面試過程中,面試官曾經告訴過我,並不是為了找bug,而是協助開發人員完善產品。有道理,於是就更加同意一個忘了是在哪裡看到的說法:軟體測試有以下兩個內容。(大概意思是以下)
1)檢驗需求分析文檔所要求的功能是否完成。
2)檢驗產品是否符合終端使用者的體驗。
二、軟體開發生命週期模式
4種最常用的模式
1、大爆炸模式
簡單。幾乎沒有計劃、進度安排和正規開發過程,所有精力都花在開發軟體和編寫代碼上。盡量避免在此模式下進行測試。
2、邊寫邊改模式
由於開頭機會沒有計劃和文檔編製,項目小組得以尿素展現成果。因此,邊寫邊改模式極其適合意在快速製作並且用完就扔的小項目,例如原型範例和示範程式。
3、瀑布模式
強調三點:
1、瀑布模式非常強調產品定義
2、瀑布模式各步驟是分立的,沒有交叉的。
3、瀑布模式無法回溯,一旦進入某一個步驟,就要完成該步驟的任務,才能向下繼續。
4、螺旋模式(有點包含以上三種模式)
螺旋模式的總體思想是一開始不必詳細定義所有細節。從小開始,定義重要功能,努力實現這些功能,接收客戶回函,然後進入下一階段。重複上述過程,直至得到最終產品。
螺旋模式每一次迴圈包含6個步驟:1)確定目標、可選方案和限制條件;2)明確並化解風險;3)評估可選方案;4)當前階段開發與測試;5)計划下一階段;6)確定進入下一階段的方法。
5、有些公司採用的模式:敏捷式軟體開發 (Agile Software Development),快速原型,極限編程,進化開發等。
三、測試的方式
1、黑箱測試(功能性測試)
2、白盒測試(存取碼,能夠查看和審查)
又可以分:
1、靜態測試 ——測試不啟動並執行部分,即檢查和審核
2、動態測試 ——通常意義上的測試,即使用和運行軟體
於是結合兩種就出現了以下測試方式:
1、靜態黑箱測試——測試產品說明書,並在軟體編寫之前找出問題(找出根本性問題)
2、動態黑箱測試——不深入代碼細節測試軟體的方法。
動態黑箱測試測試案例的方法
1)等價類別劃分
2)邊界值分析
3)資料測試
4)狀態測試
失敗狀態測試
(1)競爭條件測試和時序錯亂
(2)重複測試——是否存在記憶體泄露
壓迫測試——儘可能地限制軟體的必要條件
重負測試——盡量提供條件任其發揮
5)通過性測試和失效性測試
失效性測試——純粹為了破壞軟體而設計和執行的測試案例
其他:像笨拙的使用者那樣做、在已找到軟體缺陷的地方再找找、像駭客一樣思考問題、憑藉經驗,直覺和預感。
3、靜態白盒測試——通過正式審查和檢驗檢查代碼的細節
即在不執行軟體的條件下有條理地仔細審查軟體設計、體繫結構和代碼,從而找出軟體缺陷的過程,有時稱為結構化分析
1)正式審查——進行靜態白盒測試的過程。
確定問題、遵守規則、準備、編寫報告4個基本要素。
(1)同事審查——最簡單,要求最低
(2)走查——比同事審查更正規化的下一步
(3)檢驗——最正式的審查類型。表述者不是原來的程式員。
2)通用代碼審查清單
(1)資料引用錯誤
(2)資料聲明錯誤
(3)計算錯誤
(4)比較錯誤
(5)控制流程程錯誤
(6)子程式參數錯誤
(7)輸入/輸出錯誤
(8)其他檢查
4、動態白盒測試——利用查看代碼功能(做什麼)和實現方式(怎麼做)得到的資訊來確定哪些需要測試、哪些不需要測試、如何開展測試。(也稱結構化測試structural testing)
測試案例方法:
1)分段測試
(1)單元測試(模組測試)
(2)整合測試
(3)系統測試
以上三種遞增測試有兩條路徑:自底向上(bottom-up)和自頂向下(top-down)
自底向上測試中要編寫測試驅動模組調用正在測試的模組。
自頂向上測試有點像小規模的大爆炸測試。(編寫一小段稱為樁Stub的代碼充當介面模組。)
2)資料覆蓋
資料流、次邊界、等式和公式、錯誤強制
3)代碼覆蓋
程式語句和程式碼覆蓋
分支覆蓋
條件覆蓋
沒有指明動靜態時好像通常指的是動態。
四、其他測試的技術
配置測試
相容性測試
外國語言測試
易用性測試
文檔測試
軟體安全性測試
網站測試
五、測試的補充
自動化的測試、缺陷轟炸、Beta測試(讓他人驗證和確認軟體的常用過程)
效能測試、特別測試
六、測試文檔
測試計劃==》測試設計說明==》測試案例說明==》測試過程說明
一些典型問題:
1、 問:軟體測試主要分哪些階段?
答:
和開發過程相對應,測試過程會依次經曆單元測試、整合測試、系統測試、驗收測試四個主要階段。
單元測試:單元測試是針對軟體設計的最小單位––程式模組甚至程式碼片段進行正確性檢驗的測試工作,通常由開發人員進行。
整合測試:整合測試是將模組按照設計要求組裝起來進行測試,主要目的是發現與介面有關的問題。由於在產品提交到測試部門前,產品開發小組都要進行聯合調試,因此在大部分企業中整合測試是由開發人員來完成的。。
系統測試:系統測試是在整合測試通過後進行的,目的是充分運行系統,驗證各子系統是否都能正常工作並完成設計的要求。它主要由測試部門進行,是測試部門最大最重要的一個測試,對產品的品質有重大的影響。
驗收測試:驗收測試以需求階段的《需求規格說明書》為驗收標準,測試時要求類比實際使用者的運行環境。對於實際項目可以和客戶共同進行,對於產品來說就是最後一次的系統測試。測試內容為對功能模組的全面測試,尤其要進行文檔測試。
2、軟體測試工程師所應具備的職業素質
優秀的測試工程師除了具備“專業技能、行業知識”外,還必須具備相應的交流技巧、組織技能、實踐技能和積極態度。除此之外,還應該具備一些基本的個人素養:即專心、細心、耐心、責任心和自信心“五心”
3、軟體測試職業發展方向
《軟體測試》總結