GROUPエンジニアブログです。>2012年08月03日14:42カテゴリPHPprogrammingBehatでケータイサイトの受け入れテストはじめまして、株式会社Flesselの田中と申します。私は長いことケータイサイトを作る仕事に関わってきました。縮小傾向にあるフィーチャーフォンですが、まだまだ現役です。このエントリーではPHPのストーリーテストツールBehatを利用して、ケータイサイトの受け入れテストを行う方法をご紹介します。インストール今回は対象となるプロジェクトにcomposerを使ってBehatを組み込む方法をとります。composerをインストールします。php※CentOS環境だと証明書の関係で動かないことがあります。次にcomposerの設定ファイルであるcomposer.jsonをプロジェクト直下に作成します。今回はBehatともにMinkというブラウザテストの抽象化ライブラリを使うので、これも一緒に設定します。"bin/"}}composer.jsonが用意できたら、インストールコマンドを叩いて依存するライブラリをインストールします。installこれでvendorディレクトリの中にbehatがインストールされ、binディレクトリにbehatコマンドができます。(※2012年8月3日現在、依存関係が解決できずにインストールが失敗するようです)プロジェクトの初期化behatがインストールされたのでbehatが利用するファイルを初期化します。--initこれでプロジェクト直下に下記のファイルが作成されます。features/bootstrap/FeatureContext.phpこのファイルにテストコードを記述することになります。フィーチャー定義を用意するフィーチャーとはアプリケーションが持つ個別の機能のことです。Behatでは各フィーチャーごとにテストシナリオが書かれたファイルを用意します。このファイルは拡張子をfeatureとしてfeaturesディレクトリに配置します。各ファイルは自然言語に近い記述で書きます。今回は次の定義をsearch.featureとして作成しました。ボタンをクリックするならば"ご指定の検索条件に該当する商品はありませんでした。表示されていること日本語で書かれていてとてもわかりやすいと思います。各シナリオの「前提」からはじまる行以降はステップと呼ばれ、テストはこのステップごとに実行されていきます。ステップ中のダブルウォーテーションで囲われた文字列が変数として扱われます。ここで一度テストを実行してみます。黄色くなっているところがテストが未実装なステップです。下の方にテストを実装する際のスニペットも表示されています。通常はこのスニペットをコピペしてテストを実装していく流れになります。MinkContextを利用する単純なブラウザをつかったテストであれば、今回一緒にインストールしたMinkExtensionが提供するMinkContextを用いると自分でステップを実装せずにテストすることができます。-diコマンドで参照できます。https://github.com/Behat/MinkExtension/blob/master/i18n/ja.xliffで確認できます。便利なMinkContextを利用するにはFeatureContext.phpに次の修正を加えます。context.また、次の内容のbehat.ymlをプロジェクトルートに作成します。~base_urlにはテスト時にアクセスするサーバーのベースURLを設定します。ここでテストを実行すると次のようになります。「au端末で接続する」というステップ以外は青になりテスト実装が加わったことがわかります。独自のステップを実装する「au端末で接続する」はケータイサイト特有のステップですから当然提供されていません。今回はau端末での接続をau端末のUser-AgentとEz番号をHTTPヘッダにもつという条件として定義します。これのステップの実装は次のようになります。今回ブラウザの実装として利用しているGoutteがsetRequestHeaderを通したユーザーエージェントの書き変えに対応していないためこのような形になっています。実行するそれではすべてのステップの実装ができたのでbehatコマンドを叩いてテストを実行してみます。簡単ですね!まとめBehatでは自然言語に近いフィーチャー定義を利用するので、エンジニア以外でもテストの概要を把握することができます。MinkExtensionと組み合わせることで容易にブラウザテストをできるのは大変魅力的です。皆さんもぜひ使ってみてください。