kazumalab tech log

流行りとリラックマと嵐が大好きです。技術的ログ。

テストについて

E2Eテスト

今日ちょっとE2Eテストについて説明してみてって上司から言われ説明してみたら0点いただきました。Wow...ちゃんと勉強しよ。
インテグレーションテストが間違ってたっぽい。
E2Eのテストとインテグレーションテストがごちゃっとしていて、それじゃおかしくなるとの指摘。なんとなくだけど久しぶりに詰められた気がする。
詰められるの嫌だけど、だめなところをしっかり痛いところをついて指摘してくれるのはすごくありがたい。

「3年目でこれはやばくないか?」

まじでそれ。やればやるほどコンピュータの世界知ることが多い。
一つづつ着実に身に着けて行かないと上辺だけでやってたら死ぬと最近思っていた矢先だったので、いい機会だったと思う。

  • Unitテストはクラス単体のテスト
  • Integrationテストはクラス同士の結合テスト
  • E2Eはユーザーケースを自動化したテスト

じゃあRailsのModelの単体テストはUnitテストなのか?という議題に関して、概念的にはNoらしい。
しかし事実上はYesとなっていて、そもそもRailsのModelはActiveRecordを継承しているので、そもそもUnitテストじゃなくなる。
でもそれをUnitテストってことにしちゃおう、みたいな流れ。

Unitテストをガチガチにやるなら別クラスのものはMockとStubを使ってテストする。
Railsだと厳しい感じある。

Controllerテストはどうか、あれはIntegrationの役割をしているが、render_viewsを時折利用していて、Viewと密になっているケースがある。
まぁなにわともあれ、Unitテスト、Integrationテスト、そしてE2Eのテストを書こうね、そしてそれぞれが持つ役割をちゃんと理解しておこうねという話。

RailsだとE2EはFeatureSpecか、SystemSpec。
最近ChromeDriverが使えるようになって前よりも安定してきている気がしている。

最後に、もう一度ちゃんと初めての自動テストを読むことにしてPDFを購入して、1章を読み終えたところだ。

www.oreilly.co.jp