テストとは
ソフトウェアテストのことをいい、Webアプリケーションが想定通りに動作するか確認することをいう
テストケースとは
確認したい項目の単位をテストケースという
例)ログイン機能
・正しいアカウントとパスワードでログインできる
・ログイン後トップページに遷移する
テストレベルとは
・単体テスト
モデルが正しくデータを操作できるか
メソッドが正しい返り値を返すかどうか など
・結合テスト
機能テスト、E2Eテストとも呼ばれ、単体テストの次に行われる
アンケート機能などで質問の回答から送信されるまでの一連の操作を経てコントローラーやモデルなどが正しく動くかどうかの組合せをテストする
・システムテスト
パフォーマンスやセキュリティをテストしたり、本番環境に近い環境で動作させて、Webアプリケーションが想定通りに動作するかをテストする
手動テスト
人がテストケースを見ながら端末を操作して黙示確認をしてテストすること
・メリット
「レイアウトの確認」や「エフェクトの確認」など実際に見て確認しなければ認知できない問題の調査をするのに有効
・デメリット
人の工数を必要とする
人によって解釈が異なるため一様の結果が得られない
ヒューマンエラーが起こる可能性がある
自動テスト
テストケースをプログラムに記述しそのプログラムを実行して正しく動作するかを確認する
・メリット
高速で確実なテストが実行される
・デメリット
テストコードを書く工数が増える
RSpecとは
Railsの開発環境でよく使われるテストのフレームワークで自動テストの支援をする
例えば消費税の計算のメソッドのテストコードの場合には以下のようになる
require 'rails_helper'
describe '消費税の計算' do
context '増税前' do
it "8%課税されること" do
result = calc_tax(100, Time.zone.parse('2019-07-20 00:00:00'))
# 戻り値と108円が一致するか確かめる。
expect(result).to eq(108)
end
end
context '増税後' do
it "10%課税されること" do
result = calc_tax(100, Time.zone.parse('2019-10-01 00:00:00'))
# 戻り値と110円が一致するか確かめる。
expect(result).to eq(110)
end
end
end