Elbeja2019 學習大全 《軟體測試的藝術》讀書筆記

2021-09-22 09:48:37 字數 4815 閱讀 8307

生命是永恆不斷的創造,因為在它內部蘊含著過剩的精力,它不斷流溢,越出時間和空間的界限,它不停地追求,以形形色色的自我表現的形式表現出來。

--泰戈爾

知識改變命運勤奮塑造成功

天才是百分之九十九的勤奮加百分之一的靈感

the art of software testing》讀書筆記(1)_引子

有關自己與軟體測試之間的淵源而言,獲悉這個領域的時間不長,接觸的時間就更可謂短暫,但仔細想來,還要從大學期間說起比較好。

軟體測試這個概念第一次出現在我的眼前時,是大四上學期開的軟體工程這個科目中所涉及到的一點點。由於某些因素,使我在大學期間忽略了對測試領域相關知識的儲備。第二次面對它時,是考研複習準備階段。

那時,我對測試這個領域也僅僅只是知道,就是中文書面表達的「測試」這兩個漢字的含義而已。

工作的前兩年裡,或許是因為從事的是有關演算法方面性質的工作,所以並未對測試這個領域給予過多的關注,還好,或多或少還是接觸到了一些。直到最近一年多來,由於乙個大型專案人手不夠的緣故,所以臨時從自己負責的另乙個研究專案中抽過來(剛好該專案階段性完成),負責有關此專案的測試部署與規劃。而這個時候,才能說是:

真正意義上接觸到了軟體測試這個領域。

雖然,在此專案中也有自己開發的一些模組、演算法及一些模組、演算法的優化跟重構。但,從這個專案階段性結束後自己的體會而言,給我感悟最深的還是有關軟體測試這個領域的。通過在這個專案裡的工作,讓我真正體會到了:

軟體測試是一門藝術。恰恰也是因為這個緣故,這也才讓我開始有了想重新認識和品位測試藝術這一領域的奧妙所在。

《the art of software testing》讀書筆記(2)_前言

喜歡在網上書店中遛達,看到不錯的書就買下。為什麼不去書店?乙個字,懶唄!

總覺得,有那去書店的時間,完全可以好好睡一美覺,亦或可親手烹製一頓美味可口的美食。哎,反正就是,懶得走出家門去逛街!

恰巧,此次瀏覽書籍時,無意間看到了《the art of software testing》這本書。在看了大家所給予它極高的評價留言後,雖然有些疑惑(畢竟這個時代,槍手太多了!),但我深信:

一本書能夠「活」25年,應該還是很不簡單的。於是,就半信半疑的訂購了這本書,期望能夠從這本書中獲悉到有用的知識,來豐富一下自己面對這個領域時的貧乏困境,亦作為知識儲備。

暈,這麼薄!這是我拿到這本書後的第一反應。真的!

沒有預料到這書會這麼薄!原以為這本經典的書,會諸如《c++ primer》、《the c++ programming language》、《programming windows》等這些著作那麼厚。而當翻看了幾章後,覺得確實很經典,也明白了為什麼這本書會「活」了25年。

於是,就誕生了我對這本書的第二感覺:薄而精!看來是需要自己多花些時間去慢慢的品味,這樣才方可體味到最純最美的底醞。

打住自己對這本書的侃侃而談(怕跑題太遠,拽不回來),還是關注一下軟體測試這個領話題吧!

軟體測試,怎麼說呢?就自身經歷而言,確實如書上所說:測試依然是軟體開發中的「黑色藝術」。

大學期間,計算機課程開的不少,沒聽說有專門開一門關於測試的課程。所以,在學生階段,測試就屬於是個被拋棄掉的名詞!畢業時,不是做軟體就是去搞網路,沒有聽到乙個同學去應聘測試的!

工作中,有專門的測試組(或部門),就更不用自己怎麼上心去研究了!如今的氛圍就是:紅的夠紅,黑的夠黑!

那叫乙個「專」!哎,為什麼不實行「兩手都要抓,兩手都要硬」的政策呢(一己之見,偏頗在所難免)?或許,我還不明白:

「術業有專攻」的深刻含義吧!

算了,最後還是談談對這本書的總觀吧!

1. 該書是針對測試這一主題進行的實踐**,而不是理論研究,順便捎帶了些對新的語言和過程的**;

