顛覆完美軟件:軟件測試必須知道的幾件事

顛覆完美軟件:軟件測試必須知道的幾件事
定價:294
NT $ 294
 

內容簡介

本書是從事軟件行業五十余年的Gerald M. Weinberg針對軟件測試所寫的新作。

他在軟件項目的管理、設計、開發和測試方面都具有極其豐富的經驗,對於與軟件開發有關人員的心理尤其有深入的研究。

在本書中,他重點討論了與軟件測試有關的各種心理問題及其表現與應對方法。

作者首先闡述軟件測試之所以如此困難的原因——人的思維不是完美的,而軟件測試的最終目的就是發現對改善軟件產品和軟件開發過程有益的信息,故軟件測試是一個信息獲取的過程。

接着,作者利用豐富的經歷和大量的實例,展現了在軟件測試中可能會出現的各種與人的心理有關的現象、誤區、欺詐,以及容易犯下的常見錯誤等等。
 

目錄

1進行測試的原因1
1.1人類不是完美的思考者2
1.2我們要做出有關軟件的決定2
1.2.1日記條目12
1.2.2日記條目23
1.2.3日記條目33
1.2.4日記條目43
1.2.5日記條目54
1.2.6日記條目64
1.3決定可能是有風險的5
1.4測試可以提供降低風險的信息6
1.5小結8
1.6常見錯誤8

2測試無法做的事10
2.1信息未必有助於降低風險11
2.2也許我們不會使用那些花錢得到的信息12
2.3決定是感性的而不是理性的13
2.4不良的測試也許比不測試更糟14
2.5產品可能尚未准備好接受測試14
2.6小結15
2.7常見錯誤15

3不對所有可能性進行測試的原因18
3.1可能進行測試的數目是無限的19
3.2測試最多只是采樣20
3.3信息的成本可能超過無知的成本21
3.4也許我們可以用較少的測試獲取更多的信息22
3.5測試自助餐22
3.6小結23
3.7常見錯誤23

4測試和除錯的區別25
4.1測試會隨着機構的成長發生變化28
4.2以時間限制試探法作為管理法則,但根據需要進行調整30
4.3小結31
4.4常見缺陷31

5元測試33
5.1我們有說明書,但是找不到了34
5.2我們的錯誤太多了,導致缺陷數據庫無法高效運轉35
5.3我們沒找到任何缺陷,實際上我們並沒有真正地找35
5.4我們修改記錄讓缺陷看起來沒那麼嚴重36
5.5這不是我的組件中的問題,所以我不記錄36
5.6我不知道在測試錯誤的應用程序37
5.7我們不測試最差的組件,因為花的時間太長37
5.8我們已經發現了這麼多缺陷,不會再多了38
5.9我們的測試證明程序是正確的38
5.10我們運行了很多測試用例,根本就看不過來38
5.11如果我們的軟件在有三名用戶時工作良好,顯然它在有一百名用戶時也不會有問題39
5.12我們不希望測試人員知道我們將忽略他們提供的信息39
5.13我沒有報告缺陷,所以開發人員不會對我發脾氣40
5.14我們不需要測試它,因為開發人員非常有水平40
5.15接着說元信息41
5.16小結41
5.17常見錯誤41

6信息免疫44
6.1我們在生存規則受到威脅時會感到害怕45
6.2我們壓抑無法接受的事物46
6.3我們讓不可接受的事物合理化47
6.4我們將自己的負面品質投射給其他人48
6.5我們轉移指責從而免除自己的責任49
6.6我們對自己的不足進行過度補償51
6.7我們在覺得失去控制時開始強迫自己51
6.8小結52
6.9常見錯誤52
7如何應對防衛反應54
7.1確定恐懼55
7.2使用危機思維55
7.3實踐,實踐,再實踐56
7.4對自己進行測試57
7.5小結58
7.6常見錯誤58

8良好測試的要素59
8.1永遠無法確切地知道59
8.2只能根據事實來評估良好性61
8.3你可能希望故意插入一些缺陷62
8.4對良好性的估算總是統計性的62
8.5可以對非差性進行估算63
8.6小結64
8.7常見錯誤64

9有關測試的主要誤區66
9.1指責誤區66
9.2窮舉測試誤區67
9.3「測試產生質量」誤區68
9.4分解誤區69
9.5合成誤區70
9.6「所有測試都相同」誤區71
9.7「隨便哪個笨蛋都可以測試」誤區72
9.8小結73
9.9常見錯誤73

