《軟件工程技術叢書:軟件測試的藝術(第3版)》從第1版付梓到現(xiàn)在已經30余年,是軟件測試領域的經典著作。本書結構清晰、講解生動活潑,簡明扼要地展示了久經考驗的軟件測試方法和智慧。
本書以一次自評價測試開篇,從軟件測試的心理學和經濟學入手,探討了代碼檢查、走查與評審、測試用例的設計、模塊(單元)測試、系統(tǒng)測試、調試等主題,以及極限測試、互聯(lián)網應用測試等高級主題,全面展現(xiàn)了作者的軟件測試思想。第3版在前兩版的基礎上,結合軟件測試的最新發(fā)展進行了更新,覆蓋了可用性測試、移動應用測試以及敏捷開發(fā)測試等內容。
本書適合軟件開發(fā)人員、IT項目經理等相關讀者閱讀,還可以作為高等院校計算機相關專業(yè)軟件測試課程的教材或參考書。
《軟件工程技術叢書:軟件測試的藝術(第3版)》適合軟件開發(fā)人員、IT項目經理等相關讀者閱讀,還可以作為高等院校計算機相關專業(yè)軟件測試課程的教材或參考書。海報:
序言:
1979年,Glenford J. Myers出版了一本現(xiàn)在仍被證明為經典的著作,這就是本書第1版。本書經受住了時間的考驗,25年來一直列在出版商提供的書目清單中。這個事實本身就是對本書可靠、精粹和珍貴品質的佐證。
在同一時期,本書第3版的幾位合著者共出版了200余本著作,大多數(shù)都是關于計算機軟件的。其中有一些很暢銷,再版了多次(例如Corey Sandler的《Fix Your Own PC》自付梓以來已出版到第8版,Tom Badgett關于微軟PowerPoint及其他Office組件的著作已經出版到第4版)。然而,那些作者的著作中沒有哪一本書能夠像本書一樣持續(xù)數(shù)年之后仍暢銷不衰。
區(qū)別究竟在哪里呢?那些新書只涵蓋了短期性的主題:操作系統(tǒng)、應用軟件、安全性、通信技術及硬件配置。20世紀80年代和90年代以來的計算機硬件與軟件技術的飛速發(fā)展,必然使得這些主題頻繁變動和更新。
在此期間出版的有關軟件測試的書籍已數(shù)以百計,這些書也對軟件測試的主題進行了簡要的探討。然而,本書為計算機界一個最為重要的主題提供了長期、基本的指南:如何確保所開發(fā)的所有軟件做了其應該做的,并且同樣重要的是,未做其不應該做的?
本書第3版中保留了同樣的基本思想。我們更新了其中的例子以包含更為現(xiàn)代的編程語言。我們還研究了在Myers編著本書第1版時尚無人了解的主題:Web編程、電子商務、極限編程與測試及移動應用測試。
但是,我們永遠不會忘記,新的版本必須遵從其原著,因此,新版本依然向讀者展示Glenford Myers全部的軟件測試思想,這個思想體系以及過程將適用于當今乃至未來的軟件和硬件平臺。我們也希望本書能夠順應時代,適用于當今的軟件設計人員和開發(fā)人員掌握最新的軟件測試思想及技術。
Glenford J. Myers,IBM系統(tǒng)研究所前高級研究員,同時還是RadiSys公司的創(chuàng)始人和前CEO。
Tom Badgett,曾經主管大型企業(yè)軟件開發(fā)團隊,已出版超過60本關于計算機軟件和硬件的技術書籍,同時他還是PcJr,Digital News等主流計算機雜志的技術編輯。
Corey Sandler,計算機新聞的先鋒,他曾經負責Gannett Newspapers 和the Associated Press的技術部分以及之后成為Pc Magazine的第一任主編。他同時還是Digital News(針對DEC小型機的一份報紙)的編輯創(chuàng)始團隊成員,他著作等身,目前已經出版了超過150本書籍,覆蓋了從計算機到商業(yè)以及很多其他領域。
譯者序
序言
前言
第1章 一次自評價測試
第2章 軟件測試的心理學和經濟學
2.1 軟件測試的心理學
2.2 軟件測試的經濟學
2.2.1 黑盒測試
2.2.2 白盒測試
2.3 軟件測試的原則
2.4 小結
第3章 代碼檢查、走查與評審
3.1 代碼檢查與走查
3.2 代碼檢查
3.2.1 代碼檢查小組
3.2.2 檢查議程與注意事項
3.2.3 對事不對人,和人有關的注意事項
3.2.4 代碼檢查的衍生功效
3.3 用于代碼檢查的錯誤列表
3.3.1 數(shù)據(jù)引用錯誤
3.3.2 數(shù)據(jù)聲明錯誤
3.3.3 運算錯誤
3.3.4 比較錯誤
3.3.5 控制流程錯誤
3.3.6 接口錯誤
3.3.7 輸入/輸出錯誤
3.3.8 其他檢查
3.4 代碼走查
3.5 桌面檢查
3.6 同行評審
3.7 小結
第4章 測試用例的設計
4.1 白盒測試
4.2 黑盒測試
4.2.1 等價劃分
4.2.2 一個范例
4.2.3 邊界值分析
4.2.4 因果圖
4.3 錯誤猜測
4.4 測試策略
4.5 小結
第5章 模塊(單元)測試
5.1 測試用例設計
5.2 增量測試
5.3 自頂向下測試與自底向上測試
5.3.1 自頂向下的測試
5.3.2 自底向上的測試
5.3.3 比較
5.4 執(zhí)行測試
5.5 小結
第6章 更高級別的測試
6.1 功能測試
6.2 系統(tǒng)測試
6.2.1 能力測試
6.2.2 容量測試
6.2.3 強度測試
6.2.4 可用性測試
6.2.5 安全性測試
6.2.6 性能測試
6.2.7 存儲測試
6.2.8 配置測試
6.2.9 兼容性/轉換測試
6.2.1 0安裝測試
6.2.1 1可靠性測試
6.2.1 2可恢復性測試
6.2.1 3服務/可維護性測試
6.2.1 4文檔測試
6.2.1 5過程測試
6.2.1 6系統(tǒng)測試的執(zhí)行
6.3 驗收測試
6.4 安裝測試
6.5 測試的計劃與控制
6.6 測試結束準則
6.7 獨立的測試機構
6.8 小結
第7章 可用性(或用戶體驗)測試
7.1 可用性測試基本要素
7.2 可用性測試流程
7.2.1 測試用戶的選擇
7.2.2 需要多少用戶進行測試
7.2.3 數(shù)據(jù)采集方法
7.2.4 可用性調查問卷
7.2.5 何時收工,還是多多益善
7.3 小結
第8章 調試
8.1 暴力法調試
8.2 歸納法調試
8.3 演繹法調試
8.4 回溯法調試
8.5 測試法調試
8.6 調試的原則
8.6.1 定位錯誤的原則
8.6.2 修改錯誤的技術
8.7 錯誤分析
8.8 小結
第9章 敏捷開發(fā)模式下的測試
9.1 敏捷開發(fā)的特征
9.2 敏捷測試
9.3 極限編程與測試
9.3.1 極限編程基礎
9.3.2 極限測試:概念
9.3.3 極限測試的應用
9.4 小結
第10章 互聯(lián)網應用測試
10.1 電子商務的基本結構
10.2 測試的挑戰(zhàn)
10.3 測試的策略
10.3.1 表示層的測試
10.3.2 業(yè)務層的測試
10.3.3 數(shù)據(jù)層的測試
10.4 小結
第11章 移動應用測試
11.1 移動環(huán)境
11.2 測試面臨的挑戰(zhàn)
11.2.1 移動設備多樣性
11.2.2 運營商網絡基礎設施
11.2.3 腳本編程
11.2.4 可用性測試
11.3 測試方法
11.3.1 真機測試
11.3.2 基于模擬器的測試
11.4 小結
附錄A極限編程示例程序
附錄B小于1000的素數(shù)
第 1 章
Chapter 1
一次自評價測試
自本書30年前首次出版以來,軟件測試變得比以前容易得多,也困難得多。軟件測試何以變得更困難?原因在于大量的編程語言、操作系統(tǒng)以及硬件平臺的涌現(xiàn)。在20世紀70年代只有相當少的人使用計算機,而在今天幾乎人人離不開計算機。而今天計算機不僅僅是指擺在你書桌上的計算機了,幾乎所有我們所接觸和使用的電子設備都內置了一個“計算機”或者計算芯片,以及運行在其上的軟件系統(tǒng)。不妨回想一下在今天的社會中還在使用哪些不需要軟件驅動的設備,沒錯,錘子和手推車是,但是這些工具也大量使用在由軟件控制和操作的車間中。軟件的普遍應用提升了測試的意義。今天的設備已經千百倍強于它們的“前輩”,今天的“計算機”這個概念也變得越來越廣泛和越來越難準確地定義。數(shù)字電視、電話、游戲產品、汽車等都有一顆計算機的“心”以及運行其中的軟件,以至于在某些情況下它們自己本身也能夠被看做是一臺特別的計算機。 因此,現(xiàn)在的軟件會潛在地影響到數(shù)以百萬計的人,使他們更高效地完成工作,反之也會給他們帶來數(shù)不清的麻煩,導致工作或事業(yè)的損失。這并不是說今天的軟件比本書第1版發(fā)行時更重要,但可以肯定地說,今天的計算機(以及驅動它的軟件)無疑已影響到了更多的人、更多的行業(yè)。
就某些方面而言,軟件測試變得更容易了,因為大量的軟件和操作系統(tǒng)比以往更加復雜,內部提供了很多已充分測試過的例程供應用程序集成,無須程序員從頭進行設計。例如,圖形用戶界面(GUI)可以從開發(fā)語言的類庫中建立起來,同時,由于它們是經過充分調試和測試的預編程對象,將其作為自定義應用程序的組成部分進行測試的要求就減少了許多。另外,盡管市場上的測試書籍越來越多,甚至有過剩之嫌,似乎依舊有很多開發(fā)人員對全面的測試并不那么歡迎。引入更優(yōu)秀的開發(fā)工具、使用已經通過測試的GUI(圖形界面控件)控件、緊張的交付日期以及高度集成的便利開發(fā)環(huán)境會讓測試變得僅僅是讓那些最基本的測試用例走走過場罷了。影響不大的bug也許只不過會讓最終用戶覺得使用不方便而已,然而嚴重的bug則可能造成經濟損失甚至是人身傷害。本書所闡述的方法旨在幫助設計人員、開發(fā)工程師以及項目經理更好地理解全面綜合測試的意義所在,并提供行之有效的指南以幫助達成測試的目標。
所謂軟件測試,就是一個過程或一系列過程,用來確認計算機代碼完成了其應該完成的功能,不執(zhí)行其不該有的操作。軟件應當是可預測且穩(wěn)定的,不會給用戶帶來意外驚奇。在本書中,我們將討論多種方法來達到這個目標。
……