#目次
- はじめに
- テストコードを書くことのメリット
- 参考にしたwebサイト、書籍
- 参考になりそうなwebサイト、書籍
#はじめに
私は、プログラミングをの勉強を初めてまだ2ヶ月の初心者であります。自分のアウトプットも兼ねてまだまだ技術は未熟ではありますが、私以外の初めて間もない方々の役に立つようなことができればと思いまして、投稿をさせていただきます。
今回は、テストコードを何の為に書くのかに関して、自分で勉強している中でわかりにくい部分が多く、まとめてみましたのでご覧になっていただければと思います。不備等ございましたら、恐れ入りますがコメントにてご指摘いただければ幸いでございます。
#テストコードを書くメリット
テストコードを書くメリットとして、今回ご紹介させていただくのは以下の9点です。
- コード変更の際の意図しない不具合や挙動変更の防止
- アプリケーションリリース後の不具合、挙動の確認
- コードの変更がしやすくなる
- Gemのアップデート等による既存の機能の挙動確認
- 各コードの全体像を掴む上で有効
- 各メソッド、アクションに期待された振る舞いを厳密に読み取れる
- 機能自体の仕様の完全性をチェックするいい機会になることがある
- リファクタリングに有効
- コードが動くかどうかの証明になる
###コード変更の際の意図しない不具合や挙動変更の防止
自動テストの導入によって、不具合、挙動の確認を素早く行うことができます。それによって、不具合等に素早く気づけるというメリットもあります。
手動で不具合を確認する方法しかなかった場合、ある程度のコード変更ごとにその都度手動で正しく動作しているかを確認すると、アプリケーションの規模、複雑によっては膨大な手間と時間がかかる場合があります。
###アプリケーションリリース後の不具合、挙動の確認
自動テストの導入によって、不具合、挙動の確認がしやすくなり、開発の段階を選ばずに自動で挙動の確認ができます。新機能の追加の際に、既存機能を含めた機能の動作確認は非常に骨の折れる作業です。その作業を自動で行うことで、新機能の導入にかかる手間が省けます。
###コードの変更がしやすくなる
自動テストの導入によって、新機能追加の際も挙動確認の手間が少なくなるので、コードの変更がしやすくなります。コードの変更による機能の追加を頻繁に行うことに関してユーザーの使いやすさという点から考えると別の問題ですが、開発する上で自動で挙動確認ができることでコード変更のリスクとそのチェックの為のコストが少なくなります。
###Gemのアップデート等による既存の機能の挙動確認
自動テストの導入によって、Gemのアップデートの際も挙動確認の手間が少なくなるので、コードの変更がしやすくなります。
###各コードの全体像を掴む上で有効
自動テストの導入によって、本体コードの変更のみでテストを変更せずにテストを流すことによって、テストの落ち方からシステム全体への影響の全体像が掴みやすくなることがあります。
###各メソッド、アクションに期待された振る舞いを厳密に読み取れる
自動テストの導入によって、各メソッドにどんな振る舞いを期待しているのかを厳密に読み取ることができます。RSpecは仕様書としての面にフォーカスして作られたライブラリとなっています。
###機能自体の仕様の完全生をチェックするいい機会になることがある
自動テストの導入によって、各メソッドにどんな振る舞いを期待しているのかを厳密に読み取る上で仕様に関して俯瞰的に考えるきっかけとなる場合があります。また仕様だけでなく、メソッド名や引数等に関してもわかりやすく、かつ使いやすくなっているかを評価するきっかけともなります。
###リファクタリングに有効
自動テストの導入によって、プロダクトコードを作る際に工夫するきっかけになる場合があります。テストを書く際に多くの振る舞いを期待しているメソッド等はテストコードも複雑になってしまいます。テストコードを書きやすくするということを意識するようになると、各プロダクトコードの書き方を工夫するということ繋がります。
###コードが動くかどうかの証明になる
自動テストの導入によって、自分の書いたコードがしっかりと動くということに関する他の開発者にも明確な証明となります。バグが見つかった際も、バグに関するテストを書いてから修正を行いバグを修正します。それによって他の開発者も安心して次の作業に取り組めます。
#参考にしたWebサイト、書籍
#参考になりそうなwebサイト、書籍