一. 什么是軟件測試
軟件測試是一個過程或者一系列過程, 用來測試計算機代碼完成了其應該完成的功能, 不執行不該有的操作.或者說軟件測試是根據軟件開發各階段的功能和說明而精心設計的一批測試用例, 并根據測試用例運行程序, 以發現程序錯誤的過程.
二. 軟件測試的心理學和經濟學
1.軟件測試心理學
測試是為發現錯誤而執行程序的一個過程.
2.黑盒測試
數據驅動測試或者輸入輸出驅動的測試, 測試目標與程序的內部結構以及程序的內部機制都無關, 將重點放在程序不按照其規范正確運行的環境條件.
3.白盒測試
邏輯驅動測試, 即允許對程序的內部結構進行檢查, 對程序的邏輯結構進行檢查, 從中獲取測試數據(忽略了程序的規范).知道產品內部結構, 可通過測試檢測產品內部是否按照說明書正常工作. 測試方法通常有邏輯驅動, 基路測試等.
4. 軟件測試的目的
以最少的人力物力時間找出軟件中潛在的各種錯誤缺陷,通過修正錯誤缺陷, 提高軟件的性能和質量, 避免軟件發布后由于潛在的問題引起商業風險
5.需求文檔測試
主要測試產品需求中是否存在邏輯矛盾, 以及需求在技術上是否可以實現
6.設計文檔測試
測試設計是否符合全部需求以及設計是否合理
三. 軟件測試的原則
1.對預期輸出或結果的一個定義
只有在測試之前對程序的預期結果做出相應的定義, 才會知道程序是否完成了自己應該完成的功能, 或者程序是否執行了自己不該執行的任務.
2.程序員應該避免測試自己編寫的程序
每一個作者都清楚自己所編寫的程序需要表達一個什么意思, 但實際表達出來的意思有可能是南轅北轍的, 而自己卻沒有意識到.
3.編寫軟件的組織不應該測試自己編寫的軟件
對于編寫者來說, 定量的衡量軟件的可靠性較難, 即使合理的規劃和測試過程, 可能也會降低完成進度和成本目標.
4.徹底檢查每個測試的執行結果
在后序的檢查和測試中, 往往發現的錯誤是前序測試所遺漏的.
5. 測試用例的編寫不僅要考慮到有效和預期的輸入, 還應該考慮無效且不符合預期結果的輸入用例.
在測試的過程中往往將重點放在了有效和符合預期結果的輸入中, 而忽略了一些無效和未預料的結果.
6.檢查程序是否未做其應該做的僅僅是測試的一半, 還應該檢查程序是否做了其不應該做的
必須檢查程序是否有我們不希望的副作用
7.避免測試用例用后丟棄, 除非軟件本身是一次性的軟件
保留測試用例是為了當程序其他部分發生更動后重新執行,
8.計劃測試時, 不應該默許假定不會發現錯誤
所謂測試, 是為了發現錯誤而執行的一個過程
9.程序某部分存在更多錯誤的可能性
加入一個程序由模塊 A和模塊 B構成, 但是模塊 A有五個錯誤, 而模塊 B只有一個錯誤
10.軟件測試是一個具有創造性和智力性的工作
測試一個大型軟件所需要的創造性很可能超過了開發一個大型軟件所需要的創造性和智力性.
四. 幾個名詞
1. Alpha 測試
有一個用戶在開發環境下進行的測試, 也可以由公司內部的用戶在模擬實際操作環境下進行的受控測試. 測試不能由測試員或者程序員來完成, 測試過程中如果發現錯誤, 可以現場立即向開發者反饋, 目的是評價軟件的功能, 可靠性, 可使用性, 性能和支持. 尤其注重軟件的界面和特色.可以從軟件的編碼之后進行測試.有關的手冊應該在測試之前準備好
2. Bate 測試
軟件的多個用戶在一個或多個用戶的實際使用環境下進行的測試. 開發者往往不在現場, Bate 的測試往往不能由測試員或者程序員來完成, 因此 Bate 測試是不可控的. 在遇到問題時有用戶記下, 然后反饋給開發者, 開發者在接到反饋時及時對其作出修改, 最終將產品交給使用用戶. Bate 測試往往側重于產品的支持性, 只有 Alpha 測試達到一定的可靠性的之后才能進行 Bate 測試, 由于 Bate 測試注重于產品的支持性, 因此盡可能讓支持產品發行的人員進行管理
3. 驅動模塊
驅動模塊往往也叫做主程序, 它接受測試數據, 將測試數據傳入到北側單元, 驅動模塊主要完成對輸入數據進行判斷, 將輸入數據傳送給輸出被測模塊, 驅動被測模塊執行, 接受被測單元執行結果, 對輸出結果進行判斷, 接受被測單元執行結果, 將執行結果作為用例執行結果輸出測試報告