ライフログ

ソフトウェアエンジニアをしている人間のライフログです

はじめてのテスト駆動開発(TDD)

エンジニア3年目にして、初体験だったので記録しておきます。

開発したもの

  • WPFC#のデスクトップアプリ用フレームワーク)で作られた業務システムの追加機能
  • CRM的なシステムで、顧客を担当する営業マンを入れ替えるような新機能

自分について

  • 社員数5人以下のベンダーで働いてます
  • 会社では1番若手
  • レガシーからの脱却に憧れがある
  • 最近はテック系のポッドキャストが好き
  • 会社全体のテストやCIに対する認識は、
    • 「テストに時間をかけることで品質が上がる」
    • 「テストを書く??」
    • 「しーあい?」

はじめてのテスト駆動

  • 「データベースも、クライアント側も全く関わらない、プログラム上のみで完結するそこそこ複雑な処理」を追加することになった。かねてから「テストを書くエンジニアになりない」と思っていた。ついにテストを書くときが来た
  • visual studioでテストを書くチュートリアルだけはやったことがある。
    • 足し算関数をテストする定番のやつ
  • テストケースを考える。
  • テストしたいメソッドのスケルトンを作る
  • 入力のListデータを作成する。
  • 出力されるデータをAssertでチェックする(業務のコードでAssertを使うのも初めて)
  • 記念すべきテスト実行
  • テストは通らないという予定調和
  • 通るようにスケルトンのメソッドをどんどん肉付けしていく
  • テスト実行のショートカットコマンドを覚え、雑にテストを実行する
    • いつでも、何回でも実行していい
  • テストケースが1つずつ通過されていく
  • どうしても引っかかるケースがある
  • 治す
  • 他のケースが通らなくなる
  • 戻す
  • 治す
  • 他のケースが通らなくなる
  • 戻す
  • コードでテストを書いたので、何回でもノーコストでやり直せる
  • ついに通った
  • 今までの自分の作業の進め方ならバグを仕込んでいただろう
  • 今までは大きく始めようとばかり考えていた
  • できる、かつ、効果があると感じた小さいスコープだからこそ初めてのテスト駆動開発が行えた
  • ゼロ→イチを成し遂げたことに達成感を感じている
  • 大きな目標はCI/CDの構築、