なぜテストのコードを書く必要があるのか
Webアプリケーションを開発するときに、必ず必要になるのがテスト
です。
Railsで開発する場合
はRSpecと言います。
テストはコードは、こちらが動いて欲しいような動作をしてくれるかを
検証するために書きます。
テストをしないとサービスをリリースするときに、
ちゃんと動作せずにリリースすることになり、
クライアントなどに迷惑がかかってしまうのでテストは重要です。
この記事は有益なので、よかったら読んでみてください‼︎
テストの種類
●単体テスト
一つのプログラムを各機能ごとで正常に動くかを確認するのが単体テストです。
modelのテストでよく使います。
⚫︎結合テスト
複数の機能を合わせてテストするのが結合テストです。
インターフェースが正常に動いているかをテストします。
controllerやrequest などのAPI関連のテストです。
⚫︎システムテスト
システム全体をテストするテストです。
その中でも負荷テスト、機能テスト、性能テストがあるみたいです。
テストの流れの順番
1単体テスト
2 結合テスト
3 システムテスト
がテストの流れみたいです。
さらに細かいテストについて
1 まず単体テストはモジュールを検証するテストです。
⚫︎単体テストのブラックボックステストとホワイトボックステスト
単体テストの中にはブラックボックステストとホワイトボックステストがあるみたいです。
・ブラックボックステスト
このテストはシステムの仕様を確認するためのテスト
です。
モジュールの中までは検証しないテストです。
・ホワイトボックステスト
このテストはプログラムが想定通り動くかをテストします。
モジュールの中まで確認して検証をします。
2 次に結合テストはモジュール間のインターフェースを検証するテストです。
⚫︎結合テストのトップダウンテストとボトムアップテスト
結合テストの中にはトップダウンテストとボトムアップテストがあるみたいです。
・トップダウンテスト
このテストは上位モジュールを先にテストし、それから下位モジュールをテストしていきます。
不具合を早期発見できるみたいです。
下位モジュールはテストをやっていない場合があるのでstub
という仮モジュールを作ります。
・ボトムアップテスト
このテストは下位モジュールを先にテストし、それから上位モジュールをテストしていきます。
システム開発と並行してテストができるみたいです。
下位からテストをするので、上位は未テストなのでドライバ
という仮モジュールを作ります。
⚫︎リグレッションテスト
このテストは退行テスト
といい、コードを修正したときに、
修正したことにより今まで動作していたテストに異常がないかを確認するためのテストです。
最後に
自分は未経験の状態で書いているので説得力がないと思うのですが、
実務ではコードレビューはスクールみたいな動作チェックではないみたいです。
RSpec(テスト)で動作チェックするみたいです。
自分の想像ですが、納期があり、コードが何百行もあるため動作チェックを
コードレビューでいちいちやっている時間がないのだと思います。
初学者の方はてすとの学習は絶対にやってから実務に入るべきかと思います。
自動テストが大事な理由
Cherry本で有名な伊藤さんがこちらで言及されています。
各テストの資料
https://qiita.com/koki_73/items/0d6177b3869eb0128d86
https://qiita.com/yumi1003/items/4a5d871da6dda69596eb
https://hnavi.co.jp/knowledge/blog/white-box-test/
https://qiita.com/yosuke_takeuchi/items/915fc3092ee88bed3ff2
参考資料
https://note.com/ruquia7/n/n00ff04fc9129#wt7gL
https://note.com/h_three_22/n/n68cb15b8118c
https://ssaits.jp/promapedia/method/topdown-bottomup.html
https://ssaits.jp/promapedia/method/topdown-bottomup.html