方格精選

測試的目的

閱讀時間約 2 分鐘
大多數的工程師常常會有一個疑問,就是「測試」應該要怎麼測試才是正確的?在過去,軟體測試大多還是以人工為主,在這幾年逐漸的出現自動化測試之後,實際上我們是不清楚應該要怎麼寫測試。
即使有寫,我們對測試的概念也停留在「檢查正常」這件事情上,雖然本質上沒有問題,然而根據我們對其理解、認知的方式,會有許多不同的解釋。

為什麼要測試

我們的程式是不斷改變的,需要透過測試去避免每一次的變化造成的影響,也就是軟體是一種生物,所提到的概念,情況隨時會改變。
既然情況會改變,每一次都做一次品質保證(QA,Quality Assurance)的檢查似乎就沒問題了!然而,進行 QA 大多是需要專門的工程師來驗證的,透過這樣的方式很難自動化,也難以對應現今軟體快速發展的趨勢。
也因此,根據測試的成本、規模,我們還區分出了整合測試、單元測試不同的層級,從不同角度來觀察一個系統的穩定程度。

如何有效地測試

答案其實意外的簡單,我們只需要先專注在有「商業價值」上的程式碼進行測試即可。如同 StackOverflow 上由 Kent Beck 這位測試驅動開發大師的回答一樣,工作是寫程式而不是寫測試,因此測試是用來保證對程式的信心。
以自己早期 Ruby on Rails 專案的開發狀況來說,我們大多會選擇優先針對 Model 類型的物件測試,因為這類物件在 Rails 中大多存放著「商業邏輯」也就是攸關整個產品的核心。
一昧的追求「覆蓋率(測試涵蓋的程式碼比例)」不一定是一件好事,更多時候我們應該在開發的過程中思考,加入這個測試是否能夠讓系統更加「穩定」透過這樣的循環,持續的提升覆蓋率來改善系統的穩定度。

修改的勇氣

寫測試最直接的好處,不外乎就是給我們提供了「安心修改」的勇氣,當我們的產品有複雜的邏輯存在時,一但破壞了這些邏輯就會造成損失。然而,假設有測試幫我們檢驗,每一次的修改就不會有那麼大的心理負擔。
即使真的發生錯誤,我們也可以針對「測試不夠完善」這件事情來討論,而不是去檢討由誰改壞了系統。透過這樣的正向循環,工程師就能夠更加勇敢的修改、調整系統,搭配自動化的測試機制,就能逐步的加快開發的速度。

