在現今軟體開發流程中,自動化測試扮演著至關重要的角色,有效提升軟體品質並縮短開發週期。本文將逐步說明如何建構一個完善的 Python 自動化測試環境,從環境變數設定、測試框架設計到 Jenkins 持續整合,提供讀者一個全面的實務。首先,我們會說明如何組態環境變數,並介紹 CalculatorWebApp_Pages 和 CalculatorWebApp_TestCases 兩個核心測試框架套件,其中包含基礎頁面類別、計算器頁面類別以及各項測試案例。接著,會說明如何將測試案例根據測試範圍分組,例如 SmokeTest 和 RegressionTest,並列出所需的軟體環境,包含 Python、Pip 等。最後,將會簡述 Jenkins Job 的建立流程,為後續的自動化測試執行奠定基礎。

玄貓:自動化測試環境搭建

在開始自動化測試之前,我們需要搭建一個適合的測試環境。這包括安裝必要的軟體和組態環境變數。

環境變陣列態

首先,我們需要組態環境變數。這可以透過以下步驟完成:

import csv

# 開啟csv檔案
with open('EnvVars.csv', 'r') as csv_file:
    # 建立csv reader
    csv_reader = csv.reader(csv_file, delimiter=',')

    # 讀取csv檔案的內容
    for row in csv_reader:
        # 將環境變數儲存在Utils.EnvVars中
        Utils.EnvVars[row[0]] = row[1]

在上面的程式碼中,我們開啟了名為EnvVars.csv的檔案,然後建立了一個csv reader。接著,我們讀取了csv檔案的內容,並將環境變數儲存在Utils.EnvVars中。

自動化測試框架

我們的自動化測試框架包括兩個包:CalculatorWebApp_PagesCalculatorWebApp_TestCases

CalculatorWebApp_Pages包

這個包包含了基礎頁面類別BasePage和計算器頁面類別CalculatorPage。計算器頁面類別實作了不同的方法,例如DoAddition()DoSubtraction(),用於自動化計算器網頁應用的功能。

CalculatorWebApp_TestCases包

這個包包含了不同測試案例的Python檔案。每個測試案例都實作了測試計算器網頁應用不同功能的方法。例如,test_AdditionFunctionality.py檔案包含了測試加法功能的測試案例。

測試案例分組

我們的測試案例分組成不同的群組,根據測試的範圍。例如,RegressionTestSmokeTest等。

Smoke Testing

Smoke testing是一種測試型別,當測試人員從開發人員那裡接收到新建置時,就會進行這種測試,以檢查建置是否具有最低限度的特性,並且是否有資格進行更嚴格的測試。

Regression Testing

Regression testing是一種測試型別,目的是確認現有的應用功能是否受到開發人員更改的不利影響。

軟體設定

要執行這些測試案例,我們需要安裝以下軟體:

  • Python:需要安裝Python並將其新增到PATH環境變數中。
  • Pip:Pip是Python包管理器,需要將其新增到PATH環境變數中。

Jenkins Job建立

建立Jenkins Job可以幫助我們自動化測試過程。這個主題將在下一章中詳細介紹。

圖表翻譯:

  graph LR
    A[環境變陣列態] --> B[自動化測試框架]
    B --> C[CalculatorWebApp_Pages包]
    C --> D[CalculatorWebApp_TestCases包]
    D --> E[測試案例分組]
    E --> F[Smoke Testing]
    F --> G[Regression Testing]
    G --> H[軟體設定]
    H --> I[Jenkins Job建立]

建立Jenkins工作以管理Web應用程式專案

在開始建立Jenkins工作之前,需要確保一些必要的工具已經安裝在您的系統中。這些工具包括Python、pip、Chrome瀏覽器、Chrome Driver、Selenium WebDriver Python函式庫和Pytest單元測試框架。

所需工具

  • Python: Python是根據其強大的生態系統和豐富的函式庫而被選擇的主要程式語言。
  • pip: pip是Python的包安裝工具,通常與Python一起安裝在Python安裝目錄中的Scripts目錄中。
  • Chrome瀏覽器: Chrome瀏覽器是為了與Selenium WebDriver進行互動而選擇的瀏覽器。
  • Chrome Driver: Chrome Driver是Selenium WebDriver的一個實作,用於將Selenium API呼叫轉換為Chrome瀏覽器的原生UI自動化API。您可以從官方網站下載與您的Chrome瀏覽器版本相相容的Chrome Driver版本。
  • Selenium WebDriver Python函式庫: Selenium WebDriver Python函式庫可以透過pip安裝,命令為pip install selenium
  • Pytest: Pytest是一個單元測試框架,用於執行Selenium測試使用案例並生成測試執行的HTML報告。您可以透過命令pip install pytest安裝Pytest。

