本書比較全面地介紹了軟件測試方法,首先介紹了測試技術(shù)的發(fā)展歷史和現(xiàn)狀;然后,作為測試的基礎(chǔ),介紹了白盒測試、黑盒測試及測試覆蓋率等幾個重要概念,并充分分析了業(yè)界在這幾個概念方面的研究成果;之后從全流程測試的角度詳細介紹了面向?qū)ο蟮臏y試技術(shù)。
信息技術(shù)業(yè)已成為國家經(jīng)濟發(fā)展的支柱產(chǎn)業(yè)之一,作為其重要組成部分的軟件產(chǎn)業(yè)取得了長足的發(fā)展,并且越來越廣泛地應(yīng)用于國民經(jīng)濟和國防建設(shè)的各個領(lǐng)域。然而,在實際應(yīng)用中,由于計算機軟件缺陷而造成計算機系統(tǒng)故障并導(dǎo)致嚴(yán)重后果的事例屢見不鮮。因此,如何保證軟件產(chǎn)品的質(zhì)量就成了必須解決的一個問題,而對軟件進行有效的測試就是解決軟件質(zhì)量問題的方法之一。
軟件測試是軟件質(zhì)量保證的關(guān)鍵步驟。軟件測試研究的結(jié)果表明:軟件中存在的問題發(fā)現(xiàn)越早,其軟件開發(fā)費用就越低;在編碼后修改軟件缺陷的成本是編碼前的10倍,在產(chǎn)品交付后修改軟件缺陷的成本是交付前的10倍;軟件質(zhì)量越高,軟件發(fā)布后的維護費用越低。另據(jù)對國際著名IT企業(yè)的統(tǒng)計,它們的軟件測試費用占整個軟件工程所有研發(fā)費用的50%.以上。
中國軟件企業(yè)在軟件測試方面與國際水準(zhǔn)相比仍存在較大差距。首先,在認識上重開發(fā)、輕測試,忽略了如何通過流程改進和軟件測試來保證產(chǎn)品或系統(tǒng)的質(zhì)量,也沒有認識到軟件項目的如期完成不僅取決于系統(tǒng)設(shè)計水平和代碼實現(xiàn)能力,而且還取決于設(shè)計、代碼、文檔等各方面的質(zhì)量。其次,在管理上隨意、簡單,沒有建立規(guī)范、有效的軟件測試管理體系。另外,缺少自動化工具的支持,大多數(shù)企業(yè)在軟件測試時并沒有采用軟件測試管理系統(tǒng)。所以對軟件企業(yè)來說,不僅要提高對軟件測試的認識,同時要建立獨立的軟件測試組織,采用先進的測試技術(shù),充分運用測試工具,不斷改善軟件開發(fā)流程,建立完善的軟件質(zhì)量保障的管理體系。只有這樣,才有可能達到軟件開發(fā)的預(yù)期目標(biāo),降低軟件開發(fā)的成本和風(fēng)險,提高軟件開發(fā)的效率和生產(chǎn)力,確保及時地發(fā)布高質(zhì)量的軟件產(chǎn)品。
我們將多年來所積累的軟件測試經(jīng)驗與技術(shù)實踐整理成書,與大家分享,希望成為軟件測試的實際應(yīng)用參考書。同時,也將作者在大學(xué)軟件學(xué)院的軟件測試專業(yè)課、在全國性軟件測試和質(zhì)量保證高級培訓(xùn)班及其他培訓(xùn)班等的授課經(jīng)驗與體會,融入本書之中。
本書參考教學(xué)時數(shù)為40~50學(xué)時,全書共分為7章:第1章討論了軟件測試的一些基本概念;第2章介紹了軟件開發(fā)過程及特征;第3章介紹了軟件測試的基礎(chǔ)知識;第4章詳細描述了面向?qū)ο鬁y試技術(shù);第5章討論了目前較為流行的Web系統(tǒng)測試技術(shù);第6章介紹軟件測試的組織與管理;第7章通過一個實例,給出了完整的與軟件測試相關(guān)的文檔。本書最后附有軟件測試術(shù)語。第1章和第3章由撫順職業(yè)技術(shù)學(xué)院的王愛平老師編寫,第2章和附錄A由撫順職業(yè)技術(shù)學(xué)院的劉鳳玲老師編寫,第4章和第5章由青島職業(yè)技術(shù)學(xué)院的徐占鵬老師編寫,第6章和第7章由沈陽師范大學(xué)職業(yè)技術(shù)學(xué)院的李天輝老師編寫。撫順職業(yè)技術(shù)學(xué)院的張海偉老師參與了本書的編寫及校對工作。
本書在編寫過程中,參閱了很多國內(nèi)外同行的著作和文章,汲取了該領(lǐng)域最新的研究成果。在此,對這些成果的作者表示深深的感謝!
由于水平和時間的限制,書中不可避免地會出現(xiàn)一些錯誤,請廣大讀者不吝賜教。
第1章 軟件測試概述
1.1 軟件錯誤與缺陷
1.1.1 著名的軟件錯誤案例
1.1.2 軟件缺陷是什么
1.2 什么是軟件測試
1.2.1 軟件測試定義
1.2.2 軟件測試的特性
1.2.3 測試的目標(biāo)
1.2.4 軟件測試的原則
1.3 軟件質(zhì)量保證
1.3.1 軟件質(zhì)量的定義
1.3.2 軟件質(zhì)量特性
1.3.3 軟件質(zhì)量管理
1.3.4 軟件測試管理
1.4 軟件測試過程
1.4.1 測試計劃
1.4.2 單元測試
1.4.3 集成測試
1.4.4 系統(tǒng)測試
1.4.5 驗收測試
1.4.6 測試總結(jié)與報告
習(xí)題
第2章 軟件開發(fā)過程
2.1 軟件及其特征
2.1.1 軟件定義
2.1.2 軟件的特征
2.2 軟件生命周期
2.3 軟件開發(fā)模型
2.3.1 瀑布模型
2.3.2 快速原型模型
2.3.3 螺旋模型
2.3.4 V模型
2.3.5 噴泉模型
2.3.6 各種模型的比較
習(xí)題
第3章 測試技術(shù)基礎(chǔ)
3.1 代碼檢查
3.1.1 代碼會審
3.1.2 走查
3.2 黑盒測試
3.2.1 等價類劃分
3.2.2 邊界值分析
3.2.3 錯誤推測法
3.2.4 因果圖法
3.2.5 判定表分析法
3.3 白盒測試
3.3.1 邏輯覆蓋測試
3.3.2 基本路徑測試
3.4 測試用例設(shè)計
3.4.1 測試用例的概念
3.4.2 設(shè)計測試用例
3.4.3 測試用例的評審
習(xí)題
第4章 面向?qū)ο鬁y試技術(shù)
4.1 面向?qū)ο鬁y試概述
4.1.1 傳統(tǒng)開發(fā)方法存在的問題
4.1.2 面向?qū)ο蠹夹g(shù)
4.1.3 什么是面向?qū)ο鬁y試
4.1.4 面向?qū)ο鬁y試模型
4.2 面向?qū)ο蠓治龅臏y試
4.2.1 對類和對象范圍的測試
4.2.2 對結(jié)構(gòu)范圍的測試
4.2.3 對主題范圍的測試
4.2.4 對定義的屬性和實例關(guān)聯(lián)的測試
4.2.5 對定義的服務(wù)和消息關(guān)聯(lián)的測試
4.3 面向?qū)ο笤O(shè)計的測試
4.3.1 確定測試的問題域
4.3.2 人機交互部件設(shè)計的測試
4.3.3 對任務(wù)管理部件設(shè)計的測試
4.3.4 對數(shù)據(jù)管理部件設(shè)計的測試
4.4 面向?qū)ο缶幊痰臏y試
4.4.1 數(shù)據(jù)成員是否滿足數(shù)據(jù)封裝的要求
4.4.2 類是否實現(xiàn)了要求的功能
4.5 面向?qū)ο蟮膯卧獪y試
4.5.1 單元測試的內(nèi)容
4.5.2 單元測試開始時間
4.5.3 單元測試的人員
4.5.4 單元測試的方法
4.5.5 方法的測試
4.5.6 構(gòu)建類測試用例
4.5.7 測試程度
4.6 面向?qū)ο蟮募蓽y試
4.7 面向?qū)ο蟮南到y(tǒng)測試
4.8 面向?qū)ο蟮钠渌麥y試
4.8.1 基于故障的測試
4.8.2 基于腳本的測試
4.8.3 面向?qū)ο箢惖碾S機測試
4.8.4 類層次的分割測試
習(xí)題
第5章 Web系統(tǒng)測試技術(shù)
5.1 Web測試概述
5.1.1 Web的特點
5.1.2 基于Web的測試
5.2 Web可用性測試
5.2.1 鏈接測試
5.2.2 站點地圖/導(dǎo)航測試
5.2.3 圖形測試
5.2.4 表單測試
5.2.5 內(nèi)容測試
5.2.6 整體界面測試
5.2.7 Cookies測試
5.2.8 應(yīng)用程序特定的功能測試
5.3 性能測試
5.3.1 性能測試常用術(shù)語
5.3.2 Web性能測試的目標(biāo)和種類
5.3.3 性能測試步驟
5.4 負載測試
5.4.1 負載測試概述
5.4.2 負載測試的步驟
5.5 壓力測試
5.5.1 壓力測試概述
5.5.2 壓力測試的步驟
5.6 兼容性測試
5.6.1 兼容性測試概述
5.6.2 常用術(shù)語
5.6.3 標(biāo)準(zhǔn)和規(guī)范
5.6.4 數(shù)據(jù)共享兼容性
5.6.5 兼容性測試的過程
5.7 安全測試
5.7.1 Web應(yīng)用系統(tǒng)的安全性測試區(qū)域
5.7.2 常見的web應(yīng)用安全漏洞
5.7.3 安全測試過程
5.7.4 安全測試應(yīng)注意的問題
5.8 手機軟件測試簡介
5.8.1 手機軟件的特點
5.8.2 手機軟件測試的流程及內(nèi)容
5.8.3 手機軟件測試用例的設(shè)計
習(xí)題
第6章 軟件測試的組織與管理
6.1 軟件測試計劃
6.1.1 確定測試需求
6.1.2 評估風(fēng)險和確定測試優(yōu)先級
6.1.3 測試策略
6.1.4 確定測試資源
6.1.5 制訂時間表
6.1.6 制訂測試計劃
6.1.7 審核測試計劃
6.2 軟件測試的組織和管理
6.2.1 測試的過程及組織
6.2.2 測試人員的組織
6.2.3 軟件測試文件的組織
6.3 軟件測試的設(shè)計
6.3.1 測試設(shè)計的原則
6.3.2 工作量分析
6.3.3 確定并制訂測試用例
6.3.4 確立并結(jié)構(gòu)化測試過程
6.3.5 復(fù)審并評估測試覆蓋
6.4 軟件測試的執(zhí)行
6.4.1 執(zhí)行測試過程
6.4.2 測試執(zhí)行策略
6.5 軟件測試的總結(jié)與報告
習(xí)題
第7章 軟件測試實例
7.1 項目背景
7.2 測試計劃的制訂
7.2.1 項目簡介
7.2.2 測試參考文檔和測試提交文檔
7.2.3 系統(tǒng)風(fēng)險、優(yōu)先級
7.2.4 測試內(nèi)容與策略
7.2.5 測試資源
7.2.6 測試時間表
7.2.7 測試問題卡制定
7.2.8 附錄:項目任務(wù)
7.3 測試執(zhí)行
7.3.1 設(shè)置測試環(huán)境
7.3.2 按照測試用例執(zhí)行測試任務(wù)
7.3.3 評估測試的執(zhí)行
7.3.4 核實測試結(jié)果
7.3.5 測試執(zhí)行的策略
7.4 測試總結(jié)與報告
7.4.1 測試總結(jié)報告
7.4.2 附錄
附錄A 軟件測試術(shù)語
參考文獻