この記事は、 ギルドワークスアドベントカレンダー の記事です。
自動テストコード、皆さんの中にも書いている方は多いでしょう。
ですが、自動テストコードをダラダラ書いていると、 一体何をテストしているんだろう? というふうになりませんか?
テスト管理的な意味でも、自動テストコードで何をテストしているかわからないというのは非常に厄介です。仮にテストが落ちたとして、 それがどんな意味を持っているテストなのかわからない ということですから。
ヘタをすると、ものすごく頑張って直したけど実質意味がないテストだった!!なんてことにもなりかねません。
そんな時に使える簡単な指針が 3フェーズテスト です。
3フェーズテストとは
3フェーズテストとは、その名の通りテストを3つのフェーズに分ける方法です。
- 環境構築: Given / Arrange
- 実行: When / Act
- 結果の確認: Then / Assert
環境構築 のフェーズでは、まずテストを実行する事前条件を記述します。例えば、データベースに前提条件となる情報を書き込んだり、テスト対象に渡すためのモッククラスを作成したり、と言った動きです。あくまでここまでは準備フェーズで、ここで検証したい動きを書いてはいけません。
実行 のフェーズでは、実際にテストしたい動きを実行します。何らかの関数を実行することもあれば、SeleniumなどのUIテストでは、ボタン押下などのSubmit系の処理が走ることもあるでしょう。ここがテストの根本となります。
結果の確認 フェーズでは、 実行 で実行されたテストの結果が、こちらの糸に沿ったものであるかを確認します。ここでは、テストフレームワークの Assert 関数などを使うことになるでしょう。
このように、3つのフェーズに分けることで、どのようなテストをしているのかが非常に見やすくなります。特に、環境構築フェーズと実行フェーズ、実行フェーズと結果の確認フェーズはごちゃになることが多く混乱の元になるので、このような書き方は非常に有効です。
3フェーズテストのはじめ方
では、3フェーズテストはどのように始めればよいのでしょうか?Spockなど、3フェーズテストを文法として採用しているテストフレームワークもあります。
しかし3フェーズテストはどんなフレームワークでも簡単に使えます。それは、 まずテストの最初にフェーズをコメントで書いてしまう のです。
例えば以下のような感じですね。
あとは、それぞれのフェーズを埋めていくだけです。こんな単純なしかけですが、驚くほどテストが整理されますので、皆さんお使いのテストフレームワークで試してみて下さい。
この記事もどうですか?
-
価値探索とUXデザイン・その2:インタビューで他者の世界を理解する
この記事は、 ギルドワークス アドベントカレンダー の二日目の記事です。 はじめに 前回の記事(重なる理解と重なる世界) で「 二次的理解 」(=他者の理解の仕方を理解する)と「 二重コンテキストモデル 」(ネット利用における文脈と、実生活…
-
タイムラインをつかっていこう!(前半)
この記事は、 ギルドワークス アドベントカレンダー の16日目の記事です。 今回は、ふりかえりの技法「タイムライン」について、お話しをしたいと思います。 おはなしたいコト 私事ですが、前職では開発現場の人たちとの関わり合いを考える中で「アジ…
-
MVP Award 受賞者インタビュー:第2回最優秀賞『Co-LABO MAKER』 〜これぞ仮説検証のなせるワザ!応募してからが面白い「MVP Award」受賞者の声〜
第二回最優秀賞を受賞した『 Co-LABO MAKER 』が「 MVP Award 」に応募してから1年が経ちました。今年はいよいよ開発が始まる段階となり、現在ギルドワークスでは要件定義とマネジメント部分をサポートしています。 「MVP A…