Contents
自動テストが導入されるパターン
私の見た限りですが、自動テストが導入されるパターンは次の2つです。
1.最初から導入することが決まっている
新規開発時に上層部が最初から決めている場合、開発と同時に自動テストコードを書いてい来ます。
負債コードがない分、導入はしやすいため、やるなら初回リリース時に自動テストを書いておく方が良いです。
ただし、新規開発時は自動テストコードを書く工数のデメリットが目立ちやすいです。
また、上層部で決まっているから導入する場合、「決まってるからとりあえず書こう」というだけの理由だけで、開発チームの中で目的や用法を明確にしてない場合は、自動テストが負債となりやすいです。
2.デグレ発生が繰り返されて、対応策として導入される
リリース時に自動テストを導入しない場合、相応の理由(メリット)が必要になります。
で、多くの場合は自動テストをしないがために、デグレが頻繁に発生し(または、たまたま短期間に多く発生し)、何か対策を講じなければという流れで、自動テストが候補に挙がることですが。
テストの分類とメリット・デメリット
手動テスト
自動テスト
なぜ、自動テストが必要か?
最後に、自動テストの必要性を再度論じたいと思います。
自動テストは2つの点から必要です。
自動テストはデグレを防ぐために必要
平たくいうと、自動テストが必要なのは「デグレを防ぐため」です。
デグレ発生すると、開発部門長始め、チームリーダー(MG)もコーディング担当者した人も嫌な気持ちになるのは経験済みでしょう。
コーディングした人からすれば、
・そんな影響出ると思ってなかったし
・俺が作った機能じゃないし
・そこまで仕様詳しくないし
・(テストめんどくさいし)
・(俺のプロダクトじゃないし)
という言い訳をしたくなります。
また、リーダーから再発防止策を求められて、モチベーションも下がります。
開発部門長は、他部門の部門長から責められるし、次に着手したかった案件にデグレ対応をしている間、人員を割り当てることができなくなり、コストが発生します。
チームリーダー(MG)は再発防止策を開発部門長に求められますが、結論としては、デグレを起こさないために、
・テストのエビデンスを提出する
・テストケースもレビューしてもらう
・デグレ防止の観点のテストケースも必ず入れるようにする
このように、テストを分厚くするしかありません。
これは非常に「めんどくさい」事態ですね。
再発防止策としては「しっかりテストする」しかないんです。
でも「しっかりテストする」がめちゃくちゃ面倒臭いんです。
そして、手動テストをやってる限り、デグレは起きるものです
自動テストは仕様変更に素早く対応するために必要
ウォーターフォール開発で、仕様をしっかり固めてレビューしてから実装する。
そういうプロセスをきっちりやっていれば、仕様変更による手戻りは発生しにくいかもしれません。
しかし、Web系の開発チームでよくあるのは、
・○○することになった
・○○の導入が決まった
というときに、概要だけ設計して、あとは実装しながら考えましょう!
そんな開発の進め方です。
すると、実装していくうちに、
・やっぱりこうします
・こういうケースも想定しないとダメだね
・このカラムもいるよね
というのが必ず出てきます。
いわゆる、仕様変更ですね。
仕様変更が発生したということは、当然、コードにも変更が発生します。
コードが変わったら、テストする必要がありますね。
もし手動テストをやっていた場合は、テストやり直しです。(本来は)
まだテストしてなかったらダメージはありませんが、テスト済みならショックです。
自動テストが書けていれば、ちょこっとテストコードを修正して、実行し直せばOKです。
このように、自動テストはエンジニア自身を助けてくれるものです。
エンジニアだけでなく、MG、部門長もハッピーになる仕組みです。
ただ、テストコードを書くのは時間コストが必要なので、効果的に取り入れるために、本サイトの内容をしっかり押さえてから取り組んでください。
自動テストは俊敏に(アジャイル)に脅威と機会に対応するために必要
開発チームがプロダクトを脅威(リスク)や機会(ビジネスアイデア)に俊敏に対応するために、自動テストは必要です。
デグレを防いでエンジニア含めて開発チームがハッピーになるのはそうなのですが、変化を可能とする能力を備えると言うことも非常に大切です。
自動テストをしっかり組んでいることで、脅威に対して素早く修正を行えるし、機会に対して素早くビジネスアイデアをプロダクトに取り入れることができるようになります。
それによってプロダクトの価値は向上します。
参考文献
テスト自動化の8原則‥自動テストの一般的なメリットや注意事項は押さえておきましょう。
https://sites.google.com/site/testautomationresearch/test_automation_principle
レガシーコードからの脱却…アジャイル宣言の発起人の1人による著作。テスト自動化含めて、コードを変更しやすく保つ9つの秘訣が学べる。