封面圖片使用 UnsplashGreen Chameleon 的作品,有想聽的主題可以透過匿名問卷告訴我,想了解專業的技術主題可以到弦而時習之找找靈感。
為什麼會看到廣告
avatar-img
55會員
40內容數
軟體工程師逐漸變成一個熱門的職業,當我們進入這個職業之後應該要具備怎樣的技能才會在工作上更加順利呢?這系列的專欄會分享日常工作中的經驗以及一些案例分析,讓我們一起努力成為一位更優秀的軟體工程師吧!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
蒼時弦也的沙龍 的其他內容
刷題的時候,我們應該思考的不是「如何回答」而是用科學的方式,根據情境、題目要求進行分析,最後再找出適合的演算法去解決這些問題,同時也可以反思自己是否缺少對某些知識的理解。
很多公司面試確實會去考這些題目,並不是為了知道你是否會解題,更多的是想知道你怎麼思考。在工作中,當我們遇到各種不同類型的問題時,是否能夠根據自身的知識、經驗去探索出最佳的解決方案,大多是面試工程師所看重的一環。
既然是例外,就表示出現了我們預期以外的事情,就這點而言這個用詞跟翻譯都非常的精確。假設我們認為這段程式執行的時後不應該出現這個情況,那麼它就必須是一個例外。
簡單來說,寫程式最困難的地方往往不是技術上的問題,而是如何對當下的狀況正確判斷並且建立良好協作的狀態,才會是最為困難的地方。
聽了描述之後我的直覺反應告訴他「會有這樣的問題,應該是設計時少考慮了什麼!」 大多數軟體工程師從初學者階段開始進入到能夠獨立工作的時候,大多會需要自己考慮一個功能的設計,直到一個完整的系統設計。然而,我們總是找不到正確答案。
「什麼時候會有訂飲料系統呢?」從加入五倍紅寶石軟體開發到現在已經過了五年,每次都會有人提出來,接下來就不了了之。我們是一間九成以上都是工程師的公司,理論上像這樣的系統不應該那麼困難才對,為什麼就是沒辦法做出來呢?
刷題的時候,我們應該思考的不是「如何回答」而是用科學的方式,根據情境、題目要求進行分析,最後再找出適合的演算法去解決這些問題,同時也可以反思自己是否缺少對某些知識的理解。
很多公司面試確實會去考這些題目,並不是為了知道你是否會解題,更多的是想知道你怎麼思考。在工作中,當我們遇到各種不同類型的問題時,是否能夠根據自身的知識、經驗去探索出最佳的解決方案,大多是面試工程師所看重的一環。
既然是例外,就表示出現了我們預期以外的事情,就這點而言這個用詞跟翻譯都非常的精確。假設我們認為這段程式執行的時後不應該出現這個情況,那麼它就必須是一個例外。
簡單來說,寫程式最困難的地方往往不是技術上的問題,而是如何對當下的狀況正確判斷並且建立良好協作的狀態,才會是最為困難的地方。
聽了描述之後我的直覺反應告訴他「會有這樣的問題,應該是設計時少考慮了什麼!」 大多數軟體工程師從初學者階段開始進入到能夠獨立工作的時候,大多會需要自己考慮一個功能的設計,直到一個完整的系統設計。然而,我們總是找不到正確答案。
「什麼時候會有訂飲料系統呢?」從加入五倍紅寶石軟體開發到現在已經過了五年,每次都會有人提出來,接下來就不了了之。我們是一間九成以上都是工程師的公司,理論上像這樣的系統不應該那麼困難才對,為什麼就是沒辦法做出來呢?
你可能也想看
Google News 追蹤
本文探討如何設計製造業產線測試系統的架構,指出單純模擬產線場景的直觀設計,容易忽視測試流程的核心語意。產線測試需關注測試有效性與設備可靠性,並適時將測試良率回饋至生產系統,並降低瑕疵脫逃率。將測試物件獨立於架構之中,不僅提升彈性,亦便於應對未來規格變更,實現簡約高效的管理。
Thumbnail
單元測試為重構提供了安全防線,確保程式碼在修改後仍能正常運作。透過撰寫測試,我們能夠提高程式碼品質、預防回歸錯誤,並在重構過程中更具信心。測試的過程不僅幫助找出錯誤,也促使我們深入思考系統設計,從而優化整體架構。
Thumbnail
單元測試不僅能發現錯誤,更是提升開發技能的關鍵工具。Laravel 提供強大的測試框架,讓我們可以輕鬆撰寫測試。建立測試資料庫、撰寫測試方法、使用 Factory 生成測試資料,能確保程式碼穩定,並幫助開發者在修改與重構中更有信心。持續撰寫測試能提高程式碼品質,並讓開發過程更有條理與安全感。
Thumbnail
這篇文章探討了工程師在如何有效提升自己,強調不僅僅是多coding,而是要對程式碼有更深層的理解。隨著職涯發展,工程師需要從單純的技術執行者轉變為團隊領導者,具備解決複雜問題和與他人有效溝通的能力。
Thumbnail
A/B 測試是一種用來測試不同版本效果的實驗方法,可以用於網站優化、電子郵件行銷和社群媒體行銷中。瞭解 A/B 測試的五個大小技巧,包括明確的測試目標、控制變因、足夠的樣本數、一次只測試一個變因以及追蹤長期表現。在進行網頁優化時,可以將 A/B 測試應用於不同標題、文案、等元素,找出有效的改進方向。
我不知道跟我有沒有關係,我剛出社會的時候剛好到一家還算蠻大的網站公司,那個時後公司很多技術很不成熟,所以他們問我我都是怎麽測試網站,總之呢!狗眼看人低,他們以為我只是點開每一個連結檢查網頁,所以他們覺得自己很厲害就開始寫一些只會點開網站的程式,事實上網站測試是一頁一頁全憑經驗預知道客戶是怎樣使用一頁
上一篇主要在說如何做決定的,這篇就來寫寫面試前該做什麼準備。
Thumbnail
追求乾淨的程式碼是好的開始,但不要陷入過度設計的陷阱,導致程式難以維護。實際上,考慮團隊狀況和專注於解決真正的問題更為重要。了解公司的規模和現實情況,適時調整工作重心。技術不斷進步,使得寫程式變得更加容易,但這並不意味著工程師的角色會消失。在選擇技術時,也要考慮隱形成本有時簡單的解決方案反而更有效。
Thumbnail
無論是現在、過去還是未來,學習如何學習都是終身受用的技能。迭代和進步是軟體工程師的追求。文章提出學習程式的四大關鍵:實踐、輸出、整理、思考,並期望讀者能在選擇的路上一路前行。
Thumbnail
在競爭激烈的商業世界,1人創業的路途充滿了挑戰和機遇。 不少創業者陷入失敗的困局,因爲他們都忽略了一件很重要的事情——市場測試。 市場測試為創業者提供寶貴的洞察,幫助他們更好地理解他們的目標市場,預測需求,並在競爭激烈的環境中脫穎而出。 而一些常見的市場測試的致命錯誤卻可能讓創業者付出沉重的代價。
本文探討如何設計製造業產線測試系統的架構,指出單純模擬產線場景的直觀設計,容易忽視測試流程的核心語意。產線測試需關注測試有效性與設備可靠性,並適時將測試良率回饋至生產系統,並降低瑕疵脫逃率。將測試物件獨立於架構之中,不僅提升彈性,亦便於應對未來規格變更,實現簡約高效的管理。
Thumbnail
單元測試為重構提供了安全防線,確保程式碼在修改後仍能正常運作。透過撰寫測試,我們能夠提高程式碼品質、預防回歸錯誤,並在重構過程中更具信心。測試的過程不僅幫助找出錯誤,也促使我們深入思考系統設計,從而優化整體架構。
Thumbnail
單元測試不僅能發現錯誤,更是提升開發技能的關鍵工具。Laravel 提供強大的測試框架,讓我們可以輕鬆撰寫測試。建立測試資料庫、撰寫測試方法、使用 Factory 生成測試資料,能確保程式碼穩定,並幫助開發者在修改與重構中更有信心。持續撰寫測試能提高程式碼品質,並讓開發過程更有條理與安全感。
Thumbnail
這篇文章探討了工程師在如何有效提升自己,強調不僅僅是多coding,而是要對程式碼有更深層的理解。隨著職涯發展,工程師需要從單純的技術執行者轉變為團隊領導者,具備解決複雜問題和與他人有效溝通的能力。
Thumbnail
A/B 測試是一種用來測試不同版本效果的實驗方法,可以用於網站優化、電子郵件行銷和社群媒體行銷中。瞭解 A/B 測試的五個大小技巧,包括明確的測試目標、控制變因、足夠的樣本數、一次只測試一個變因以及追蹤長期表現。在進行網頁優化時,可以將 A/B 測試應用於不同標題、文案、等元素,找出有效的改進方向。
我不知道跟我有沒有關係,我剛出社會的時候剛好到一家還算蠻大的網站公司,那個時後公司很多技術很不成熟,所以他們問我我都是怎麽測試網站,總之呢!狗眼看人低,他們以為我只是點開每一個連結檢查網頁,所以他們覺得自己很厲害就開始寫一些只會點開網站的程式,事實上網站測試是一頁一頁全憑經驗預知道客戶是怎樣使用一頁
上一篇主要在說如何做決定的,這篇就來寫寫面試前該做什麼準備。
Thumbnail
追求乾淨的程式碼是好的開始,但不要陷入過度設計的陷阱,導致程式難以維護。實際上,考慮團隊狀況和專注於解決真正的問題更為重要。了解公司的規模和現實情況,適時調整工作重心。技術不斷進步,使得寫程式變得更加容易,但這並不意味著工程師的角色會消失。在選擇技術時,也要考慮隱形成本有時簡單的解決方案反而更有效。
Thumbnail
無論是現在、過去還是未來,學習如何學習都是終身受用的技能。迭代和進步是軟體工程師的追求。文章提出學習程式的四大關鍵:實踐、輸出、整理、思考,並期望讀者能在選擇的路上一路前行。
Thumbnail
在競爭激烈的商業世界,1人創業的路途充滿了挑戰和機遇。 不少創業者陷入失敗的困局,因爲他們都忽略了一件很重要的事情——市場測試。 市場測試為創業者提供寶貴的洞察,幫助他們更好地理解他們的目標市場,預測需求,並在競爭激烈的環境中脫穎而出。 而一些常見的市場測試的致命錯誤卻可能讓創業者付出沉重的代價。