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