ブログ

ryuzeeによるブログ記事。不定期更新
アジャイル開発に取り組むチーム向けのコーチングや、技術顧問、認定スクラムマスター研修などの各種トレーニングを提供しています。ぜひお気軽にご相談ください(初回相談無料)

Robot Framework + Selenium2Libraryで簡単受け入れテスト

  Robot Frameworkは受け入れテストや受け入れテスト駆動開発(ATDD)に使えるテスティングフレームワーク。 http://code.google.com/p/robotframework/で開発が進められている。 プレインテキストやHTML形式でテストケースを記述できること、pythonまたはjavaによってテストライブラリを作って拡張できることが特徴だ。

ここではRobot FrameworkとSelenium2(WebDriver)を組み合わせて、受け入れテストを自動化する方法について説明する。 WebDriverを単独で使ってWebアプリケーションのエンドツーエンドテストを作る場合、どうしても画面ができてからしかテストケースが作れないというのが大きな問題だ。そのため例えばPHPであればBeHatと組み合わせしたりするのだが、今回の方法は更に簡単だ。

例えば、アジャイルな開発の場合であれば、スプリントプランニングが終了して実装するストーリーが決まった時点でまずテキストやHTML等で受入れ試験のシナリオを先に作成する。あとはスプリント期間中にそのテストシナリオを通るように機能を実装していけばよいことになる。このように進めれば製品が成長し続けても常に自動化された受け入れテストによってガードされており回帰テストを人手でやり続けて時間を使い切ってしまうこともなくなる。

インストール

ここではRobotFrameworkとSelenium2Libraryを利用する。

インストールは以下のように行う。またRobot Frameworkが導入されていない場合でもSelenium2Libraryと依存関係があるので自動でインストールされ、同様にWebDriverもインストールされる。なお、実行にはpythonが必要である。

git clone https://github.com/rtomac/robotframework-selenium2library.git
cd robotframework-selenium2library
sudo python setup.py install

デモを動かしてみる

上記で入手したSelenium2Libraryにはデモアプリケーションが含まれている。

python demo/rundemo.py demo/login_tests/

これを動かすとブラウザが自動で起動してテストが実行される。テスト結果は 以下のように出力される。

コンソール

またHTML形式やXML形式でもテスト結果が出力される。XML形式であればJenkins等との連携も可能だ。

テストケースの作り方

ではGoogleを検索してごにょごにょするテストケースを作ってみよう。まずテストケースを保存する適当なディレクトリを用意する。

テストケース

Google検索テスト.txt という名前で以下のファイルを作る。 なおRobot Frameworkでは日本語のファイル名やテストの記述に日本語が普通に使える。 Settingsのブロックでは、Resourceという記述を使って、共通で使う定数を定義したり、テストの際に使われるキーワードに対する実際のアクション(以下でいうと、Googleのページを開く、とか、検索ボタンをクリックする、という処理の 中身を記述)を読み込む。

*** Settings ***

Documentation  Googleを検索してごにょごにょするサンプルです_ 

Resource  環境設定.txt
Resource  Google検索操作の実装.txt

*** Test Cases ***

Googleのサイトを開いてSeleniumを検索する 
    Googleのページを開く
    検索用語を入力する  selenium
    検索ボタンをクリックする

検索でヒットしたSeleniumのサイトを開く 
    検索結果のSeleniumのリンクをクリックする
    Seleniumのサイトが開くはず

    [Teardown]  Close Browser

上記でインデントされずに書かれている内容が、いわゆるテストのタイトルや説明であり、インデントされて複数記述されているのが、実際のテスト手順になる。上述の通り、実際のテスト手順について定義をしなければならない。 ここでは「Google検索動作の実装.txt」という名前で同じディレクトリに用意した。

*** Settings ***
Documentation  テストの実装をしてるよ 

*** Variables *** 
${google_url}  http://www.google.co.jp/

*** Keywords *** 

