程式設計師如何培養好的測試習慣?

2022-02-11 12:36:21 字數 1995 閱讀 1042

軟體開發周期通常至少有以下4個步驟:需求分析,軟體開發,測試,部署。而其中的測試是我們今天要說到的重點,今天我們來聊一聊程式設計師和測試這件事。

目前大部分軟體公司或者it部門是沒有配備專門的測試人員的,測試通常依靠程式設計師自測,公司內部人員測試,自動化工具測試等等。

在沒有測試人員的情況下,其中最重要的環節其實是程式設計師自測。我們知道好的軟體並不是一蹴而就的,而是一步步迭代而成。而在迭代過程中如何有效保證軟體質量和專案週期,就離不開測試。

在認清測試的重要性之前我們先了解一下軟體專案管理金三角具體是什麼。

我們都知道大部分情況下軟體專案想要同時滿足:「多、快、好、省」是不可能的,一般只能佔兩樣。而在軟體專案中,也有乙個類似的平衡關係,就是軟體質量(產品的質量,客戶的滿意度)與範圍(需要實現多少功能)、時間(多久可以完成)、成本(花多少錢)四個要素之間的平衡。《軟體工程之美》-寶玉

我們可以看到質量是放在中間的,因為軟體工程的目標就是要構建和維護高質量的軟體。而很顯然,想要提高質量必定離不開測試。沒有完善的測試,我們就不能確保交付乙個高質量的軟體(高質量的編碼是目前很多程式設計師還達不到的乙個要求)。

看到上圖肯定會有乙個問題:時間和成本被壓縮的情況下,我們怎麼能夠保證質量?

成本低可能我只夠招到合適的開發,而專業的測試人員這一塊我們只能放棄。時間緊張,那麼我可能並沒有時間實現乙個自動化測試工具或者說對每乙份**都寫上單元測試。

很多時候,實際情況確實如此。但這並不是我們簡化測試的理由。我個人認為:單元測試在敏捷開發模型中是必不可少的一部分(瀑布模型中留有足夠的時間給到測試),因為敏捷開發模型是小步快跑,逐步迭代的。在專案的整個開發過程中,如果沒有配合一定量的單元測試,那麼越到後期測試的壓力越大,耽誤的時間更多。從長遠來講是不划算的。

也有人說,我用敏捷開發模型的目的就是更快推出最小可行性產品,讓市場或者說種子客戶驗證產品,完善產品。如果糾結於完善的單元測試豈不是浪費我寶貴的時間?

上面我們提到了時間、成本、範圍和質量的關係。我們這裡可以通過壓縮範圍來獲得時間,給測試留出空間,優先實現核心功能的單元測試。畢竟你出於對自己的**的負責性,總歸是要測試的。不管你是自己點點點還是通過介面工具一類來測試,效果都不如編寫乙個完善的單元測試來的更划算。畢竟這功能你可能不止要測試一次,以後業務變更可能還需要測試,這時候你可能會忘記來測試這個功能,而單元測試能幫助你避免這個問題。

自動化測試按照google的分類可以簡略分為3種:小型測試、中型測試、大型測試。

小型測試是為了驗證乙個**單元的功能,例如針對乙個函式或者乙個類的測試。上文說的的單元測試就是乙個典型的小型測試。

中型測試是驗證兩個或多個模組應用之間的互動,通常也叫整合測試。

大型測試則是從較高的層次執行,把系統作為乙個整體驗證。會驗證系統的乙個或者所有子系統,從前端一直到後端資料儲存。大型測試也叫系統測試或者端對端測試。

而這裡對應程式設計師自測最基本的要求是能夠完成單元測試。要想提高自己的**質量,單元測試可能是最容易實現的一種方式。因為他不需要你再去學習其他知識就可以提高**質量,你只用完善單元測試,發現問題,解決問題,這樣就能培養出好的編碼習慣。

首先一定要培養寫單元測試的習慣。但凡寫完的**都需要自己測試的情況下,優先考慮寫個單元測試來查驗**的準確性。至於時間成本的問題大家可以自己考慮,畢竟現在單元測試框架都十分的完善了,這並不會花你太多時間。

然後我們再看看在編寫乙個完善的單元測試的過程中,我們應該考慮的問題:

然後更深層次的考慮是我們在編寫**的時候就要考慮**的可測試性,常見的關鍵點有以下幾個:

以上幾個關鍵點如果有興趣的同學可以自行去極客時間專欄《設計模式之美》中學習。

好的程式設計師習慣養成

好的程式設計師習慣養成 前言 對於學習某一新的事物,如果對其沒有興趣,那麼對於這件事物的吸收的效率會大大下降。對此,僅以此篇獻給那些正在學習拼搏的人們 增加知識儲備,培養興趣的基礎 知識是興趣產生的基礎條件,因而要培養某種興趣,就應有某種知識的積累,如要培養程式設計的興趣,就應先接觸一些程式設計的作...

培養好的習慣

1萬事提前準備 所需執行的任務越重要,這種預演就越發不可或缺。只有經過大量的預演 或者練習 才能夠在實際執行任務的過程中有出色的表現。再一次,這是良性迴圈和惡性迴圈之間的選擇和差異。準備充分的人,會有出色的表現,最終能夠良好地完成任務,而這樣的經驗會使他更加堅信提前準備的重要。準備不充分的人,屆時必...

程式設計師的培養

全屏閱讀 收藏 這篇文字是我好久以來的想法,有一些感悟,有一些激烈的言辭,我很自豪我就是一名程式設計師,我希望給程式設計師或者前程式設計師們帶來一點啟發。也許你不認可我的言辭,也許你不屑我的觀點,無論如何,歡迎談談你的看法。讓程式設計師做更多種類的事 為什麼有人說小公司鍛鍊人?在小公司,條件並不那麼...