DebTab

  • ホーム
  • DevTabとは
  • 記事一覧
    • きたえる
    • かえる
    • つくる
    • みちびく
    • たばねる
    • つたえる
かんたんログイン
Githubでログイン
Githubアカウントでかんたんにログインして、DevTabをもっと便利に使おう。

DebTab成長しつづけるデベロッパーのための情報タブロイド

DebTab

ログイン

検索 検索

3フェーズテストで自動テストコードを見やすくしよう

写真前川 博志

きたえる

つくる

  • #TDD

2017.12.11

ポイントポイント

0

この記事は、ギルドワークスアドベントカレンダーの記事です。

自動テストコード、皆さんの中にも書いている方は多いでしょう。

ですが、自動テストコードをダラダラ書いていると、 一体何をテストしているんだろう? というふうになりませんか?

テスト管理的な意味でも、自動テストコードで何をテストしているかわからないというのは非常に厄介です。 仮にテストが落ちたとして、 それがどんな意味を持っているテストなのかわからない ということですから。

ヘタをすると、ものすごく頑張って直したけど実質意味がないテストだった!!なんてことにもなりかねません。

そんな時に使える簡単な指針が 3フェーズテスト です。

3フェーズテストとは

3フェーズテストとは、その名の通りテストを3つのフェーズに分ける方法です。

  • 環境構築: Given / Arrange
  • 実行: When / Act
  • 結果の確認: Then / Assert


環境構築 のフェーズでは、まずテストを実行する事前条件を記述します。例えば、データベースに前提条件となる情報を書き込んだり、テスト対象に渡すためのモッククラスを作成したり、と言った動きです。あくまでここまでは準備フェーズで、ここで検証したい動きを書いてはいけません。

実行 のフェーズでは、実際にテストしたい動きを実行します。何らかの関数を実行することもあれば、SeleniumなどのUIテストでは、ボタン押下などのSubmit系の処理が走ることもあるでしょう。 ここがテストの根本となります。

結果の確認 フェーズでは、 実行 で実行されたテストの結果が、こちらの糸に沿ったものであるかを確認します。ここでは、テストフレームワークの Assert 関数などを使うことになるでしょう。

このように、3つのフェーズに分けることで、どのようなテストをしているのかが非常に見やすくなります。 特に、環境構築フェーズと実行フェーズ、実行フェーズと結果の確認フェーズはごちゃになることが多く混乱の元になるので、このような書き方は非常に有効です。

3フェーズテストのはじめ方

では、3フェーズテストはどのように始めればよいのでしょうか? Spockなど、3フェーズテストを文法として採用しているテストフレームワークもあります。

  • Spock Primer: Blocks


しかし3フェーズテストはどんなフレームワークでも簡単に使えます。それは、 まずテストの最初にフェーズをコメントで書いてしまう のです。

例えば以下のような感じですね。

あとは、それぞれのフェーズを埋めていくだけです。 こんな単純なしかけですが、驚くほどテストが整理されますので、皆さんお使いのテストフレームワークで試してみて下さい。

共感した

ポイントポイント

0

取り消す

この記事に共感したら、何度でも押してこの記事のポイントをみんなでアップしよう。

自分の感想を残す

この感想は、サイトに公開されることはなく自分にしか見えません。自分の考えのログを残すために感じたことを登録し、のこしておきましょう。あとで振り返ったときに、あのとき自分はこう考えていたのかということを知ることにより、あなたの成長へとつながります。

Githubでログイン

Githubアカウントでかんたんにログインして、DevTabをもっと便利に使おう。

  • ひとつ前の記事

    AWSクレデンシャルの漏洩を未然に防ぐgit-secrets

  • ひとつ後の記事

    AWS Cloud9 をつかってみる

この記事もどうですか?

ブラウザ操作のキャプチャができる Puppeteer recorder を試してみる

Chromeの自動操作ツール Puppeteer みなさん、Puppeteer はご存知でしょうか?…

つくる

2018.08.24

ポイント
2

チームに新しい仲間がやってきた時に行う3つのこと

状況 チームに新しい仲間がやってくる。 こうなってほしい できるだけ早くチームに溶け込んでほしい。 …

たばねる

きたえる

2018.08.28

ポイント
5

なかなか身につけるのが難しい開発の習慣

世の中には色々な開発に関するプラクティスがあります。特にアジャイル開発の文脈では、テスト駆動開発やペ…

きたえる

2017.03.01

ポイント
0

シェア
  • Twitter
  • このエントリーをはてなブックマークに追加
  • Google Plus

ログインして
ブックマーク

  • Twitter
  • このエントリーをはてなブックマークに追加
  • Google Plus
  • ログイン
LINE@

新しい記事が出たときや、注目の記事などを
定期的にLINEでお知らせしていきます

LINEで登録

LINEイメージ

DevTab
成長しつづけるデベロッパーのための情報タブロイド

株式会社ギルドワークス
https://guildworks.jp
  • プライバシーポリシー
  • お問い合わせ

Copyright © GuildWorks Inc. All Rights Reserved.

ページのトップへ