• ja  日本語
    • en English (英語)
Avintonジャパン株式会社Avintonジャパン株式会社Avintonジャパン株式会社Avintonジャパン株式会社
  • ブログ
  • サービス
    • AI・機械学習サービス開発
    • G-Suite / Googleアプリサービス
  • アカデミー
  • 採用情報
  • 求人
  • お問い合わせ
  • 会社情報
    • 会社概要
    • 代表からご挨拶

テスト

  • Python3.6とOpenCVのインストール (Ubuntu18.04LTS)
  • ルーティング
  • 見た目を美しくしてみましょう
  • NAT
  • カート内のアイテム個数を変更
  • EC2からS3へ自動でぽいぽいアップロードするスクリプトの作成
  • カートの設置
  • Ruby on Rails を MySQLでセットアップ
  • レイアウト調整
  • 機械学習入門者向け Support Vector Machine (SVM) に触れてみる
  • AWSアカウントの作成と必ずやるべきセキュリティ対策
  • VLAN
  • テスト
  • 機械学習を用いた画像分類
  • Ruby on Railsによる簡単なウェブアプリケーション
  • 正規表現とパイプ
  • 機械学習エンジニアに必要なスキル
  • Ubuntuの設定
  • PostgreSQL Setup
  • REDIS
  • Amazon EC2 インスタンスの初期設定をしよう
  • Pythonの設定
  • GNS3のセットアップ
  • viエディタ
  • AWSのEC2インスタンスでWordPressブログを公開してみよう
  • Pythonでデータベースを操作する
  • Python2.7とOpenCVのインストール
  • ファイル操作コマンド
  • OpenCVのテストプログラム
  • グループとユーザー
  • Pythonで画像を分類するプログラムを作成する
  • AWS CLIをインストールしてコマンド操作しよう
  • Windows Server 2012 R2 Hyper-V
  • 困った時に使うコマンド
  • PacketTracerのセットアップ
  • 一般グループのユーザーとグループ
  • AWS Route 53を使って独自ドメインのWebページを表示させてみよう
  • プライバシーポリシー
  • VMware ESXi サーバー構築
  • フロントエンド開発のための環境構築
  • フロントエンドのデモンストレーション
  • APIのデモンストレーション
  • CISCO 1800ルータセットアップ
  • ファイル検索コマンド
  • ESXi – Switchの追加とVLAN
  • 質問
  • 仮想化環境のディスク容量を拡張する
  • ユーザー権限とアクセス権
  • テキスト処理
  • ESXi - VyOS
  • データベースへのデータロード
  • 機械学習入門者向け Naive Bayes(単純ベイズ)アルゴリズムに触れてみる
  • CCNA
  • ESXi – 小規模ネットワーク 構築
  • ファイル管理
  • 機械学習入門者向け ChainerRLでブロック崩しの学習
  • AWS CLIを使ってEC2のファイルをS3へアップロードしよう
  • CSV import & export – Node.js, mySQL – 1
  • 機械学習入門者向け ランダムフォレストによる Kaggle Titanic生存者予測
  • CSV import & export – Node.js, mySQL – 2
  • PCからルータ、スイッチへのSSH接続設定
  • 【Python入門】Python Numpy チュートリアル
  • SQL 便利な関数
  • PostgreSQLによるデータ分析
  • 機械学習入門者向け 分類と回帰の違いをプログラムを書いて学ぼう
  • Pythonによるマルチスレッドプログラミング実践
  • Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう
  • DockerとApacheを使ってWebサーバーを構築しよう
  • Ruby on Rails インストール
  • AmazonEC2とVPCでネットワークとサーバーを構築しよう
  • AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説
  • Linuxとは
  • カート機能作成
  • Ruby on Rails Academy
  • ショッピングアプリケーション作成
  • ダイナミックルーティング
  • PostgreSQL – Python – Apache – Bootstrap
Home Academy テスト

Ruby on Rails Academy #5

Test your codes

テストは開発における一つの重要な要素です。変更をする度にテストを実行して確認しておくことで、意図しない動作の早期発見、品質保持につながります。
Railsはこの手法をサポートしており、rails generate something などとした時、目的のものと同時にtestファイルも作られます。
コードを書く際にテストを先に書き、それを満足するコードを書いていく開発手法をTDD(Test Driven Development) といい、作るべきもの・条件の明確化、仕様に関する理解や間違いの早期発見が可能になるなどのメリットがあります。

exercise 1

assert について理解し、簡単なテストを一つ実行してみましょう。

Fixture

テストをする際、ある想定される行動やデータが必要ですが、データベースのデータからその時々にランダムで抽出していては、テストが充分に機能するかわかりません。そのため、テスト用のデータをFixtureとして用意しておくことができます。
Fixtureはモデルごとに用意し、/test/fixtures/以下に modelname.yml のように保存します。

そして

fixt1:
name: fixture1
description: This is the first fixture.
img_url: something.jpg
price: 9.99

のように書くと、テストスクリプトから

@item = items(:fixt1)

のように呼び出すことができます。

