アラフォ〜プログラミング未経験会社員のエンジニアへの道

神奈川県横浜市在住。アラフォーで小学生の息子あり。プログラミング勉強中でHTML/CSS, Ruby, Ruby on Rails, Javascriptなど。 いずれAI関連サービスを開発したい。

[アラフォプログラミング未経験]Rubyのテストコード「RSpec」の概念について学ぶ!

Rubyのテストコード「RSpec」を勉強しました。



結構、四苦八苦しながらカリキュラムを進めてみましたが、

あれ、思ったよりわかるし、重要だなぁと実感。


むしろ機能を実装する際にテストしながら、

コード書いていった方が効率的なんだなと思いました。



わかりやすく書いているサイトを貼りつつ、復習をしていきます。


qiita.com



qiita.com



目次

Railsにおけるテストについて

Ruby on Railsにおいては、基本的にはモデルとコントローラのファイルに対してテストコードを作成します。

その際はRSpecという独自の言語を利用します。

RSpec

RSpecは、Rubyを元に作成されたテストに特化した言語です。

rspec-rails」というGemをインストールすると、RSpecを利用できます。



テストを書くメリット

基本的に、ひとつのプロダクションコードに対してはひとつのテストコードが必要です。

例えばRuby on Railsにおいては、モデルクラスやコントローラークラスひとつにつきひとつのテストコードを書かなければいけません。

これは面倒に感じるかもしれませんが、

それを補いなお余るほどのメリットも存在します。

それは、主に以下の3つです。

1.仕様漏れを減らすことができる

テストをするにあたっては、対象のメソッドがどのような目的で作成されどんな挙動をしなければいけないのかということを全て洗い出します。

結果的に仕様を良く確認することになり、バグを引き起こす仕様漏れを少なくすることができます。

2.リファクタリングや機能追加をしやすくなる

リファクタリングとは、コードをより綺麗なかたちに修正する作業のことです。

一度テストを通過してしまえば、最終的な結果を維持しリファクタリングをするのが簡単になります。

また、新たな機能を追加する際も、従来の箇所は間違いなく動いていることを確認できているので、

その結果を崩さないようにするだけで安全に実装することができます。

3.楽しくコードを書ける

テストを通過するという快適な体験を重ねることで、コードを書く作業が楽しくなります。

注意力が必要で神経をすり減らしやすいプログラミングという作業において、楽しくコードが書ける、

ということは非常に重要です。


何気に大事なことが書かれているので、囲ってみました。



テストの種類について

テストは、主に単体テストと統合テストという2種類に分類されます。

単体テストとは、単体で動くプログラムが正常に動作するか確かめるテストのことです。

統合テストとは、複数のプログラムが組み合わさった機能が正常に動作するか確かめるテストのことです。

単体テストとは

ひとつのプログラムのまとまりに関して、それ単体が正常に動くか確かめるテストのことを単体テストと呼びます。

例えばRailsであれば、モデルクラスひとつ、コントローラークラスひとつにつきそれぞれテストコードを書きます。

統合テストとは

複数のプログラムが連動して行われる処理が意図した通りに行われるかを確かめるテストのことを統合テストと呼びます。

例えばRailsであれば、ユーザーの新規登録における一連の処理をテストすることが考えられます。

ユーザーの新規登録用画面から値を入力、送信して、データベースにレコードが追加されるまでの一連の流れをシミュレートするテストコードを書きます。


概念的なことをおさらいしたので、

次はRSpecの構文についてまとめていきます。