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

始めようテスト駆動開発

Avatar for pujyo pujyo
November 26, 2016

 始めようテスト駆動開発

部会用発表資料

Avatar for pujyo

pujyo

November 26, 2016

Other Decks in Technology

Transcript

  1. ◦◦駆動開発 1. TDD( テスト駆動開発 ) 2. BDD (振舞い駆動開発) 3. TiDD

    (チケット駆動開発) 4. FDD (ユーザー機能駆動開発) 5. DDD( ドメイン駆動開発 ) 6. UCDD (ユースケース駆動開発) 7. AlcDD (アルコール駆動開発) ← 今日はテスト駆動開発のお話です
  2. 本日のアジェンダ • TDD 概要 • テストの自動化について • CI と TDD

    について 今日話さない事 • テストコードの書き方とか
  3. TDDの方法 Red,Green,Refactor のサイクルで開発を行 う事 • Red( テストが失敗する事 ) • Green(

    テストが成功する事 ) • Refactor( コードのファクファリング )
  4. 方法(詳細) 1. 目標を考え、 TODO リスト等にまとめ、その中から行うものを一つ選択する 2. 選択した目標を示す自動テストコードを書く 3. 自動テストを実行し、2で書いたテストが失敗することを確認する (Red)

    4. 1で選択した目標を達成する為のコードを書く 5. 再度自動テストを実行し、2で書いたテストが成功することを確認する( Green ) 6. 自動テストが成功する状態を保ちながら、リファクタリングを行う (Refactor) 7. 1~6 を繰り返す
  5. テスト自動化について ユニットテストフレームワーク一覧 • JUnit(Java) • PHPUnit(PHP) • PyUnit(Python) • testUnit(Ruby)

    • Selenium(Web) 他にも色々あります https://ja.wikipedia.org/wiki/ ユニットテスト・フレームワーク一覧
  6. CIとTDDとGitの運用について Git の Master ブランチは常にリリースできる状態であるという前提 • 開発者は開発ブランチをリモートにプッシュすることで CI ツールがビルドを実行して 自動テスト、規約チェックを行う

    • CI が設定された自動テスト、規約チェックをパスしたら開発チームはソースコードをレ ビューする • 上記二点が通れば Master ブランチへマージする 自動テストが通っている事、開発チームがレビューを行っている事で品質の保証になる。
  7. TDDのメリット • プログラマは安心感を得られる • 実装時にバグの混入が軽減される • テスト工数とデバックの時間の大幅な短縮化が期待できる • デグレ防げる •

    設計力がつく • テストコードがそのままプロダクトの設計書になる • テストコードを Git と CI で管理していけば設計書は陳腐化しない • プロダクトコードの品質向上につながる