fv17の日記 - Coding Every Day

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

なぜRSpecを書くのか、なぜテストを書くのか

RubyRails界隈の伝道師、伊藤さんの発表スライドが公開されていましたので共有。

伊藤さんのスライド

speakerdeck.com

スライドを見ての感想

最近はCircle CI等で常に自動テストして品質を保つことは、どこの現場でも行われているだろうと思います。そのため、普段あまりなぜテストを書くのか?と自問自答することはありませんが、スライドを読み立ち止まって考えてみました。私はテストコードは下記の大きなメリットを持っていると日々感じています。

仕様書となる

RSpec等のテストコードは、どういう条件下で、どう動くべきか、という形式で書かれています。そのため、初めてJoinするプロジェクトにおいて各機能の大雑把な仕様を把握したい場合、RSpecを読むことでキャッチアップすると捗ります。伊藤さんの仰る「7.説明書としての役割」がまさにそれです。

スライドでも書かれていますが、gemの使い方もRSpecから学ぶことが多々あります。メジャーなgemでもすべての機能が詳細にドキュメントに書かれているわけではなく、RSpecを見て初めて使い方が分かるという場面に何度も遭遇しています。逆にRSpecで詳細に記載されていて、完全に理解した!と叫ぶことも。

リファクタリングや修正時の不具合検出

スクラムなどでアジャイル開発を行うと、作る→リリース→修正するというサイクルを非常に早く回すことになります。この修正/改良した際に、既存部分に影響が出ていないか、いわゆるリグレッションテストとしての大きな役割が自動テストにはあると考えています。

これからもテストコードは書き続けたい

上記2つがあることにより、初めて触る機能についても、仕様をしっかり理解して修正や機能強化に取りかかれるし、リリース前にリグレッションテストが自動で行われることにより既存機能が正しく動いていると安心してリリースすることができます。がっつりしたテスト駆動開発をしていないため、新規機能については開発後にテストを書くことが多いですが、工数削減などと言い訳せずにテストコードはしっかり書いていきたい、いくべきと自戒を。