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