Upgrade to Pro — share decks privately, control downloads, hide ads and more …

テストって楽しい!開発を加速させるテストの魅力 / Testing is Fun! The F...

END
April 26, 2025

テストって楽しい!開発を加速させるテストの魅力 / Testing is Fun! The Fascinating of Testing to Accelerate Development

RUNTEQ内イベント RUNTEQ.rb 登壇資料

END

April 26, 2025
Tweet

More Decks by END

Other Decks in Technology

Transcript

  1. テストカバレッジ def calc(n) if n >= 5 n * 2

    else n end end RSpec.describe 'calc' do context 'nが5の場合' do it '10を返す' do expect(calc(5)).to eq 10 end end context 'nが4の場合' do it '4を返す' do expect(calc(4)).to eq 4 end end end プロダクションコードのテスト網羅率を示す
  2. テストカバレッジ def calc(n) if n >= 5 n * 2

    else n end end RSpec.describe 'calc' do context 'nが5の場合' do it '10を返す' do expect(calc(5)).to eq 10 end end end プロダクションコードのテスト網羅率を示す テストカバレッジを上げて、それぞれのロジックをテストしよう!
  3. テストカバレッジ def calc(n) if n >= 5 n * 2

    else n end end RSpec.describe 'calc' do context 'nが5の場合' do it '数値を返すこと' do expect(calc(5)).to be_a(Integer) end end context 'nが4の場合' do it '数値を返すこと' do expect(calc(4)).to be_a(Integer) end end end 「テストカバレッジが高い = 適切にテストできている」とは限らない
  4. 「悪いテスト」とは RSpec.describe 'fizzbuzz' do it '期待する値を返すこと' do expect(fizzbuzz(1)).to eq(1) expect(fizzbuzz(3)).to

    eq("Fizz") expect(fizzbuzz(5)).to eq("Buzz") expect(fizzbuzz(7)).to eq(7) expect(fizzbuzz(9)).to eq("Fizz") expect(fizzbuzz(30)).to eq("FizzBuzz") end end • itの文章だけを読んでも仕様がわからない • テストケースにまとまりがなく読みづらい
  5. 「良いテスト」とは RSpec.describe 'fizzbuzz' do context 'nが3で割り切れる場合' do it '"Fizz"を返す' do

    expect(fizzbuzz(3)).to eq("Fizz") end end context 'nが5で割り切れる場合' do it '"Buzz"を返す' do expect(fizzbuzz(5)).to eq("Buzz") end end context 'nが3でも5でも割り切れる場合' do it '"FizzBuzz"を返す' do expect(fizzbuzz(15)).to eq("FizzBuzz") end end context 'nが3でも5でも割り切れない場合' do it '数値をそのまま返す' do expect(fizzbuzz(7)).to eq(7) end end end • contextとitの文章を読むだけで仕 様がわかる • contextで適切にテストケースを分 けている
  6. テストの種類 関数やメソッドの単位でテストを行う 単体テスト (Unit Test) 統合テスト (Integration Test) E2Eテスト (End-to-End

    Test) 複数のモジュールの連携した動作を検証する ユーザー視点で開始から終了までの処理フローをテストする Model Spec Request Spec System Spec
  7. 自分のテストの変遷 RUNTEQ在学中 サービス開発時 1社目 2社目 • RSpec編でテストと出会う • Railsの書き方との違いに苦戦 ◦

    よくわからず、サンプルコードを真似するだけ • カリキュラムの自動チェックではこれを使っていたの かという気づき
  8. 自分のテストの変遷 RUNTEQ在学中 サービス開発時 1社目 2社目 • TDD Boot Camp 2020

    Onlineに参加 ◦ 現役エンジニアとペアプロしたいという動機 ◦ t_wadaさんの基調講演(ライブコーディング) ▪ TODOリストを作って小さく実装していく ▪ レッド→グリーン→リファクタリングの流れ
  9. 自分のテストの変遷 RUNTEQ在学中 サービス開発時 1社目 2社目 • 入社時はテストは最低限書いている程度 • 業務で出すバグは肝の冷えが違う ◦

    守るためにテストする意識の高まり • テストカバレッジ向上プロジェクトにより、テストカバ レッジが32%→85%にUP ◦ テストを書くことでバグを見つけたり、リファクタリ ングがしやすくなることを実感