好的軟件少不了測試?

更新於 2023/06/02閱讀時間約 5 分鐘

tl;dr, 沒有測試談不上好軟件!


軟件編碼的質素和一間公司發展的關係,在之前的文章《Code 寫得好對公司有用嗎?》已有討論,那麼有什麼因素會左右編碼的質素?其中一樣就是軟件測試。
軟件測試(Software testing),指的是透過測試以作鑑定軟件的品質,及早找出軟件中的程式錯漏,並驗證軟件是否適合使用。軟件測試主要以運行軟件的某部分元件,評估該部分是否正常運作或合乎一些基本標準,如:
- 符合軟件設計及開發要求;
- 正確地回應各類型的輸入;
- 在可接受的時間內執行所需功能;
- 軟件功能可使用度高;
- 可以在預期的環境中安裝和運行;
- 可以達到持份者期望的總體結果;

每一個軟件中的元件,理論上都可以有無窮盡可行的測試,但資源並非無限.。所以實際上,軟件測試會傾向有策略地利用現有的時間及資源,去選擇一些比較有價值的可行測試,從而去嘗試運行該軟件並找出程式的錯漏。
不少軟件公司都會聘請專責品質保證 ( Quality Assurance,縮寫為 QA ) 的員工,在軟件推出之前進行一系列的人手測試。不過,這種比較傳統的測試方法往往有不少問題。

一是若果軟件本身規模大的時候,開發一方就要投放比較多的人力資源,以作出較快而全面的測試;而當每一個程式錯漏出現,品質保證人員和開發人員都必須一一檢視。
二是因為每一次重大的軟件更新,都必須經過全面的測試,才能確保軟件沒有因為更新期間編碼上的改動而產生紕漏,結果往往花費很多時間才能將新的版本推出。

近年DevOps的出現,就嘗試解決QA的工序冗長問題。在DevOps的環境下,開發人員 (Dev)、技術運營(Ops)和品質保證並非各自運行,而是傾向在每一次程式發布都有緊密合作。DevOps 希望藉著採用敏捷(Agile)般的開發方式,減少每一次編碼的變更範圍,使得每次部署不會對軟件生產系統造成巨大影響,軟件得以平滑的速率逐漸生長。開發人員亦使用各種自動化的測試,配合持續交付( Continuous delivery,縮寫為 CD)和持續整合( Continuous integration,縮寫為 CI),確保軟件本身不受編碼改動影響之餘,亦能將QA繁瑣重複的工作分攤, 減少每次部署出錯。
以下三種測試是軟件開發中經常利用到的自動測試模式,包括:
  1. 單元測試 Unit test,是針對軟件組成的元件進行測試,其目的在於檢驗軟件基本組成單位是否正常運作。
  2. 整合測試 Integration test,是將程式模組採用適當的整合組裝,並對系統的介面及整合後的功能進行測試,其目的在於檢查軟件單位之間的介面是否運作正常。
  3. 功能測試 Functional test,是針對軟件功能進行測試,其目的在於檢驗軟件是否正常運作,並是否實現業務上的要求。
單元測試的好處在於能在很早期的開發階段就能夠發現問題。它能夠將其所針對的元件中從整個軟件架構分離,並提供嚴謹的測試以確保該元件運作正常。開發人員能夠利用單元測試,在編碼的層面上自動測試每個單元最基本的功能,而毋須品質保證的人員親自檢驗。
而基於這種由下而上的結構,各個元件已經經過單元測試,而系統就能夠透過整合測試去專注檢驗元件之間是否正常運作,而功能測試則能在各部件間得以確保有效整合之下,集中在用家的層面測試軟件是否符合原有的軟件設計。
這三種測試在開發的不同時段都各有需求:
  1. 當軟件進行開發時,測試主要為了配合開發人員工作,盡快從系統得到回饋,所以多以單元測試為主;
  2. 在預備環境,這階段主要偵測問題,如問題發生,則停止軟件部署。通常所有測試皆符合此階段;
  3. 在生產環境,主要會運行如冒煙測試(smoke test)等比較快速的功能測試,在有限的時間內廣泛涵蓋測試軟件的主要功能。
所以我們可以說,雖然編寫測試所花費的時間不短,但對於持續開發來說,確是能夠透過預防因為編碼改動而產生的問題,來減輕長遠的技術債項,加快開發的速度,大大減輕開發的成本。

更多資訊可以留意 ONES Publication 定期發佈的文章,亦可以聯絡我們,我們的網址是: https://ones.software
We share what we have learned about app and web development. Find us in ones.software. Email: hello@ones.software
聯絡我們:
電郵地址: hello@ones.software
Contact us:
Email address: hello@ones.software

