アジャイル開発とTDDとは [JaSST'19 Tokaiから学んだこと②] #3
アジャイル開発
・アジャイル開発とは、短い期間(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】「情報交換会」