Googleのページを開く
    Open Browser  ${google_url}  ${browser}
    Maximize Browser Window
    Set Selenium Speed  ${sel_speed}
    Title Should Be  Google

検索用語を入力する  [Arguments]  ${search}
    Input Text  q  ${search}

検索ボタンをクリックする
    Click Button  btnG

検索結果のSeleniumのリンクをクリックする
    Click Link  http://seleniumhq.org/

Seleniumのサイトが開くはず
    Title Should Be  Selenium - Web Browser Automation

ここでは、テストケース内で使われている操作に対応する実際の操作を記述する。登場するInputやClick等はSelenium2Libraryで用意されているキーワードだ。キーワードの一覧はこちらを参照のこと。

さらに、WebDriverで利用するブラウザ等の共通定義を行うファイルを用意する。ここでは環境設定.txtという名前で用意した。

*** Settings ***
Documentation  共通設定の定義とSelenium2Libraryの読み込み 
Library  Selenium2Library

*** Variables *** 
${browser}  firefox
${sel_speed}  1

ここまでできれば準備完了だ。

作ったテストケースを実行する

実行するテストケースを指定する場合は以下のようにする

pybot Google検索テスト.txt

もちろんディレクトリ内にある全てのテストケースを実行することも可能だ。

pybot tests/ 

HTMLによるテストケースの作成

