テスト

不具合の少ない高品質なコードにしよう

概要

テストとはアプリケーションが想定どおりに動くことを確認するプロセスです。「期待する動き」をまとめたテストケースをもとに、「実際の動き」を確認します。

テストの範囲や目的は開発フェーズによって異なります。通常は大きく3つの段階(単体テスト結合テストシステムテスト)に分けて行います。単体テストはメソッド単位、結合テストは機能単位と、小さな粒度からテストを始めます。システムテストでは実際にユーザが利用することを想定して、アプリケーション全体で動作を確認します。

単体テストはアプリケーションの最小単位でテストを行うため、テスト全体の土台とも言えます。このタイミングでバグを発見して修正できるようになると、アプリケーションの品質が大きく向上します。テストは一度行うだけでなく、コードの変更に合わせて継続して繰り返し行うことが重要です。

テストには2つの実施方法があります。1つは人の手で確認する手動テストです。もう1つは自動化ツールなどにテストケースを設定して行う自動テストです。近年、ますますアプリケーションの規模が大きくなり、変更も頻繁に発生するようになってきています。そのため、各フェーズのテストには自動化ツールやフレームワークが積極的に活用されてきています。

テスト

学ぶ目的

チーム開発では、異なる開発者のコードが影響してバグが生まれたり、コードの変更によって予期せぬ影響が発生したりすることがあります。

テストを継続的に実施すると、そのような不具合をすぐに見つけられるようになります。既存のコードに変更を加えるような開発も安心して行えるようになるので、開発のスピードが向上することでしょう。

また、適切なテストケースの作成方法を学ぶと、不具合を抑えるために開発で注意することを意識できようになります。

アプリケーションの開発現場では機能追加や変更のたびにテストを行います。自動テストについて是非学んでおきましょう。

ここから学ぼう

ここではRubyのテスティングフレームワークであるRSpecを使った単体テストについて学んでいきましょう。RSpecはブログや記事などによる解説やチュートリアルが豊富にあります。まずは、Railsを含めずにRubyに絞って単体テストを学び、自動テストのイメージを掴みましょう。

  • Rubyで単体テストを作ってみよう

    RSpecをインストールしよう

    describe / it / expect を使ってみよう

    複数のテストを作ってみよう

    describeでテストをグループ化してみよう

    contextで条件別にグループ化してみよう

    beforeで共通の前準備を作ってみよう

    失敗したテストを修正してみよう

    FizzBuzzプログラムのテストを書いてみよう

  • テスト駆動開発の基本を理解しよう

    仕様のTODOリストを作ってみよう

    テストコードを書いて失敗を確認しよう

    仮実装を追加してテストを成功にしよう

    リファクタリングを行って重複を除去しよう

    フィボナッチ数列をテスト駆動開発で作ってみよう

おすすめ教材

  1. テスト駆動開発 | Ohmsha

    テスト駆動開発を学ぶことで自動テストの書き方だけではなく、設計やリファクタリングがテストとどのような関係であるかイメージできるようになります。写経しながら読み進めるのがオススメです。

    テスト駆動開発 | Ohmsha
    テスト駆動開発 | Ohmsha

    本書は、自分たちのコードに自信を持って開発を続けたいプログラマ、チームリーダー向けに、テスト駆動開発(TDD)の実践方法を解説した“Test-Driven Development By Example”の日本語版です。テスト駆動開発の考案者であるKent Beck自身によって書かれた原典を、日本におけるテスト駆動開発の第一人者である和田卓人氏が訳しました。 テスト駆動開発とは単にテスト自動化を行うことではなく、ユニットテストとリファクタリングを両輪とした小さいサイクルを回すことで不確実性を制御し、不断の設計進化を可能にする手法であることを、実例を通して学ぶことができます。 試し読みをする -->

    www.ohmsha.co.jp

今日学ぶことをシェアしよう