2. 前言中提到了乙個最為重要而又是長期、基本的指南:如何確保所開發的所有軟體做了其應該做的,並且同樣重要的是,未做其不應該做的?

3. 引言裡指出一條著名的經驗:即在乙個典型的程式設計專案中,軟體測試或系統測試大約占用50%的專案時間和超過50%的總成本。

《the art of software testing》讀書筆記(3)_一次自我檢測

有創意!這是我對該書第一章的評價,也是唯一一次在看新書開篇時,能夠把第一章給透透徹徹看完的。為何?

還不是實在不能恭維有些書籍在開篇就進行枯燥而繁多的總結性、介紹性的文字。雖心裡也清楚這些文字存在的重要性。但每每,還總是先粗略瞄過,在通讀全書後,才會再次認認真真的看那些文字(這時,才真的能感悟到「提綱攜領」的中文含義啊)。

創意在於:它只通過展示一次自評價測試,就能吸引我的眼球,並湧出一種想繼續向下讀的衝動;更能引起對自身一些有關邏輯思維(考慮欠周全、縝密,存在盲點)、聯想能力(需拓展思維,要富於聯想與想像,即:思維「活」起來)、角度問題(要巧妙轉換角度)等方面,所可能存在的不足進行深思。

當然,能夠引起深思的緣故,還不是在於那個評價測試嘛!提起來,汗顏!依據所謂的測試用例(即:

特定的資料集合)自測試後,發現自己只能考慮到11項(總14項)需要測試的關鍵點。

文尾,談談作者對「軟體測試」這個概念的定義吧。所謂軟體測試,就是乙個過程或一系列過程,用來確認計算機**完成了其應該完成的功能,不執行其不該有的操作。軟體應當是可**且穩定的,是不會給使用者帶來意外驚奇的。

《the art of software testing》讀書筆記(4)_初次**

「軟體測試是一項技術性工作,但同時也涉及經濟學和人類心理學的一些重要因素」,這是該書第二章中最吸引我的話,耐人深思。而對於該章的內容,我個人覺得可概括為以下三個方面:

o 心理學角度:駁斥了一些社會普遍存在的錯誤認識,並給出了測試的正確定義及在含義上進行了延伸。(用寫文章上常用的術語來說,是:先破後立。)

o 經濟學角度:驗證軟體測試不能夠發現「所有」的錯誤。(術語是:各個擊破。)

o 歸納了軟體測試中的一些基本原則(術語是:歸納與演繹。),及三個重要的測試原則:

1. 軟體測試是為發現錯誤而執行程式的過程;

2. 乙個好的測試用例具有較高的發現某個尚未發現的錯誤的可能性;

3. 乙個成功的測試用例能夠發現某個尚未發現的錯誤。

文尾,值得一提的是:在本章能明顯感到作者側重於從心理學角度來分析一些潛在的問題。

the art of software testing》讀書筆記(5)_心理學視角解析(上)

先談談從心理學角度所需要分析的問題。在章節的開始,作者就明確的給予了乙個認知:要成功地測試乙個軟體應用程式,測試人員也需要有正確的態度。

在某些情況下,測試人員的態度可能比實際的測試過程本身還要重要。並且,分析了現在社會上普遍存在的兩種「本末倒置」的錯誤認識。

針對程式設計師:一開始就把「測試」這個術語的定義搞錯了。所以可想而知,作者肯定要先破其錯誤的根源和弊端,然後再立其正確的認知,為了能更深入的理解和在實踐上的把握,作者又對正確的認知給予了進一步延伸的闡述;

針對專案經理:針對測試方面而言,對「成功的」和「不成功的」的理解認識上的錯誤。

文尾,值得一提的是:作者在這引薦乙個病人去醫生那裡看病的例子,於是將一些繞人的關係和原理,剎那間弄的清晰易懂了。看來恰當適宜的舉例還是比枯燥的講解概念間的區別與聯絡要容易的多,也生動的多,並且使人也能理解的更加深刻。

《the art of software testing》讀書筆記(6)_心理學視角解析(中)

上次談到了兩個錯誤認識,那就繼續這個話題吧。

先分析與專案經理有關的這個錯誤認識吧。因為這個因素可能會導致一些在測試問題上的根本性錯誤的認識。作者主要是從「成功的」和「不成功的」這兩個方面來剖析的:

指明了錯誤認識的本源:「成功的測試」是指沒有發現錯誤的測試用例;而「不成功的測試」是指發現了某個新錯誤的測試。

明確正確認識的本質:如果在測試某段程式時發現了錯誤,而且這些錯誤是可以修復的,就將這次合理的設計和由此得到有效執行的測試稱為是「成功的」;並對如果在本次測試中可以最終確定再無其他可查出的錯誤,同樣也被稱作是「成功的」;而對未能適當地對程式進行檢查,且在大多數情況下,未能找出錯誤的測試被稱為是「不成功的」。

引薦病人去找醫生看病的這一生動的例子,加以引申理解並給予了結論:能發現新錯誤的測試用例不太可能被認為是「不成功的」,相反,能發現錯誤就證明它是值得設計的。乙個「不成功的」測試用例,會使程式輸出正確的結果,但不能發現任何錯誤。

細想:如果規劃的測試用例是能使程式輸出正確的結果,但不能發現任何錯誤的話,那是多麼的可怕阿。那麼測試就等於沒有測試,或者是在徒勞。

而潛在的錯誤還依然潛在,這會開發人員跟使用者來說,都是有不小的隱患的。

這才真正認識到:發現測試真的是一門需要去潛心研究的藝術。不僅僅是為了我們開發人員自己,也為了使用者,更為了將來軟體能夠更好的維護跟公升級。

《the art of software testing》讀書筆記(7)_心理學視角解析(下)

接著,來談談程式設計師方面會產生的錯誤認識吧!這個方面可能在具體實踐中顯的更重要。

由於作者在開篇就先把三個錯誤認識給擺到讀者的眼前;然後就立馬表明了其正確的定義,並給予了分析和對錯誤認識的駁斥。洋灑灑的寫了許多,條理上未免會有些混亂。因此,我就按照自己理解的來小結一下吧!

首先,測試的正確定義是:測試是為發現錯誤而執行程式的過程。該定義暗示了兩層含義:

軟體測試是乙個破壞性的過程,甚至是乙個「施虐」的過程。(就自己的親身經歷而言,大部分的開發人員在測試期間,對測試人員或多或少都會暫時產生一點厭煩或恐懼的心態。主要是會讓開發人員的**改的面目全非的,且這個過程是反反覆覆的。

)對於乙個特定的程式,應該如何設計測試用例(測試資料)、哪些人應該而哪些人又不應該執行測試。(這是有關測試人員構成的問題。就自己的親身經歷而言,這一點很重要,因為測試人員的態度要比測試的過程更為重要。

)然後,明確測試的正確含義後,**了一下現今面臨的三個錯誤認識並逐一給予了充分的駁斥。

「軟體測試就是證明軟體不存在錯誤的過程」。

1. 若目的僅是為了證明程式中不存在錯誤,就會在潛意識中傾向於實現這個目標;即,會傾向於選擇可能較少導致程式失效的測試資料;若目標在於證明程式中存在錯誤,設計的測試資料就有可能更多地發現問題。後者肯定比前者會更多地增加程式的價值。

2019 學習大全 實習日記

知識改變命運勤奮塑造成功 天才是百分之九十九的勤奮加百分之一的靈感 實習日記 2008年9月22日晴 今天我第一天進入施工現場,我先熟悉了工程概況,專案經理給我介紹專案技術負責人等專案管理人員。專案技術負責人帶我參觀了現場,給我介紹工程的進度,安排我的工作內容。技術負責人先讓我在辦公室熟悉圖紙,通過...

2019學習大全各工種安全技術交底

知識改變命運勤奮塑造成功 天才是百分之九十九的勤奮加百分之一的靈感 電工一 安全用電自我防護技術交底 施工現場用電人員應加強自我防護意識,特別是電動建築機械的操作人員必須掌握安全用電的基本知識,以減少觸電事幫的發生。對於現場中一些固定機械裝置的防護和操作人員應進行如下交底 1 開機前認真檢查開關箱內...

2019 學習大全 消防設計規範

知識改變命運勤奮塑造成功 天才是百分之九十九的勤奮加百分之一的靈感 目錄1.高層民用建築物分類2 2.一般規定2 3.高層建築消火栓給水系統用水量3 4.室外消防給水管道設定4 5.消防水池5 6.室外消火栓5 7.室內消防給水管道5 8.室內消火栓6 9.消防水箱6 10.水幫浦結合器7 11.消...