1. 程式人生 > >《探索性軟件測試》

《探索性軟件測試》

ref 檢測 這也 單元測試 devel 代碼 興趣 應用程序 鏈接

說說《探索性軟件測試》這本書吧,閱讀之後一些個人理解和思考,純文字,不感興趣可忽略。。。

第一章有這麽一句話:從設計來說,有些軟件的功能本身就存在功能邏輯上的錯誤或不友好,且產生的效果完全違背我們的初衷。

做軟件測試工作,或許第一件要知道的事情就是:沒有完美的設計和產品。

也許這也是軟件測試這個行業產生以及發展至今的原因吧,即使軟件設計、開發、測試流程不斷在優化完善,但它依然存在缺陷!

軟件缺陷來源於軟件開發本身,主要原因是軟件工程師沒有理解、預見或測試到所有可以運行的環境。

或者換一句話來說:程序永遠無法預防用戶的各種操作而帶來的損失。

軟件應用的四個基本功能:接收輸入、產生輸出、存儲數據、運行運算

那麽,如何盡可能把缺陷排除在交付用戶使用之前?主要有以下兩點:

1、缺陷預防

這一點主要從軟件開發人員角度來說:編寫更好地設計規範、實施代碼審核(code review)、代碼靜態分析、單元測試(unit testing)等等;

①代碼審核:開發人員視角:如何實現這個功能——————盲點

測試人員視角:如何攻破這個功能

二者相輔相成,缺一不可

說到這裏,想起一種軟件研發模式:測試驅動開發(TDD:test-driven-development)

②靜態代碼分析:不需要實際運行代碼程序,其主要包括分析程序源代碼(source code)、目標代碼(object code)、最終編譯生成的二進制文件或程序。

③數據:軟件需要IO數據,才能覆蓋程序中各個代碼路徑、程序、功能;軟件測試是個動態的過程,在不同環境運行軟件,使用合理的測試數據,嘗試多次不同的輸入。

2、缺陷檢測

軟件測試工程師的工作,就是盡可能主動暴露、發現缺陷,並配合其他軟件工程師解決缺陷;而測試人員的測試形式,一般有兩種:利用工具進行自動化測試和手工測試。

①自動化測試

說起自動化測試,常見的類型有UI自動化、接口自動化以及單元自動化;業內對其的評價,也可以說各執己見,它的優點和缺點,都很明顯。

優點:編寫代碼腳本執行測試用例,效率高,省卻了大量的時間和人力成本

缺點:代碼腳本維護成本較大、前期人力時間需要投入的成本大、需要比較穩定的環境等等,還有,如何確定自動化測試真的完成了應該完成的任務?是否輸出了正確的結果?

②手工測試

這種類型的測試人員,可以說占軟件測試從業人員的大多數,業內俗稱點工(點點點),說來有點嘲諷,很多人覺得點點點沒有技術含量,都是自嘲居多(雖然我也偶爾開玩笑

說自己專註點工多年^_^)。不過話說回來,點點點也有很多東西需要學習,如何分析需求、設計覆蓋率足夠高的用例,如何有效的執行用例發現缺陷、及時跟蹤、和開發人員

溝通、定位缺陷、協助解決缺陷,以及足夠大的腦洞,比較好的閱讀理解以及文檔編寫能力,這些都很需要時間去鉆研練習以及實踐。

探索性軟件測試

本書主要內容就是探索性測試這個方法,或者說,一種思維邏輯方式、方法論,更合適。

主要有兩塊內容,局部探索性測試和全局探索性測試

探索性軟件測試核心:強調個人自由與責任的測試方法,讓測試人員借由不斷學習來改善測試的規劃與執行,同時在測試過程中同時改善測試的案例來達到不斷互補優化。

大概總結了一下,其主要內容就是以下幾個點:

①何時何人采用何種方法測試什麽

②對需求的探索、了解、熟悉

③對工作流的不斷探索

④測試案例的重用性、簡潔有效性

④模塊拆分、關註IO上下遊、

⑤方法論、探索論、思考總結優化

探索性軟件測試的三個目標:

①理解應用程序的工作邏輯和原理,接口,以及實現了哪些功能

②盡量了解熟悉軟件的所有功能

③尋找缺陷

最後,在本書的末尾篇章找到如下內容,算是寥有收獲。

軟件測試十戒律:

1.汝應用大量輸入反復錘煉汝之應用程序

2.汝應貪圖汝之鄰居的應用程序

3.汝應親自尋找睿智的預言家

4.汝不應崇拜無法重現的失效

5.汝應尊重汝的模型和自動化測試

6.汝應利用開發人員的過錯與他們作對

7.汝應醉心於謀殺應用程序(慶祝藍屏吧)

8.汝應保持安息日(指產品發布時刻)的聖潔

9.汝應貪圖開發人員的源代碼

具體內容鏈接:www.howtobreaksoftware.com(PS:需要收費)

相關鏈接:http://blog.csdn.net/andy572633/article/details/13004731

http://blog.csdn.net/andy572633/article/details/46941753

《探索性軟件測試》