在軟件開發(fā)過程中增加單元測試,可解決代碼缺陷反復修復,但程序運行效果依然不佳的難題。周立功教授新作《軟件單元測試入門與實踐》,為大家深度解讀單元測試的相關知識。通過本文參加活動,將有機會領取新書。
軟件開發(fā)的困境
工程師在開發(fā)軟件時,經常會遇到這樣的問題:
代碼編寫完成后,無法直接運行,或者一運行就出錯;
經歷了漫長的調試過程后,程序終于能夠運行起來,然而在進行測試時,發(fā)現大量缺陷,修復這些缺陷需要耗費大量時間;
部分缺陷很難定位,為了定位這些缺陷,開發(fā)者可能需要花費數周甚至數月的時間;
在修復缺陷的過程中,不斷有新的缺陷出現,項目發(fā)布時間遙遙無期;
好不容易通過了測試,產品上市后客戶仍然反映有問題……
之所以會出現這些情況,很大程度是因為沒有進行單元測試。那么,開發(fā)者該如何開始單元測試,并達到預期效果呢?
其實,單元測試無法順利開展的原因多種多樣,主要包括以下幾點:
前期需求分析不到位,開發(fā)過程中需求經常發(fā)生變化,進而導致代碼重構,在這種情況下,單元測試反而成了無用功;
開發(fā)者沒有對軟件進行精心設計,導致代碼本身耦合性太高,單元測試無法開展;
沒有單元測試的理論基礎以及實踐經驗,開發(fā)者不清楚如何設計測試用例,也不清楚如何編寫測試代碼。
為了解決單元測試過程中出現的各種技術問題,周立功教授及其團隊歷時三年,編寫了《軟件單元測試入門與實踐》一書,便于廣大讀者更加順利地進行單元測試。
什么是軟件單元
在軟件整體架構設計中,將軟件系統拆分為各個不同組件,不同組件相互配合以完成軟件系統所需功能;在軟件具體細節(jié)設計中,將組件進一步拆分為各個軟件單元,這些軟件單元再相互配合以完成組件功能。可以這么認為:軟件單元是軟件系統中可獨立編譯的最小功能單元。
1、在單元測試實際開展過程中,可以這么認為:軟件單元是軟件具體細節(jié)設計中承擔單一職責的功能模塊。
2、一般來說,在C++中,一個類別會承擔一個單一的職責,那么按類來劃分單元是相對比較合理的。
3、通常情況下,在C語言中,一個文件中的代碼會承擔單一的職責,那么按文件來劃分單元是比較合理的。
當然這些情況并不絕對,在實際測試過程中需要根據實際情況進行調整。開發(fā)者要掌握的單元劃分基本原則:
一個單元不能承擔太多的職責;
一個單元不能依賴太多其他的單元。
適合讀者
本書使用工具主要針對C語言和C++語言,適合C語言和C++語言開發(fā)人員及相關測試人員閱讀。
閱讀本書你將收獲:靜態(tài)測試相關知識、編寫測試代碼相關技能、生成測試樁相關技能、自動構建和持續(xù)集成相關技能。
目前已有部分開發(fā)者意識到單元測試的重要性,他們開始在軟件開發(fā)過程中增加單元測試環(huán)節(jié),除了軟件質量有了顯著的提升外,軟件開發(fā)周期也變得更加可控。
章節(jié)特色
在第1章以及第2章,主要對軟件測試以及單元測試進行了簡要的介紹,讀者可根據這兩部分內容對單元測試進行簡單的了解。
第3章介紹了編碼規(guī)則檢測、代碼結構分析以及相關工具的使用,若讀者需要進行靜態(tài)測試可以閱讀這部分內容。
第4章~第9章介紹了如何設計測試用例,如何使用相關工具編寫測試代碼。在這一部分介紹了兩個測試框架 Gtest 和 Unity,讀者在閱讀這一部分后,可以使用這兩個框架開展單元測試。
第10章介紹了跨平臺構建的方法,當讀者有編寫跨平臺代碼的需求時,可以閱讀這部分內容。
第11章介紹了兩個代碼覆蓋率生成工具,讀者可以使用這兩個工具評估測試代碼的覆蓋率的情況。
第12章介紹了持續(xù)集成系統 Gitlab 的使用,讀者需要搭建或使用持續(xù)集成服務器時,可以閱讀這部分內容。
新書獲取方式
方式一:ZLG致遠電子將送出100本《軟件單元測試入門與實踐》紙質版書籍,識別下方二維碼填寫申請,我們將隨機抽取100位工程師送出紙質版新書,申請截止時間為:10月10日17:00;
方式二:在公眾號回復【編程】,或者復制下面鏈接至瀏覽器打開,可直接閱讀新書電子版。
http://www.zlg.cn/foxmail/weixinpdf/software_unit_test.pdf