软件构造学习笔记-第二周
本周課程把第六章測試的內容提前講了一部分,主要為實驗1服務,講了有關測試的概念、作用和基本方法。“測試優先”的思想是非常重要的,根據spec寫出簡單而全面的測試,在方法/類完成后第一時間對其進行測試,保證每個方法/類的正確性,就能顯著提高整個程序的正確性。如果先寫完所有代碼再進行測試、debug,將耗費更多的時間定位錯誤,會嚴重降低效率。
有關測試
1.好的測試:能發現錯誤,不冗余,具有最佳特性,復雜度適中。
2.測試種類:分為單元測試、集成測試、系統測試。
3.測試需要有正確的態度:測試時要讓程序盡快出錯,因為只有發現了錯誤才有改正錯誤的機會。把錯誤改正后,代碼質量才能得到提升。
測試用例
1.測試用例是輸入+執行條件+期望結果。測試用例的開發是有其特定目的的,一般來說是測試程序某一部分的正確性或性能。
2.測試流程 :
寫測試用例->組織測試用例(一般在和src同級的文件夾test中)->執行測試用例->獲取狀態和報告->根據報告修改并重新測試直到測試通過
測試優先編程/測試驅動開發(TDD)
1.在寫源代碼之前先寫測試,盡早而經常地經常測試,而不是把測試留到最后。最后測試通常會降低效率,因為總體測試之前沒有對代碼的任何部分進行測試,每一處都有可能出錯。
2.步驟:寫規范(即指定輸入和輸出的關系)->寫規范的測試用例->寫代碼->執行測試
3.規范也有可能是有漏洞的。寫測試可以發現規范中的錯誤或者不完整,及時修正有利于程序的開發。
使用JUnit進行自動化單元測試
1.JUnit是一個Java語言的單元測試框架。Junit 測試也是程序員測試,即所謂的白盒測試,它需要程序員知道被測試的代碼如何完成功能,以及完成什么樣的功能。
2.編寫測試類的原則:
①測試方法上必須使用@Test進行修飾
②測試方法必須使用public void 進行修飾,不能帶任何的參數
③新建一個源代碼目錄來存放我們的測試代碼,即將測試代碼和項目業務代碼分開
④測試類所在的包名應該和被測試類所在的包名保持一致
⑤測試單元中的每個方法必須可以獨立測試,測試方法間不能有任何的依賴
⑥測試類使用Test作為類名的后綴(不是必須)
⑦測試方法使用test作為方法名的前綴(不是必須)
3.測試類需要組織在特定目錄中,并且要與被測試類處于同一包中
4.有關基本測試方法的書寫,參考https://www.cnblogs.com/ysocean/p/6889906.html
黑盒測試
1.黑盒測試忽略實現細節,關注代碼功能是否符合要求。
2.黑盒測試用例的要求:用盡可能少的測試用例,盡快運行,發現盡可能多的錯誤。
3.黑盒測試與規約、程序的關系:黑盒測試用例需要在規約的基礎上進行選擇,測試在規約的范圍內,程序是否出現錯誤,即代碼功能是否符合要求。
圖4-黑盒測試用例與規約、程序的關系
4.等價類劃分
基于相似的輸入展示相似行為的假設。將被測函數的輸入域劃分為若干等價類,從等價類中導出測試用例。其中每個等價類代表著對輸入加以滿足/不滿足的有效/無效數據集合。
5.邊界值分析
在劃分等價類后,從每個等價類中取邊界值進行測試。因為程序的大部分錯誤發生在輸入域的邊界,而不是中央。邊界值分析方法是對等價類劃分方法的補充。
代碼覆蓋度
代碼覆蓋度是白盒測試中的概念。指已有的測試用例覆蓋了被測程序的多少,通常用被測程序中被執行語句百分比衡量。代碼覆蓋率越高,測試越充分。但要提高覆蓋度則需要更多的測試用例,同時會提高測試代價。
測試效果:路徑覆蓋>分支覆蓋>語句覆蓋
測試難度:路徑覆蓋>分支覆蓋>語句覆蓋
總結
以上是生活随笔為你收集整理的软件构造学习笔记-第二周的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中 安装centos-rele
- 下一篇: 软件构造学习笔记-实验1