執行Selenium Python測試

步驟1:開啟命令提示符並導航到專案目錄

首先,您需要開啟命令提示符,然後使用cd命令導航到您的自動化專案目錄。

步驟2:建立虛擬Python環境並啟動它

您需要安裝virtualenv包,該包幫助建立Python虛擬環境。使用命令pip install virtualenv安裝後,建立並啟動虛擬環境,以便於專案依賴管理和隔離。

# 安裝virtualenv
pip install virtualenv

# 建立虛擬環境
virtualenv myenv

# 啟動虛擬環境(在Windows上)
myenv\Scripts\activate

# 啟動虛擬環境(在Linux或Mac上)
source myenv/bin/activate

步驟3:安裝專案依賴

在虛擬環境啟動後,安裝專案所需的依賴包,包括Selenium和Pytest。

pip install selenium pytest

步驟4:執行Selenium測試

使用Pytest執行您的Selenium測試使用案例。假設您的測試檔名為test_web_application.py,則可以使用以下命令執行測試:

pytest test_web_application.py

這將執行您的Selenium測試並生成一個HTML報告,顯示測試的結果。

Jenkins工作組態

建立Jenkins工作以自動化Web應用程式專案的測試和佈署。您需要組態Jenkins工作以簽出程式碼、安裝依賴、執行測試和佈署應用程式。

  1. 建立新工作: 登入Jenkins,點選“新建項”建立一個新的自由式工作。
  2. 原始碼管理: 組態原始碼管理部分,以便從版本控制系統(如Git)中簽出您的專案程式碼。
  3. 構建: 在構建部分,新增執行Shell或批命令的步驟,以安裝依賴和執行測試。
  4. 佈署: 根據您的需求,組態佈署步驟,以將您的Web應用程式佈署到生產環境。

透過這些步驟,您可以建立一個Jenkins工作,以自動化您的Web應用程式專案的測試和佈署,從而提高開發效率和保證軟體品質。

建立虛擬環境以管理Web應用程式專案

在開始構建Jenkins工作之前,讓我們先了解一下Python虛擬環境的重要性。虛擬環境允許您為每個專案建立一個獨立的Python環境,而不會影響系統上的全域性Python環境。這意味著您可以為每個專案安裝所需的函式庫版本,而不會干擾其他專案。

建立虛擬環境

要建立虛擬環境,您可以使用virtualenv命令。以下是建立名為TestCalculatorWebApplication的虛擬環境的示例:

virtualenv TestCalculatorWebApplication

要啟動此虛擬環境,您可以使用以下命令:

TestCalculatorWebApplication\Scripts\activate

安裝所需的Python包

一旦虛擬環境啟動,您就可以安裝所需的Python包。以下是安裝pytestseleniumpytest-html的示例:

pip install pytest
pip install selenium
pip install pytest-html

請注意,您需要在包含專案程式碼的目錄中執行這些命令。

執行測試

安裝所有必要的包後,您可以使用以下命令執行測試:

pytest --html=TestsResult.html

這個命令將執行所有以test_開頭的Python檔案中的以test開頭的函式,並在當前目錄中生成一個名為TestsResult.html的報告檔案。

內容解密:

  • virtualenv命令用於建立虛擬環境。
  • activate命令用於啟動虛擬環境。
  • pip install命令用於安裝所需的Python包。
  • pytest命令用於執行測試並生成報告。

圖表翻譯:

  graph LR
    A[建立虛擬環境] --> B[啟動虛擬環境]
    B --> C[安裝所需的Python包]
    C --> D[執行測試]
    D --> E[生成報告]

在這個圖表中,我們展示了建立虛擬環境、啟動虛擬環境、安裝所需的Python包、執行測試和生成報告的過程。這個圖表幫助我們瞭解整個過程的邏輯流程。

使用 GitHub 儲存函式倉管理網頁應用程式專案

在之前的章節中,您已經學習瞭如何使用 GitLab 儲存函式庫。現在,我們將探討如何使用 GitHub 儲存函式庫。您在使用 GitLab 儲存函式庫時學習到的 Git 命令和概念也適用於 GitHub。

建立 GitHub 儲存函式庫

