《探索性軟件測試》
說說《探索性軟件測試》這本書吧,閱讀之後一些個人理解和思考,純文字,不感興趣可忽略。。。
第一章有這麽一句話:從設計來說,有些軟件的功能本身就存在功能邏輯上的錯誤或不友好,且產生的效果完全違背我們的初衷。
做軟件測試工作,或許第一件要知道的事情就是:沒有完美的設計和產品。
也許這也是軟件測試這個行業產生以及發展至今的原因吧,即使軟件設計、開發、測試流程不斷在優化完善,但它依然存在缺陷!
軟件缺陷來源於軟件開發本身,主要原因是軟件工程師沒有理解、預見或測試到所有可以運行的環境。
或者換一句話來說:程序永遠無法預防用戶的各種操作而帶來的損失。
軟件應用的四個基本功能:接收輸入、產生輸出、存儲數據、運行運算
那麽,如何盡可能把缺陷排除在交付用戶使用之前?主要有以下兩點:
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
《探索性軟件測試》