はじめに
Robot Frameworkは、Pythonで開発された強力なテスト自動化フレームワークです。以下に、Robot Frameworkの基本から応用までを15章に分けて解説します。
1. Robot Frameworkの概要
Robot Frameworkは、受け入れテストや受け入れテスト駆動開発(ATDD)のためのジェネリックなテスト自動化フレームワークです。キーワード駆動型のテスト手法を採用しており、読みやすく保守しやすいテストを作成できます[1]。
主な特徴:
- 高度にモジュール化された構造
- 豊富な標準ライブラリと外部ライブラリ
- 詳細なレポート生成機能
- プラットフォーム非依存
2. インストールと環境設定
Robot Frameworkは、Pythonのパッケージマネージャーpipを使って簡単にインストールできます。
pip install robotframework
また、Seleniumを使用したWebテストを行う場合は、以下のライブラリも必要です。
pip install robotframework-seleniumlibrary
3. 最初のテストケース
Robot Frameworkのテストケースは、簡単な表形式で記述します。以下は基本的なテストケースの例です。
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
ブラウザを開いてGoogleで検索する
Open Browser https://www.google.com chrome
Input Text name=q Robot Framework
Submit Form
Page Should Contain Robot Framework
Close Browser
4. キーワードの使用
Robot Frameworkでは、キーワードを使用してテストステップを記述します。キーワードは標準ライブラリやカスタムライブラリから提供されます[1]。
*** Test Cases ***
変数を使用したテスト
${result}= Set Variable Hello, Robot Framework!
Should Be Equal ${result} Hello, Robot Framework!
5. 変数の使用
変数を使用することで、テストケースをより柔軟に記述できます。
*** Variables ***
${BROWSER} chrome
${URL} https://www.example.com
*** Test Cases ***
変数を使用したWebテスト
Open Browser ${URL} ${BROWSER}
Title Should Be Example Domain
Close Browser
6. セットアップとティアダウン
テストケースの前後に共通の処理を実行するには、セットアップとティアダウンを使用します。
*** Settings ***
Test Setup 開始処理
Test Teardown 終了処理
*** Keywords ***
開始処理
Log テストを開始します
終了処理
Log テストを終了します
*** Test Cases ***
セットアップとティアダウンのテスト
Log このテストケースの本体です
7. タグの使用
タグを使用することで、テストケースをグループ化したり、特定のテストのみを実行したりできます。
*** Settings ***
Force Tags 回帰テスト
*** Test Cases ***
タグ付きテスト1
[Tags] 重要
Log これは重要なテストです
タグ付きテスト2
[Tags] 低優先度
Log これは低優先度のテストです
8. データ駆動テスト
テストデータを外部ファイルから読み込んで、同じテストケースを異なるデータで繰り返し実行できます。
*** Settings ***
Library DataDriver file=test_data.csv encoding=utf-8
*** Test Cases ***
データ駆動テスト
[Template] ログイン検証
${username} ${password} ${expected_result}
*** Keywords ***
ログイン検証
[Arguments] ${username} ${password} ${expected_result}
# ここにログイン処理を記述
Log ユーザー名: ${username}, パスワード: ${password}
Should Be Equal ${expected_result} 成功
9. カスタムライブラリの作成
Pythonを使用して、独自のキーワードを含むカスタムライブラリを作成できます。
# my_custom_library.py
class MyCustomLibrary:
def my_custom_keyword(self, arg1, arg2):
return f"{arg1} - {arg2}"
# テストケースでの使用
*** Settings ***
Library MyCustomLibrary
*** Test Cases ***
カスタムキーワードのテスト
${result}= My Custom Keyword Hello World
Should Be Equal ${result} Hello - World
10. リソースファイルの使用
共通のキーワードや変数を別ファイルに定義し、複数のテストスイートで再利用できます。
# common.robot
*** Variables ***
${COMMON_VAR} 共通の値
*** Keywords ***
共通のキーワード
Log これは共通のキーワードです
# test.robot
*** Settings ***
Resource common.robot
*** Test Cases ***
リソースファイルを使用したテスト
共通のキーワード
Log ${COMMON_VAR}
11. ログとレポート
Robot Frameworkは、詳細なログとレポートを自動生成します。これらは、テストの結果を分析する上で非常に有用です。
robot --outputdir results tests/
このコマンドを実行すると、results
ディレクトリにlog.html
、report.html
、output.xml
が生成されます。
12. 条件付き実行
特定の条件下でのみテストを実行したい場合、条件付き実行を使用できます。
*** Test Cases ***
条件付きテスト
${condition}= Set Variable ${TRUE}
Run Keyword If ${condition} Log 条件が真の場合に実行
... ELSE Log 条件が偽の場合に実行
13. 並列実行
大規模なテストスイートの実行時間を短縮するために、並列実行を活用できます。
pabot --processes 4 tests/
このコマンドは、4つのプロセスを使用してテストを並列実行します。
14. APIテスト
Robot Frameworkは、APIテストにも適しています。RequestsLibraryを使用して、RESTful APIのテストを簡単に記述できます。
*** Settings ***
Library RequestsLibrary
Library Collections
*** Test Cases ***
APIテスト
Create Session jsonplaceholder https://jsonplaceholder.typicode.com
${response}= GET On Session jsonplaceholder /posts/1
Status Should Be 200 ${response}
Dictionary Should Contain Key ${response.json()} title
15. ベストプラクティス
Robot Frameworkを効果的に使用するためのベストプラクティスをいくつか紹介します。
- テストケースを小さく保つ
- 意味のある名前を使用する
- キーワードを適切に抽象化する
- バージョン管理システムを使用する
- CIツールと統合する
以上が、Robot Frameworkの基本から応用までの15章にわたる解説です。このフレームワークを使いこなすことで、効率的で保守性の高いテスト自動化が実現できます。