什麼是非功能測試?

已完成

於 Azure Pipelines 中執行功能測試中,您已將 Selenium UI 測試新增至管線。 UI 測試是一種「功能測試」形式。 在此部分中,您會探索可在管線中執行的「非功能」測試種類。

小組首先會定義非功能測試。 他們會談論這些測試的一些類型。 然後,他們會決定要新增至管線的非功能測試。

如何將非功能測試與功能測試進行比較?

在 Azure Pipelines 中執行功能測試中,我們已定義功能測試和非功能測試。

簡言之,「功能測試」會驗證軟體的每個功能是否做其應做的事情。 換句話說,功能測試會驗證應用程式的功能。

「非功能測試」會檢查應用程式的非功能層面 (例如效能和可靠性)。 您也可以在不是應用程式的系統 (例如基礎結構元件) 上執行非功能測試。 非功能測試的其中一個範例是確定多少人可以同時登入應用程式,而不會造成問題,例如回應時間較慢。

例如,在 Space Game 網站上,功能測試可能會驗證排行榜是否正確顯示,而且當使用者選取篩選條件時,其是否會顯示正確的記錄。 非功能測試可能會驗證排行榜篩選是否會在一秒內完成,即使許多使用者同時連線至網站也是一樣。

非功能測試一律會測試可測量的事物。 目標是改善產品。 例如,您的做法可能是改善應用程式使用資源的效率,或改善許多客戶同時使用應用程式時的回應時間。 以下是非功能測試可回答的一些問題:

  • 應用程式如何在正常情況下執行?
  • 當許多使用者同時登入時,應用程式會如何執行?
  • 應用程式有多安全?

我可以執行哪些種類的非功能測試?

有多種非功能測試。 其中許多會納入效能測試和安全性測試的廣泛類別中。

效能測試

效能測試的目標是提升應用程式的速度、可擴縮性和穩定性。 測試速度判斷應用程式回應的速度有多快。 測試可擴縮性判斷應用程式可處理的最大使用者負載。 測試穩定性判斷應用程式在不同負載下是否維持穩定狀態。 兩種常見的效能測試類型為負載測試和壓力測試。

負載測試

負載測試可確定應用程式在實際負載下的效能。 例如,負載測試可以判斷應用程式在其服務等級協定 (SLA) 上限下的執行程度。 基本上,負載測試可確定在多個使用者同時需要應用程式時該應用程式的行為。

使用者不一定是人。 例如,印表機軟體的負載測試可能會傳送大量資料給應用程式。 郵件伺服器的負載測試可能會模擬數以千計的並行使用者。

負載測試也是好方法,可以找出只在應用程式以其限制操作時才存在的問題。 這時候緩衝區溢位和記憶體流失之類的問題就會浮現出來。

在本課程模組中,您會使用 Apache JMeter 執行負載測試。 您可以使用一組同時存取網站的模擬使用者。

壓力測試

壓力測試可確定應用程式在繁重負載下的穩定性和強固性。 這些負載超過針對應用程式所指定的負載。 壓力測試判斷應用程式是否會在這些負載下當機。 如果應用程式失敗,壓力測試會檢查以確保其正常失敗。 例如,正常失敗可能會發出適當且提供資訊的錯誤訊息。

應用程式必須在異常繁重負載下操作的情節很常見。 例如,如果您的影片竄紅,您會想要知道伺服器可以處理額外負載的程度。 另一個常見的情節是在假日季節期間購物網站上的高流量。

安全性測試

「安全性測試」確保應用程式免於弱點、威脅和風險的影響。 徹底的安全性測試會尋找系統所有可能導致資訊缺口或營收損失的漏洞和弱點。

安全性測試有許多種類型。 其中兩個是滲透測試和合規性測試。

滲透測試

「滲透測試」或「手寫筆測試」是一種安全性測試,用來測試應用程式的不安全區域。 特別是,其會測試攻擊者可以利用的弱點。 獲授權的模擬網路攻擊通常是滲透測試的一部分。

合規性測試

「相容性測試」判斷應用程式是否符合公司內部或外部的一組需求。 例如,醫療保健組織通常需要遵守 HIPAA (1996 年的健康保險流通與責任法案),該法案會提供資料隱私權和安全性條款以保護醫療資訊。

組織可能也有自己的安全性需求。 軟體必須經過測試,以確保其遵循這些需求。 例如,在 Linux 系統上,預設的使用者遮罩必須是 027 或更嚴格的限制。 安全性測試需要證明符合此需求。

方案

在本課程模組的其餘部分,您會設定 Azure DevOps 環境、了解如何使用 Apache JMeter 規劃負載測試,以及在 Azure Pipelines 中執行負載測試。

檢定您的知識

1.

您最近已將 Web 應用程式連線到資料庫。 當頁面載入時,資料庫記錄就會出現。 您想要確認資料庫呼叫不會導致頁面花費一秒以上的時間來載入。 您可以使用哪種非功能測試?

2.

您的網站為當地場館銷售音樂會券。 該場館正在舉辦多天活動,其中包含許多著名的表演者。 您緊張該網站將無法處理流量突然激增的情況。 哪種測試可能有助於放鬆您的心情?

3.

您懷疑您的網站公開了允許駭客存取敏感性資料的弱點。 您可以執行哪種非功能測試來探索此弱點?