2019-12-16|閱讀時間 ‧ 約 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
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)

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.