上記の例ではプレインテキスト形式でテストを記述したが、HTML形式でもテストを書くことができる。HTMLのテストケースの中でResource指定して、プレインテキストで書いたものを再利用することも可能だ。 上記の検索のテストをHTML化したものが以下だ。 テーブルの構造とキーワードが所定のものになっていればよく、自由度が高い。例えば設計資料や仕様等も記載して、設計書自身を動作するテストのようにすることもできるだろう。

  • スクラム実践者が知るべき97のこと
  • 著者/訳者:Gunther Verheyen / 吉羽龍太郎 原田騎郎 永瀬美穂
  • 出版社:オライリージャパン(2021-03-23)
  • 定価:¥ 2,640
  • スクラムはアジャイル開発のフレームワークですが、その実装は組織やチームのレベルに応じてさまざまです。本書はスクラムの実践において、さまざまな課題に対処してきた実践者が自らの経験や考え方を語るエッセイ集です。日本語書き下ろしコラムを追加で10本収録
  • プロダクトマネジメント ―ビルドトラップを避け顧客に価値を届ける
  • 著者/訳者:Melissa Perri / 吉羽龍太郎
  • 出版社:オライリージャパン(2020-10-26)
  • 定価:¥ 2,640
  • プロダクト開発を作った機能の数やベロシティなどのアウトプットで計測すると、ビルドトラップと呼ばれる失敗に繋がります。本書ではいかにしてビルドトラップを避けて顧客に価値を届けるかを解説しています。
  • SCRUM BOOT CAMP THE BOOK 【増補改訂版】
  • 著者/訳者:西村直人 永瀬美穂 吉羽龍太郎
  • 出版社:翔泳社(2020-05-20)
  • 定価:¥ 2,640
  • スクラム初心者に向けて基本的な考え方の解説から始まり、プロジェクトでの実際の進め方やよく起こる問題への対応法まで幅広く解説。マンガと文章のセットでスクラムを短期間で理解できます。スクラムの概要を正しく理解したい人、もう一度おさらいしたい人にオススメ。
  • みんなでアジャイル ―変化に対応できる顧客中心組織のつくりかた
  • 著者/訳者:Matt LeMay / 吉羽龍太郎、永瀬美穂、原田騎郎、有野雅士
  • 出版社:オライリージャパン(2020-3-19)
  • 定価:¥ 2,640
  • アジャイルで本当の意味での成果を出すには、開発チームだけでアジャイルに取り組むのではなく、組織全体がアジャイルになる必要があります。本書にはどうやってそれを実現するかのヒントが満載です
  • レガシーコードからの脱却 ―ソフトウェアの寿命を延ばし価値を高める9つのプラクティス
  • 著者/訳者:David Scott Bernstein / 吉羽龍太郎、永瀬美穂、原田騎郎、有野雅士
  • 出版社:オライリージャパン( 2019-9-18 )
  • 定価:¥ 3,132
  • レガシーコードになってから慌てるのではなく、日々レガシーコードを作らないようにするにはどうするか。その観点で、主にエクストリームプログラミングに由来する9つのプラクティスとその背後にある原則をわかりやすく説明しています。
  • Effective DevOps ―4本柱による持続可能な組織文化の育て方
  • 著者/訳者:Jennifer Davis、Ryn Daniels / 吉羽 龍太郎、長尾高弘
  • 出版社:オライリージャパン( 2018-3-24 )
  • 定価:¥ 3,888
  • 主にDevOpsの文化的な事柄に着目し、異なるゴールを持つチームが親和性を高め、矛盾する目標のバランスを取りながら最大限の力を発揮する方法を解説します
  • ジョイ・インク 役職も部署もない全員主役のマネジメント
  • 著者/訳者:リチャード・シェリダン / 原田騎郎, 安井力, 吉羽龍太郎, 永瀬美穂, 川口恭伸
  • 出版社:翔泳社( 2016-12-20 )
  • 定価:¥ 1,944
  • 米国で何度も働きやすい職場として表彰を受けているメンローの創業者かつCEOであるリチャード・シェリダン氏が、職場に喜びをもたらす知恵や経営手法、より良い製品の作り方などを惜しみなく紹介しています
  • アジャイルコーチの道具箱 – 見える化の実例集
  • 著者/訳者:Jimmy Janlén / 原田騎郎, 吉羽龍太郎, 川口恭伸, 高江洲睦, 佐藤竜也
  • 出版社:Leanpub( 2016-04-12 )
  • 定価:$14.99
  • この本は、チームの協調とコミュニケーションを改善したり、行動を変えるための見える化の実例を集めたものです。96個(+2)の見える化の方法をそれぞれ1ページでイラストとともに解説しています。アジャイル開発かどうかに関係なくすぐに使えるカタログ集です
  • カンバン仕事術 ―チームではじめる見える化と改善
  • 著者/訳者:原田騎郎 安井力 吉羽龍太郎 角征典 高木正弘
  • 出版社:オライリージャパン( 2016-03-25 )
  • 定価:¥ 2,138
  • チームの仕事や課題を見える化する手法「カンバン」について、その導入から実践までを図とともにわかりやすく解説した書籍。カンバンの原則などの入門的な事柄から、サービスクラス、プロセスの改善など、一歩進んだ応用的な話題までを網羅的に解説します。
  • Software in 30 Days スクラムによるアジャイルな組織変革“成功"ガイド
  • 著者/訳者:Ken Schwaber、Jeff Sutherland著、角征典、吉羽龍太郎、原田騎郎、川口恭伸訳
  • 出版社:アスキー・メディアワークス( 2013-03-08 )
  • 定価:¥ 1,680
  • スクラムの父であるジェフ・サザーランドとケン・シュエイバーによる著者の日本語版。ビジネス層、マネジメント層向けにソフトウェア開発プロセス変革の必要性やアジャイル型開発プロセスの優位性について説明
  • How to Change the World 〜チェンジ・マネジメント3.0〜
  • 著者/訳者:Jurgen Appelo, 前川哲次(翻訳), 川口恭伸(翻訳), 吉羽龍太郎(翻訳)
  • 出版社:達人出版会
  • 定価:500円
  • どうすれば自分たちの組織を変えられるだろう?それには、組織に変革を起こすチェンジ・マネジメントを学習することだ。アジャイルな組織でのマネージャーの役割を説いた『Management 3.0』の著者がコンパクトにまとめた変化のためのガイドブック