好的軟件少不了測試?

更新 發佈閱讀 6 分鐘

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

ONES Publication

We share what we have learned about app and web development. Find us in ones.software. Email: hello@ones.software

聯絡我們:

主頁: https://ones.software/tw/

電郵地址: hello@ones.software

Contact us:

Homepage: https://ones.software/

Email address: hello@ones.software



Reference:

https://www.sitepoint.com/javascript-testing-unit-functional-integration/

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)

留言
avatar-img
Offision 智能辦公室資訊平台
8會員
50內容數
通過 Offision 立即提高您的辦公績效!免費試用! 無需信用卡 即開即用
2022/06/22
深入了解如何提供訪客真正需要的服務 Bookings ONE簡單快捷辦理登記手續,從而給人留下深刻的印象,而您可以專注於給他們致以熱情的問候。 訪客體驗不只是提供服務,應以方便訪客為先 訪客可能是潛在的客戶,良好的訪客體驗服務有助你增加生意 訪客服務中經常遇上的難題 安全問題 健康問題
Thumbnail
2022/06/22
深入了解如何提供訪客真正需要的服務 Bookings ONE簡單快捷辦理登記手續,從而給人留下深刻的印象,而您可以專注於給他們致以熱情的問候。 訪客體驗不只是提供服務,應以方便訪客為先 訪客可能是潛在的客戶,良好的訪客體驗服務有助你增加生意 訪客服務中經常遇上的難題 安全問題 健康問題
Thumbnail
2020/12/08
之前我們已經介紹兩個今年Google 新提出的網站性能基準, Largest Contentful Paint 最大內容繪製,和 First Input Delay 首次輸入延遲。這次就看看 Cumulative Layout Shift 累計版面配置轉移。
Thumbnail
2020/12/08
之前我們已經介紹兩個今年Google 新提出的網站性能基準, Largest Contentful Paint 最大內容繪製,和 First Input Delay 首次輸入延遲。這次就看看 Cumulative Layout Shift 累計版面配置轉移。
Thumbnail
2020/09/30
Google 經常更新網站性能的指標和工具,務求在衡量網站方面的用戶體驗與時並進。那讓我們來看看今年Google 提出的網站性能基準其中之一:FID — First Input Delay 首次輸入延遲吧。
Thumbnail
2020/09/30
Google 經常更新網站性能的指標和工具,務求在衡量網站方面的用戶體驗與時並進。那讓我們來看看今年Google 提出的網站性能基準其中之一:FID — First Input Delay 首次輸入延遲吧。
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
最近在研讀單元測試的藝術這本書,也剛好因為自己對單元測試的撰寫還沒有很游刃有餘XD,但由於我是挑重點看,簡單做個內容讀後感的整理
Thumbnail
最近在研讀單元測試的藝術這本書,也剛好因為自己對單元測試的撰寫還沒有很游刃有餘XD,但由於我是挑重點看,簡單做個內容讀後感的整理
Thumbnail
過去在程式導師實驗課程中,整理過這兩篇筆記探討「測試」是怎麼回事: [week 3] 初探 Jest:如何測試程式? [week 22] React:用 SPA 架構實作一個部落格(三)- 淺談測試 在轉職後的第一家公司,組內曾嘗試在既有專案中撰寫測試,卻因時程緊湊而不了了之。
Thumbnail
過去在程式導師實驗課程中,整理過這兩篇筆記探討「測試」是怎麼回事: [week 3] 初探 Jest:如何測試程式? [week 22] React:用 SPA 架構實作一個部落格(三)- 淺談測試 在轉職後的第一家公司,組內曾嘗試在既有專案中撰寫測試,卻因時程緊湊而不了了之。
Thumbnail
介紹 通常我們程式寫完之後,要確保程式沒問題我們就會進行測試 在這裡我們將測試分兩大類: 單元測試(Unit Test,UT):對程式碼的最小單位所進行的測試 整合測試(Integration Test):系統/模組之間的測試,通常會接觸到真實系統 在這裡只會簡單介紹一下單元測試的概念 這裡在將單元
Thumbnail
介紹 通常我們程式寫完之後,要確保程式沒問題我們就會進行測試 在這裡我們將測試分兩大類: 單元測試(Unit Test,UT):對程式碼的最小單位所進行的測試 整合測試(Integration Test):系統/模組之間的測試,通常會接觸到真實系統 在這裡只會簡單介紹一下單元測試的概念 這裡在將單元
Thumbnail
完成對功能的了解之後,我們就要開始進入實現功能的開發階段。跟以往的開發流程不同的是,我們在敏捷開發中注重的是製作有價值的東西。也就是在計畫中,我們獲取的資訊都是對使用者有用、可以被看見以及操作和跨團隊協作的性質。
Thumbnail
完成對功能的了解之後,我們就要開始進入實現功能的開發階段。跟以往的開發流程不同的是,我們在敏捷開發中注重的是製作有價值的東西。也就是在計畫中,我們獲取的資訊都是對使用者有用、可以被看見以及操作和跨團隊協作的性質。
Thumbnail
從測試方法的名字中可以很輕鬆的了解到,TDD(測試驅動開發)的前提就是先寫測試,然後再去開發我們的系統。要達成這樣的條件,就會需要有明確的規格才能夠實行。
Thumbnail
從測試方法的名字中可以很輕鬆的了解到,TDD(測試驅動開發)的前提就是先寫測試,然後再去開發我們的系統。要達成這樣的條件,就會需要有明確的規格才能夠實行。
Thumbnail
大多數的工程師常常會有一個疑問,就是「測試」應該要怎麼測試才是正確的?在過去,軟體測試大多還是以人工為主,在這幾年逐漸的出現自動化測試之後,實際上我們是不清楚應該要怎麼寫測試。
Thumbnail
大多數的工程師常常會有一個疑問,就是「測試」應該要怎麼測試才是正確的?在過去,軟體測試大多還是以人工為主,在這幾年逐漸的出現自動化測試之後,實際上我們是不清楚應該要怎麼寫測試。
Thumbnail
Game of Life的「核心計算」部分寫好了,短短的沒幾行,畢竟也就那麼幾條判斷規則而已,沒什麼太複雜的東東要處理。說是寫好了,但到底能不能跑、跑出來的結果對不對,那可還是在未定之天哩。
Thumbnail
Game of Life的「核心計算」部分寫好了,短短的沒幾行,畢竟也就那麼幾條判斷規則而已,沒什麼太複雜的東東要處理。說是寫好了,但到底能不能跑、跑出來的結果對不對,那可還是在未定之天哩。
Thumbnail
回顧過往,參與協作了超過 60 個軟體方案。 曾接觸過合作內容差異頗大,比如 仔細看看也還蠻多面向的,未來好像可以就這些部分做些分享交流。但總會想到一件事,到底這些開發裡頭到底都在做些什麼? 身為設計師是否常常覺得某些著名產品的體驗不好?比如該對齊沒對齊或重要功能拜放在很難找到的地方。
Thumbnail
回顧過往,參與協作了超過 60 個軟體方案。 曾接觸過合作內容差異頗大,比如 仔細看看也還蠻多面向的,未來好像可以就這些部分做些分享交流。但總會想到一件事,到底這些開發裡頭到底都在做些什麼? 身為設計師是否常常覺得某些著名產品的體驗不好?比如該對齊沒對齊或重要功能拜放在很難找到的地方。
Thumbnail
tl;dr, 沒有測試談不上好軟件! 軟件編碼的質素和一間公司發展的關係,在之前的文章《Code 寫得好對公司有用嗎?》已有討論,那麼有什麼因素會左右編碼的質素?其中一樣就是軟件測試。
Thumbnail
tl;dr, 沒有測試談不上好軟件! 軟件編碼的質素和一間公司發展的關係,在之前的文章《Code 寫得好對公司有用嗎?》已有討論,那麼有什麼因素會左右編碼的質素?其中一樣就是軟件測試。
Thumbnail
測試驅動開發(Test-Driven Development, TDD)或是行為驅動開發(Behavioral-Driven Developement)是當代軟體工程裡面常見的方法論,然而以資料科學或是數據分析的專案來說,通常主要的「測試」會以模型的準確性或是資料分布的模式為核心
Thumbnail
測試驅動開發(Test-Driven Development, TDD)或是行為驅動開發(Behavioral-Driven Developement)是當代軟體工程裡面常見的方法論,然而以資料科學或是數據分析的專案來說,通常主要的「測試」會以模型的準確性或是資料分布的模式為核心
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News