ナガモト の blog

Full Cycle Developerを目指すエンジニアが有用そうな技術記事や、ポエムのようなよしなしごとを投稿するブログです。

RSpecでテストを書くときの参考資料神7

RSpecをどう書くかは著名な方々が既に語り尽くしている印象です。そのため非常に参考となる7つの資料、通称神7*1の紹介をします。

私はこれまでレビュやエンジニアインターンに教える際に何度となく神7のお世話になりました。そん経験を踏まえてどの資料にどのようなことが記述されているか、どんな人が読むべきかを併記します。

神7

神7はざっくり次の3つのタイプに分けることができます。

  • RSpecやテストについて全体感を掴めるもの
  • 特有の記法や書き方を扱うもの
  • より良く書くための戦略や概念の理解に役立つもの

RSpecやテストについて全体感を掴めるもの

RSpec入門者どころか、テスト入門者は学ぶことが非常に多いです。そのため、情報がまとまっている資料をおすすめします。全体感を掴んでから細部の理解に努めると捗ります。

Read Everyday Rails - RSpecによるRailsテスト入門

leanpub.com

特徴

  • RSpecでテストを書くために必要なことがすべて書いてある*2
  • 構成が非常にわかりやすく、0から勉強する人は写経しながらページを順番通りにめくるのが良い
  • 内容が充実してる分本のボリュームも大きい

この資料を読んだほうがいい人

順序立てて、体系的に学びたい人、ソフトウェアのテスト・RSpecに関してそもそも未経験の人。

本の内容量に圧倒されたり、心が折れないようにだけ注意が必要です。*3この本を最後まで理解できれば、非常にレベルが高い人になれます。いきなりそのレベルに到達しようとせず、必要と余裕に合わせて読み進めましょう。

RSpecえかきうた

techracho.bpsinc.jp

特徴

  • RSpecでテストコードを0から書き上げる流れを説明している
  • テストコードがどんなパーツで構成されているか、それをどう設計するか概要を掴みやすい
  • さっと読み、参考にしやすい文量

この資料を読んだほうがいい人

新しくテストを書くぞとなった時にどこから手をつけたら良いかわからない人。describe・context・itの意味するところ、それらの並べ方が良くわからない人。

RSpecの書き順を紹介する記事です。1例なので異なる書き順の人もいるかもしれませんが、お手本として真似するのにおすすめな王道の書き順だと考えていいです。自分のポリシー・書き方が定まっていない人は真似してみましょう。

特有の記法や書き方を扱うもの

使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」 - Qiita

qiita.com

特徴

  • Qiitaにて無料で入門記事として適度なボリュームで分けて公開されている
  • 前述のEveryday Rails(略)の日本語訳者(jnchito - Qiita)が書いているため、文章として非常にわかりやすい

この資料を読んだほうがいい人

テストに関しては知っているが、RSpecの書き方はほぼ知らない人。Everyday Rails(略)を買うか悩んでいる人。

RSpecのシンプルな記法から、実務で書く際に役立つTipsやリンクなども親切に挿入されています。「この人の文章読みやすいな!」と感じたらぜひ前述のEveryday Rails(略)を購入しましょう。

Better Specs { rspec guidelines with ruby }

www.betterspecs.org

特徴

  • RSpecのスタイルガイド*4
  • BADとGOODの例を併記して説明してある

この資料を読んだほうがいい人

RSpecの書き方はほぼ知らない人。レビュで小さめの指摘が多い人。「この書き方ならMiniTestでよくない?」「RSpecらしく書いて欲しい」と言われる人。

多言語に翻訳されたページがあるので、留学生インターンなど日本語ネイティブではない駆け出しのエンジニアにもおすすめしやすいです。

GitHub - willnet/rspec-style-guide: 可読性の高いテストコードを書くためのお作法集

github.com

特徴

  • RSpecのスタイルガイド
  • 特に可読性が高いテストを書くことに重点をおく
  • 技術顧問を生業とするwillnetさんが多くの現場を通して得た経験に基づいている

この資料を読んだほうがいい人

RSpecの書き方はほぼ知らない人。レビュで「RSpecらしく書いて欲しい」と言われる人。読みにくいテストコードに悩んでいる人。

良くない例・それが何故良くないか・どう書けば改善されるかがそれぞれのトピックで説明されているため、強い納得感が得られます。レビュア側としても指摘をする際にこのページのリンクを渡すと説明がしやすいです。各現場毎にRSpecの書き方はあると思いますが、このガイドをベースにするといいと思います。

Clean Test Code Revised - Speaker Deck

特徴

  • 読みやすいテストコードのための決定版となるスライド
  • 可読性を下げるものとそれを排除するプラクティスと具体例が示される

この資料を読んだほうがいい人

読みにくいテストコードに悩んでいる人。動くだけのテストコードから読みやすいテストコードへと次の段階を目指す人。細部のよい書き方はわかるが、全体の理想を掴みきれていない人。

なんで読みにくいんだろうに対する回答となる資料です。こちらの記事を合わせて閲覧するとより深い理解を得られるでしょう。

RSpecしぐさ

www.slideshare.net

特徴

  • BDD・TDDを踏まえたRSpecとは何かを知ることができる
  • spec等の語彙について深く理解できる

この資料を読んだほうがいい人

MiniTestととの違いが気になっている人。Specをテストという意味だと思ってる人。自然言語としてテスト仕様書としても読みやすいRSpecを書きたい人。

RSpecに関連することを概念的な部分から説明している資料です。この資料を読めば、テストを設計を意味をより大切に感じられると思います。

最後に

他にもおすすめな資料があればぜひ教えてください。

*1:今名付けました

*2:RSpecの書き方・テストとは何か・何のためにテストをするのか・テストはどのような流れで取り組むか等

*3:テストを書きたいだけなのに・・・という感想を聞いたことがある

*4:ベターなコーディング規約のようなもの