10測試不僅僅是敲擊鍵盤75
10.1毫無目的地敲擊鍵盤是不是測試76
10.2白手套測試77
10.3狗食測試78
10.4對測試人員也要進行測試80
10.5可能在沒有意識到的情況下進行測試80
10.6演示不是測試81
10.7小結82
10.8常見錯誤82

11信息攝取84
11.1使用薩提亞交互模型來解析溝通84
11.1.1攝取(Intake)85
11.1.2確定含義(Meaning)85
11.1.3確定重要性(Significance)86
11.1.4做出反應(Response)86
11.2人們聽取信息時是有選擇性的87
11.3數據來源會影響到攝取87
11.4時機也會導致差異88
11.5人們會出現信息過載88
11.6減少測試的數量也許可以傳遞更多的信息89
11.7尋找測試之外的信息攝取90
11.8不要混淆理解和攝取90
11.9使用數據質疑來過濾理解91
11.10小結91
11.11常見錯誤91

12確定含義93
12.1案例1:四個缺陷,五種含義94
12.2案例2:四個缺陷,七種含義95
12.3案例3:四個缺陷,自行確定含義96
12.4進行解釋之前先弄清期望的是什麼96
12.5不知道期望時的做法98
12.6使用已經獲得的信息98
12.7使用間接信息99
12.8使用未獲得的信息99
12.9同樣的話可能具有不同的含義100
12.10「相同」可能並不一樣101
12.11某些時候不精確會更好101
12.12小結102
12.13常見錯誤102

13確定重要性104
13.1不同人會給同樣的信息賦予不同的重要性105
13.2公共的重要性也許和個人的不一樣106
13.3重要性依賴於上下文環境107
13.4不能總是根據金錢來確定重要性108
13.5不要采用過細的尺度110
13.6首先解決重要問題110
13.7聽從自己的情緒反應111
13.8小結112
13.9常見錯誤113

14做出反應115
14.1是運氣不好還是管理不善115
14.2項目最后會趕進度的原因116
14.3接近項目結束時應如何反應117
14.4對測試所需時間的估算與現實差距很大的原因118
14.4.1好天氣估算119
14.4.2不切實際的過程模型119
14.4.3低質的過程數據119
14.4.4沒有過程數據121
14.5確定是否已經錯過了可以有所改變的時刻122
14.6小結122
14.7常見錯誤122

15避免軟件測試變得越發困難124
15.1情況變得更糟的原因124
15.2讓系統盡可能小126
15.3讓「系統」模型是可擴展的126
15.4增量構建有清晰接口的分立組件127
15.5減少進入產品的缺陷數目127
15.6小結128
15.7常見錯誤128

16不使用機器進行測試130
16.1用機器進行測試總是不夠的130
16.2首先對最差的部分進行評審可以讓人了解缺陷的嚴重性135
16.3事實並不總是能令人信服的136
16.4測試人員是頗有價值的評審者136
16.5小結137
16.6常見錯誤137

17測試欺詐138
17.1我們會賣給你一個神奇的工具138
17.2我們的演示是欺詐139
17.3這麼多的證明信表明它一定很好141
17.4我們可以通過定價來欺詐141
17.5我們的工具會讀心術142
17.6我們保證你不用做任何事144
17.7我們一起密謀144
17.8避免欺詐的方法145
17.9小結145
17.10常見錯誤145

18忘卻型欺詐146
18.1推遲文檔化造成的后果146
18.2不明確的測試報告就像流沙一樣147
18.3偽造的測試報告阻止了改進147
18.4在別的地方進行報復148
18.5早期的答案可能產生誤導149
18.6「量」不是「質」的同義詞149
18.7不要將非測試活動當做測試150
18.8太整潔了,不可能是真的151
18.9電子表格中的垃圾還是垃圾152
18.10小結152
18.11常見錯誤152
尾聲153
尾注155
其他閱讀材料159
 

軟件測試的目的是什麼?

我想大多數人對於這個問題的回答會是「保證交付高質量的軟件」。

也許從最終目的上來說是這樣的,但是單純只是軟件測試本身是無法為軟件的質量提供足夠保證的。

軟件的質量是從需求分析甚至是剛剛產生軟件相關概念的時候就開始產生,受到整個開發過程影響的一個性質,而測試只是用來將這一性質數值化、表面化的過程。

是不是擁有良好的測試過程就能夠保證交付高質量的軟件呢?

顯然是不夠的。

要保證軟件具有較高的品質,需要管理、開發、測試等多個部門的共同努力,尤其是管理部門如何看待測試,如何利用測試獲得的信息是至關重要的。
網路書店 類別 折扣 價格
  1. 新書
    $294