Reference:
https://juejin.im/entry/584ab2dc128fe1006c7cdc11
https://medium.com/@frozenfung/unit-test-%E8%88%87-integration-test-%E6%A6%82%E8%AB%96-41b39f0f823
https://zh.wikipedia.org/wiki/%E5%86%92%E7%83%9F%E6%B5%8B%E8%AF%95_(%E8%BD%AF%E4%BB%B6)
為什麼會看到廣告
通過 Offision 立即提高您的辦公績效!免費試用! 無需信用卡 即開即用
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
相比傳統軟件一次收費或定期訂閱收費,開源軟件走的是截然不同的方向,而明顯的是,不同商業巨頭亦開始樂意走進這條新路。
如果有接觸過網頁開發的讀者,或者會聽過很多不同的專有名詞,其中不少得Front-end (前端) 和 Back-end (後端)這兩個字詞。有一些網站可能只需要設計師和前端開發者,有些則需要後端開發者和測試人員等等,那究竟前端和後端如何分辨?首先,讓我們搞清楚前端開發是什麼一回事。
「究竟應該花多點時間去寫好編碼,還是應該快快寫好新的功能,往後才改善編碼的質素」,雖然大家心裏面都希望花時間寫好每一個功能的編碼,但面對開發時間永遠不足、上司的壓力,很多時就會無視編碼的質素,來成就新功能/新產品可以及早推出。我們怎麼說服你自己、你的上司一開始的編碼質素是何其重要?
在現今的商業世界,軟件是企業營運中不可缺少的部份。要決定您的企業是否購買現成的軟件,還是自行開發一套軟件,這可能是一項艱鉅的決定:自行開發一套軟件相對昂貴,但現成的軟件卻缺乏彈性。但為什麼還會有企業自行開發軟件?
軟件可以即要即用?企業級軟件訂閲服務 (SaaS) 開發 - 系統架構篇:Single tenancy (單一租戶模式) 和 Multi tenancy (多租戶模式) 歡迎聯絡我們: http://ones.software
相比傳統軟件一次收費或定期訂閱收費,開源軟件走的是截然不同的方向,而明顯的是,不同商業巨頭亦開始樂意走進這條新路。
如果有接觸過網頁開發的讀者,或者會聽過很多不同的專有名詞,其中不少得Front-end (前端) 和 Back-end (後端)這兩個字詞。有一些網站可能只需要設計師和前端開發者,有些則需要後端開發者和測試人員等等,那究竟前端和後端如何分辨?首先,讓我們搞清楚前端開發是什麼一回事。
「究竟應該花多點時間去寫好編碼,還是應該快快寫好新的功能,往後才改善編碼的質素」,雖然大家心裏面都希望花時間寫好每一個功能的編碼,但面對開發時間永遠不足、上司的壓力,很多時就會無視編碼的質素,來成就新功能/新產品可以及早推出。我們怎麼說服你自己、你的上司一開始的編碼質素是何其重要?
在現今的商業世界,軟件是企業營運中不可缺少的部份。要決定您的企業是否購買現成的軟件,還是自行開發一套軟件,這可能是一項艱鉅的決定:自行開發一套軟件相對昂貴,但現成的軟件卻缺乏彈性。但為什麼還會有企業自行開發軟件?
軟件可以即要即用?企業級軟件訂閲服務 (SaaS) 開發 - 系統架構篇:Single tenancy (單一租戶模式) 和 Multi tenancy (多租戶模式) 歡迎聯絡我們: http://ones.software
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
** 3C機構設計爸版權所有 ©️ ** (玩張完整內容,請至臉書粉絲專業) 機構可靠度的測試不外乎是為了確保產品安全的、品質確保的送到消費者手上,整體而言,機構可靠度測試的驗證的項目大致上囊括了以下這幾個項目。縱使機構可靠度的測試是測試部門所負責的項目,但是機構設計人員對於測試的detaile
本文探討如何設計製造業產線測試系統的架構,指出單純模擬產線場景的直觀設計,容易忽視測試流程的核心語意。產線測試需關注測試有效性與設備可靠性,並適時將測試良率回饋至生產系統,並降低瑕疵脫逃率。將測試物件獨立於架構之中,不僅提升彈性,亦便於應對未來規格變更,實現簡約高效的管理。
Thumbnail
測試對於構建複雜的 Vue 應用至關重要,因為它能防止回歸並鼓勵將應用拆分為可測試的模組。我們介紹了測試的基本術語和推薦的工具,包括單元測試、組件測試和端對端測試。建議越早開始測試,避免隨著時間推移而增加的相依性。單元測試專注於函數和邏輯的正確性,而組件測試則驗證 UI 元素的行為與交互。
Thumbnail
單元測試為重構提供了安全防線,確保程式碼在修改後仍能正常運作。透過撰寫測試,我們能夠提高程式碼品質、預防回歸錯誤,並在重構過程中更具信心。測試的過程不僅幫助找出錯誤,也促使我們深入思考系統設計,從而優化整體架構。
Thumbnail
單元測試不僅能發現錯誤,更是提升開發技能的關鍵工具。Laravel 提供強大的測試框架,讓我們可以輕鬆撰寫測試。建立測試資料庫、撰寫測試方法、使用 Factory 生成測試資料,能確保程式碼穩定,並幫助開發者在修改與重構中更有信心。持續撰寫測試能提高程式碼品質,並讓開發過程更有條理與安全感。
Thumbnail
A/B 測試是一種用來測試不同版本效果的實驗方法,可以用於網站優化、電子郵件行銷和社群媒體行銷中。瞭解 A/B 測試的五個大小技巧,包括明確的測試目標、控制變因、足夠的樣本數、一次只測試一個變因以及追蹤長期表現。在進行網頁優化時,可以將 A/B 測試應用於不同標題、文案、等元素,找出有效的改進方向。
我不知道跟我有沒有關係,我剛出社會的時候剛好到一家還算蠻大的網站公司,那個時後公司很多技術很不成熟,所以他們問我我都是怎麽測試網站,總之呢!狗眼看人低,他們以為我只是點開每一個連結檢查網頁,所以他們覺得自己很厲害就開始寫一些只會點開網站的程式,事實上網站測試是一頁一頁全憑經驗預知道客戶是怎樣使用一頁
上一篇主要在說如何做決定的,這篇就來寫寫面試前該做什麼準備。
Thumbnail
資料的統合 在程式設計中,其他人通常關心是否注意到執行的細節。作為程式設計師,主要應該關心的是程式的表現,但往往忽略了很多細節,這些細節可以決定程式的好壞。程式的好壞很大程度上取決於資料的統合,也就是資料是否被正規化。 不同類型的資料在系統中呈現一致 正規化可能對一些人來說聽起來很抽象,有些人
Thumbnail
在企業IT環境,系統和數據的備份的重要性相信是不用解說,亦不用懷疑的。 但很時時候,企業忽略的並不是備份,而是Drill test的重要性。
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
** 3C機構設計爸版權所有 ©️ ** (玩張完整內容,請至臉書粉絲專業) 機構可靠度的測試不外乎是為了確保產品安全的、品質確保的送到消費者手上,整體而言,機構可靠度測試的驗證的項目大致上囊括了以下這幾個項目。縱使機構可靠度的測試是測試部門所負責的項目,但是機構設計人員對於測試的detaile
本文探討如何設計製造業產線測試系統的架構,指出單純模擬產線場景的直觀設計,容易忽視測試流程的核心語意。產線測試需關注測試有效性與設備可靠性,並適時將測試良率回饋至生產系統,並降低瑕疵脫逃率。將測試物件獨立於架構之中,不僅提升彈性,亦便於應對未來規格變更,實現簡約高效的管理。
Thumbnail
測試對於構建複雜的 Vue 應用至關重要,因為它能防止回歸並鼓勵將應用拆分為可測試的模組。我們介紹了測試的基本術語和推薦的工具,包括單元測試、組件測試和端對端測試。建議越早開始測試,避免隨著時間推移而增加的相依性。單元測試專注於函數和邏輯的正確性,而組件測試則驗證 UI 元素的行為與交互。
Thumbnail
單元測試為重構提供了安全防線,確保程式碼在修改後仍能正常運作。透過撰寫測試,我們能夠提高程式碼品質、預防回歸錯誤,並在重構過程中更具信心。測試的過程不僅幫助找出錯誤,也促使我們深入思考系統設計,從而優化整體架構。
Thumbnail
單元測試不僅能發現錯誤,更是提升開發技能的關鍵工具。Laravel 提供強大的測試框架,讓我們可以輕鬆撰寫測試。建立測試資料庫、撰寫測試方法、使用 Factory 生成測試資料,能確保程式碼穩定,並幫助開發者在修改與重構中更有信心。持續撰寫測試能提高程式碼品質,並讓開發過程更有條理與安全感。
Thumbnail
A/B 測試是一種用來測試不同版本效果的實驗方法,可以用於網站優化、電子郵件行銷和社群媒體行銷中。瞭解 A/B 測試的五個大小技巧,包括明確的測試目標、控制變因、足夠的樣本數、一次只測試一個變因以及追蹤長期表現。在進行網頁優化時,可以將 A/B 測試應用於不同標題、文案、等元素,找出有效的改進方向。
我不知道跟我有沒有關係,我剛出社會的時候剛好到一家還算蠻大的網站公司,那個時後公司很多技術很不成熟,所以他們問我我都是怎麽測試網站,總之呢!狗眼看人低,他們以為我只是點開每一個連結檢查網頁,所以他們覺得自己很厲害就開始寫一些只會點開網站的程式,事實上網站測試是一頁一頁全憑經驗預知道客戶是怎樣使用一頁
上一篇主要在說如何做決定的,這篇就來寫寫面試前該做什麼準備。
Thumbnail
資料的統合 在程式設計中,其他人通常關心是否注意到執行的細節。作為程式設計師,主要應該關心的是程式的表現,但往往忽略了很多細節,這些細節可以決定程式的好壞。程式的好壞很大程度上取決於資料的統合,也就是資料是否被正規化。 不同類型的資料在系統中呈現一致 正規化可能對一些人來說聽起來很抽象,有些人
Thumbnail
在企業IT環境,系統和數據的備份的重要性相信是不用解說,亦不用懷疑的。 但很時時候,企業忽略的並不是備份,而是Drill test的重要性。