24ブロ

私が未経験からプログラミングを学んだ物語

テストって?(27日目)

そろそろ[tech expert]のカリキュラムも後半に差し掛かり内容も日に日に複雑になってきてはいますが、なんとかついて行ってるわたしです

現在、本格派アプリケーション実装前のテストの概念を勉強中でございます。

今日学んだことは、

まずテストとは何か

・テストとは簡単にいうと、各機能がちゃんと動くか確認するための作業です

テストを行うことによって本番環境にあげる上での信頼性を確保するということなんですね(゚∀゚)

例えば、あなたが1日1万人が利用しているサービスを管理しているとします。ここで新たな機能を追加しようということで、なんの確認もせずに追加で記述したところ思いもよらない不具合が起きたとします。 一時的に1万人の利用者全員がサービスを利用できなくなってしまいます。 こんなことになったら大変ですよね?

これを防ぐための、テスト機能です。テスト機能を取り入れれば実戦でもおおいに活躍してくれるということです。

テストには大きく3つありまして

単体テスト

モデルの検索系メソッドが正しい値を取得できるか モデルの更新系メソッドが正しくデータベースを更新できるか モデルの更新系メソッドが不正な入力に対して、適切なエラーを発生させるか

◉機能テスト◉

適切なテンプレートが選択されているか インスタンス変数に適切な値が格納されているか 適切にレンダリングされているか 更新系のアクションが正しくデータベースを更新されるか

◉統合テスト◉

ログインして、新しいメンバーを追加して、ログアウトするといった一連の動きをテスト

これらを実践して、本番環境に上げます。

そして、このテストの学習で私が1番興味持ったのはfactory_girlです。

☆factory_girl☆

ダミーのインスタンスを作成することができるGem 各クラスのインスタンスに定めるプロパティを設定しておき、specファイルから各クラスに設定したプロパティメを利用してその通りのインスタンスをつくるfactory_girlを利用すれば、短くかつ簡単な記述で収まる

例)
group = FactoryGirl.build(:group)

これはbuildメソッドと組み合わせて記述したfactory_girl活用例ですが、これでSpecファイルのgroups.rbで生成されたインスタンスを所得することができるということですね!

個人的には確認のためのテスト機能の中にさらに効率化を図れる仕組みがあるところが好きですね。

他にもテストはたくさんの内容が詰まっているので興味あるひとはぜひ調べてみてください!

あと1ヶ月で本番環境まで実装!

がんばろ

おしまい