如果您尚未擁有 GitHub 帳戶,則需要註冊並建立一個。這是一個簡單的過程,您需要提供所需的使用者名稱、密碼和其他必要資訊。

步驟 1:建立新的儲存函式庫

登入您的 GitHub 帳戶,然後點選頁面左上角的 “+” 號,選擇 “新儲存函式庫” 選項。這將開啟 “建立新儲存函式庫” 頁面。輸入儲存函式庫的名稱,選擇 “私人” 選項以建立私人 GitHub 儲存函式庫。

步驟 2:建立 SSH 金鑰對

您需要使用 ssh-keygen 命令建立 SSH 金鑰對。請參考第 13 章以取得更多關於建立 SSH 金鑰對的詳細資訊。

步驟 3:在 SSH 組態檔中包含私人金鑰檔路徑

您需要在 ~/.ssh/config 檔中包含私人金鑰檔的路徑。這與您之前為 GitLab 新增私人金鑰檔路徑的步驟類別似。

步驟 4:新增 SSH 公金鑰

最後,您需要將 SSH 公金鑰新增到您的 GitHub 帳戶中。

Jenkins 工作管理

在建立 GitHub 儲存函式庫後,您可以開始使用 Jenkins 管理您的網頁應用程式專案。Jenkins 提供了一個強大的平臺,用於自動化您的開發工作流程,包括構建、測試和佈署。

建立新的 Jenkins 工作

要建立新的 Jenkins 工作,您需要登入您的 Jenkins 伺服器,然後點選 “新工作” 按鈕。選擇 “自由式專案” 選項,然後輸入工作的名稱和描述。

設定 GitHub 儲存函式庫

在工作設定中,您需要設定 GitHub 儲存函式庫作為您的程式碼來源。您可以在 “來原始碼管理” 區段中選擇 “Git” 選項,然後輸入您的 GitHub 儲存函式庫 URL 和認證資訊。

執行工作

設定完成後,您可以點選 “儲存” 按鈕以儲存工作設定。然後,您可以點選 “構建” 按鈕以執行工作。Jenkins 將會自動化您的開發工作流程,包括構建、測試和佈署您的網頁應用程式。

  flowchart TD
    A[建立 GitHub 儲存函式庫] --> B[設定 SSH 金鑰對]
    B --> C[在 SSH 組態檔中包含私人金鑰檔路徑]
    C --> D[新增 SSH 公金鑰]
    D --> E[建立新的 Jenkins 工作]
    E --> F[設定 GitHub 儲存函式庫]
    F --> G[執行工作]

內容解密:

上述流程圖展示了建立 GitHub 儲存函式庫和設定 Jenkins 工作的步驟。首先,您需要建立一個新的 GitHub 儲存函式庫,然後設定 SSH 金鑰對以便安全地存取您的儲存函式庫。接下來,您需要在 SSH 組態檔中包含私人金鑰檔路徑,以便 Jenkins 可以存取您的儲存函式庫。最後,您需要新增 SSH 公金鑰以完成設定。

圖表翻譯:

此圖表展示了建立 GitHub 儲存函式庫和設定 Jenkins 工作的流程。從左到右,圖表展示了建立新的 GitHub 儲存函式庫、設定 SSH 金鑰對、在 SSH 組態檔中包含私人金鑰檔路徑、新增 SSH 公金鑰、建立新的 Jenkins 工作、設定 GitHub 儲存函式庫和執行工作的步驟。每個步驟都代表了一個重要的流程,用於自動化您的開發工作流程。

自動化測試已成為軟體開發生命週期中不可或缺的一環。本文涵蓋了從環境組態、測試框架設計到版本控制和持續整合的完整流程,展現了建構一個穩健且高效的自動化測試系統的關鍵要素。透過Python、Selenium、pytest等工具的整合,結合Jenkins的自動化構建能力,可以大幅提升測試效率並降低人為錯誤。然而,自動化測試並非銀彈,測試案例的設計和維護仍需投入相當的精力,才能確保測試的有效性和完整性。技術團隊應著重於測試案例的設計和程式碼的可維護性,並持續最佳化測試流程,才能最大化自動化測試的價值。展望未來,隨著AI技術的發展,預見自動化測試將朝向更智慧化的方向演進,例如自動生成測試案例和預測潛在的程式碼缺陷。密切關注這些新興使用案例,它們很可能重新定義軟體測試的未來格局。玄貓認為,及早匯入自動化測試並持續最佳化,將是提升軟體品質和開發效率的關鍵策略。