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

テストファーストで開発したら最高だった! / Developing With Test-...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

テストファーストで開発したら最高だった! / Developing With Test-First Was Great

Avatar for yazawa_tech

yazawa_tech

June 27, 2019

Other Decks in Technology

Transcript

  1. - 職種: Webアプリケーションエンジニア - 言語: Java | PHP | Go’

    | Python’ | (Ruby) - 仕事: メール配信サービス開発 - マイブーム:
  2. テスト駆動開発とは - 「動作するきれいなコード」をゴールとする (Ron Jeffries) - レッド・グリーン・リファクタリング の順で開発する - レッド:

    動作しない、時にはコンパイルすら通らないテストコードを書く - グリーン: そのテストを迅速に動作させる - リファクタリング: テストを通すために書いたコードの重複を削除する
  3. フロー 1. テストパターンを列挙する - 【契約】新規 | 変更, 【時期】同時 | 未来,

    【金額】UP | DOWN 2. パターンの数だけ「テストメソッド」と「期待値」を書く - $this->assertSame($expected, $actual); 3. テストを実行する - vendor/bin/phpunit → 4. 失敗したテストケースがパスするようにコーディングしていく - この時点では, 汚くてもとにかくテストコードが通るように! 5. リファクタリング - まとめられるコードはまとめる, 変数名の修正や無駄なロジックがあれば削除する Failure
  4. 最高だったところ - やるべきことの「優先順位」が明確になる - まず ”全てのテストがパスすること” - 綺麗なコードや保守性の高いコードは ”最悪二の次” -

    列挙したパターンに対して「絶対的自信」が持てる - 事前に関係者とパターンを使って認識合わせしておくと、なお良し - テストケースが仕様書にもなる - テストメソッドにコメントを付与して条件を記載 - デグレの心配もなし - リファクタリング後 / コミット前 / あらゆるフェーズでテストを実行!