Robot Frameworkで自動受け入れテスト

ギルドワークスさんとパートナーとして一緒にお仕事させていただいています、木目沢(@pilgrim_reds)と申します。

Robot Frameworkの紹介

Robot Frameworkは受け入れテスト、受け入れテスト駆動開発のための、python製の自動テストフレームワークです。

海外では利用されているようですが、日本ではなじみの薄いツールのようなので紹介したいと思います。

特徴は、キーワード駆動です。
「キーワード」と「キーワードの実際の動作」を定義し、テストケースでそのキーワードを組み合わせてテストを実行させます。

また、予めキーワードが実装されたライブラリを使用することができます。
例えば、Selenium2 Web Driverのラッパーである、Selenium2Libraryを使用することでRobot FrameworkでSelenium2 Web Driverを使用できます。

OperatingSystemLibraryを使用するとOSやファイルの操作ができますし、DatabaseLibraryを使用するとデータベースの操作ができます。

他にも、AndroidやiOSのテストツールAppiumのラッパーであるAppiumLibraryや、SSHが利用できるSSHLibrayなど多様なライブラリがあります。詳しくは、ドキュメントを御覧ください。

Robot Frameworkの例

早速、Robot FrameworkとSelenium2Libraryを使用した例をみてみましょう。
インストールはpythonがインストールされていれば、

pip install robotframework-selenium2library

でインストール完了です。

以下はテストファイルです。

*** Settings ***
Documentation  RobotFramework,Selenium2Libraryテスト
Library  Selenium2Library

*** Variables ***
${browser}  firefox
${login_url}  https://◯◯.com/login

*** Test Cases ***

ログイン画面を開く
  ログイン画面を開く

ログインできない
  ユーザーを入力する  user
  パスワードを入力する  no-password
  ログインボタンを押す
  ログインエラーが出力される

ログインできる
  ユーザーを入力する  user
  パスワードを入力する  password
  ログインボタンを押す
  ログイン成功の画面が表示される

[Teardown] Close Browser

*** Keywords ***

ログイン画面を開く
  Open Browser  ${login_url}  ${browser}
  Title Should Be  トップ

ユーザーを入力する  [Arguments]  ${user}
  Input Text  username  ${user}

パスワードを入力する  Arguments]  ${password}
  Input Text  password  ${password}

ログインボタンを押す
  Click Button  login

ログインエラーが出力される
  Wait Until Page Contains  ログイン
  Page Should Contain  ログインIDまたはパスワードに誤りがあります。

ログイン成功の画面が表示される
  Wait Until Page Contains  ログイン成功
  Page Should Contain  ログイン成功

これは普通のテキストファイルです。拡張子も何でも大丈夫です。
上のようなファイルを用意して、

pybot ファイルのパス

で実行できます。ファイルのパスではなく、フォルダを指定するとフォルダ内のテストを全て実行します。

*** Settings ***は使用するライブラリを定義したり、テスト結果(HTMLファイルで出力されます)に表示するドキュメントを定義したりします。

*** Variables ***でテストケースやキーワードで使用できる変数を定義できます。

*** Test Cases ***でテストケースを定義します。タブ分開けて(または空白を2文字以上開けて)定義したテストケースが実行されるキーワードになります。

*** Keywords ***でテストケースで記述したキーワードの定義とその実装を記述します。「Input Text」や「Click Button」などはSelenium2Libraryで定義されているキーワードです。Selenium2Libraryのキーワードは、Selenium2Libraryのキーワード一覧ドキュメントを御覧ください。他のライブラリを使う際もそれぞれ同様のドキュメントが用意されています。
また、キーワードは引数が取れます。キーワードと引数はタブ分開けて(または空白を2文字以上開けて)定義します。

他、注目すべき点を挙げておきます。

  • 日本語が使えます。ファイル名も日本語でOKです。
  • Selenium2Library はfirefox driverを標準で備えています。ただ、Chromeで動かしたい場合は別途ChromeDriverが必要です。
  • 上記は1つのファイルで全部記述していますが、ファイルは分けることが可能です。その場合、*** Settings *** にて参照するファイルを「Resource ファイルのpath」と記述することで読み込むことが可能です。
    Library定義や変数定義用のファイル、各画面ごとのテストケース用ファイル、各画面ごとのキーワード定義ファイル等ファイルを分割するとよいでしょう。

Robot Frameworkのここが便利

  • python製ですが、インストール以外でpython を意識するところはありません。
  • 文法がない。キーワードから必要なものを引用するだけなので学習コストが低いです。
  • ファイル名もテストケースも日本語で自由に書けるのでエンドユーザー向けにも使えるのではないでしょうか。

いかがでしょうか。とにかく、簡単にWebの自動テストが書けてしまうツールですので、ぜひ、試してみてください。

また、長い文字列のテストデータを簡単に作成する方法や、ローカル・ステージング等環境別に実行する方法、JenkinsやCircleCIなどCIツールで実行する方法などのTIPSをまた機会がありましたら紹介したいと思います。

この記事を読んでギルドワークスに興味を持たれた方はお気軽に【ギルドワークスに依頼する】をご覧の上、お問合せください

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中