笘居夕葉は文系プログラマ

メモしておきたいことを投稿しています

アジャイル開発とTDDとは [JaSST'19 Tokaiから学んだこと②] #3

f:id:yuha_tomai:20200428060505j:plain


アジャイル開発

 ・アジャイル開発とは、短い期間(1,2週間程度)を最初に決めて、

  その間につくれる範囲で、機能を実装していく開発のこと

 ・実装した機能をすぐにお客様に確認してもらえるため、認識のずれを修正しやすい

 ・アジャイル(agile)は、「機敏な」「俊敏な」という意味

 

TDD
 ・TDDとは、テスト駆動開発(test-driven development)のこと

 ・アジャイル開発と合わせて行われることが多い

 ・最初にテストコードをつくり、製造を始める
  (テストコードは、実装があっていれば〇、間違いなら×と出力されるイメージ)

 ・Red→Green→Refactaring(リファクタリング)というサイクルを繰り返して開発をする
   Red: ×、Green: 〇、Refactaring: 複雑になったソースを綺麗にする作業

 ・TDDの良いところ①:リファクタリングすることで、保守性が格段に上がる

 ・TDDの良いところ②:テストコードという遺産を残すことができる

 ・TDDの良いところ③:テストの自動化が可能になる


アジャイル開発とTDDの課題

 ①アジャイル開発の定義のぶれ

   ...  現場にあったアジャイル開発を行う必要がある一方で、

    アジャイル開発を騙って、仕様書を残さない等

    ブラックボックス化した開発を行ってしまう可能性がある

 ②テストコードの量が膨大になってしまうこと

   ... 時にはソースよりもテストコードが多くなってしまう

 ③品質をどうやって測るか

   ... Red→Green→Refactaringのサイクルを繰り返し続けていると品質迷子になってしまう

    (V字型ウォーターフォールのように、各テスト段階でバグ数を集計できないため)

 ④アジャイル開発とTDDの習得
   ... ウォーターフォール式の開発が主流である場合、

    経験者が少なく、その現場に合った方法も確立されていないため、習得が難しい

 ⑤アジャイル開発とTDDの導入
   ... 従来型の開発を支持する人の説得が難しい

    (特に責任が重い上層になればなる程、保守的にならざる得ないため)

 

開催日: 2019/10/04(金)
イベント名: ソフトウェアテストシンポジウム 2019東海(JaSST'19 Tokai)
講演名: 【セッション7】「情報交換会」