exercise 2

同様に3つのFixtureを作り、テスト内でpry(#3で紹介しました) して確認してください。

Test Controller

コントローラーのテストではコントローラーが適切なアクションを呼び出し、そのアクション、すなわちHTTPリクエスト・ステータスやCRUD等の実行結果などを検証します。

例えば、インデックスページを呼び出すテストは

test "get index test" do
get items_url
assert_response :success
end

以上のようになり、

rails test

と実行すると、assertionが得られると思います。

exercise 3

CRUDについてのテストを書き、実行してみましょう。

Test Model

モデルには入力に関するバリデーションをするコードが既にapp/models内に書いてありますが、assertionによって確認ができるメリットがあるので、書いておく価値があります。
モデルのテストでは、バリデーションを通ることと同時に通らないべきデータを作成し、それが通らないことを確認することも必要になります。
例えば、

item = Item.new( name:"Name",
description: "yyy",
price: 20,
img_url: "zzz.rb")

このように書いた時、

assert item.invalid?

のように、invalid? がtrueになる(このitemはデータベースに保存できないと判断される)と期待できます。

exercise 4

・値段が-1, 0, 1 の時それぞれに関してのテストを書いてください。
・重複した名前のアイテムが登録されないことを確認するテストを書いてください。
・表示されたページにサイドバー、フッターが含まれているか確認するテストを書いてください。

前へ
次へ

採用情報

アカデミー

  • Academy
    • Ubuntuの設定
    • 仮想化環境のディスク容量を拡張する
    • PostgreSQL Setup
    • REDIS
    • データベースへのデータロード
    • PostgreSQLによるデータ分析
    • Pythonでデータベースを操作する
    • PostgreSQL – Python – Apache – Bootstrap
    • SQL 便利な関数
    • Pythonの設定
    • Python2.7とOpenCVのインストール
    • Python3.6とOpenCVのインストール (Ubuntu18.04LTS)
    • OpenCVのテストプログラム
    • Pythonで画像を分類するプログラムを作成する
    • Pythonによるマルチスレッドプログラミング実践
    • 機械学習を用いた画像分類
      • 機械学習エンジニアに必要なスキル
      • 機械学習入門者向け ChainerRLでブロック崩しの学習
      • 機械学習入門者向け ランダムフォレストによる Kaggle Titanic生存者予測
      • 機械学習入門者向け Naive Bayes(単純ベイズ)アルゴリズムに触れてみる
      • 機械学習入門者向け 分類と回帰の違いをプログラムを書いて学ぼう
      • 機械学習入門者向け Support Vector Machine (SVM) に触れてみる
    • フロントエンド開発のための環境構築
    • フロントエンドのデモンストレーション
    • APIのデモンストレーション
    • CSV import & export – Node.js, mySQL – 1
    • CSV import & export – Node.js, mySQL – 2
    • Ruby on Rails を MySQLでセットアップ
    • Ruby on Railsによる簡単なウェブアプリケーション
  • Ruby on Rails Academy
    • Ruby on Rails インストール
    • ショッピングアプリケーション作成
    • 見た目を美しくしてみましょう
    • レイアウト調整
    • テスト
    • カート機能作成
    • カートの設置
    • カート内のアイテム個数を変更
  • AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説
    • AWSアカウントの作成と必ずやるべきセキュリティ対策
    • AmazonEC2とVPCでネットワークとサーバーを構築しよう
    • Amazon EC2 インスタンスの初期設定をしよう
    • AWSのEC2インスタンスでWordPressブログを公開してみよう
    • AWS CLIをインストールしてコマンド操作しよう
    • AWS CLIを使ってEC2のファイルをS3へアップロードしよう
    • EC2からS3へ自動でぽいぽいアップロードするスクリプトの作成
    • AWS Route 53を使って独自ドメインのWebページを表示させてみよう
    • Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう
  • VMware ESXi サーバー構築
    • ESXi – Switchの追加とVLAN
    • ESXi - VyOS
    • ESXi – 小規模ネットワーク 構築
  • Windows Server 2012 R2 Hyper-V
  • CCNA
    • PacketTracerのセットアップ
    • GNS3のセットアップ
    • CISCO 1800ルータセットアップ
    • ルーティング
    • PCからルータ、スイッチへのSSH接続設定
    • VLAN
    • ダイナミックルーティング
    • NAT
  • Linuxとは
    • ファイル操作コマンド
    • ファイル検索コマンド
    • 困った時に使うコマンド
    • テキスト処理
    • 正規表現とパイプ
    • viエディタ
    • 一般グループのユーザーとグループ
    • グループとユーザー
    • ユーザー権限とアクセス権
    • ファイル管理
  • 質問
©2018 Avinton. All Rights Reserved. • プライバシーポリシー
  • ブログ
  • サービス
    • AI・機械学習サービス開発
    • G-Suite / Googleアプリサービス
  • アカデミー
  • 採用情報
  • 求人
  • お問い合わせ
  • 会社情報
    • 会社概要
    • 代表からご挨拶
Avintonジャパン株式会社