前編の記事は以下です。
Kururu - テスト管理ツールをなぜ作ったのか【前編】 - cassette
いきなり結論から書いてしまうと、今までのテストの実施方法がアジャイルに適していないと考えているからだ。
アジャイルでのテストについて
アジャイルについて全てを書こうとすると長くなるので、一部テスト管理と関係ある箇所のみ書いていく。
アジャイルソフトウェア開発宣言の一部引用
包括的なドキュメントよりも動くソフトウェアを
そのまま受け取るとキレイなドキュメントを書くよりも、実際のコードを書いていきましょうということになる。これをテストの観点から見ると重厚なテスト計画を立て実行するよりもTDDを実施してテストコードで担保をしようということになる。
しかし、ここで大きく誤解が生じているのがTDDをちゃんとしているから手動テストは必要がないという主張である。実はTDDで担保できるのはチェッキングのみであるためテスティングは担保出来ないのである。
[チェッキング]
仕様を満たしているか
[テスティング]
仕様以外のテスト。品質を満たしているか
ユーザーにとって使いやすいかどうか
分かりやすくいうと負荷テスト等はテスティングのカテゴリに入る。仕様を満たしているが動作がめちゃくちゃ遅いというのはサービスとして価値を提供していないのである。
私の経験的にもテストコードで全て担保が出来たわけではなく、最終的に手動テストすることでいくつもの致命的なバグを発見出来た経緯が多い。もちろん、E2Eテストでも担保できるがデメリットもあるので、やはり手動での確認は必要と考えている。
テスト管理の必要性
手動でのテストの確認は必要と書いたが、そのままだと作業者の主観による属人性の高いテストとなってしまう。そのため一定の品質とスピードを保つためにテスト管理ツールの導入が必要だと感じている。 よくあるのが多くの組織ではExcel・スプレッドシート・ドキュメントツールを駆使してテストケースを網羅的に書いているところが多い。しかし、以上のツールは大きく2つの問題点がある
1. バグのチケット管理が煩雑
テストケースとバグ報告が増えるにしたがって管理が煩雑になる。例えば、だれがどのバグの修正をしていて・どのような状態であるのかが分かりづらい。そのため、結局誰か一人がテスト管理する必要が生じてしまう。大手企業であれば問題ないかもしれないが人数の少ないスタートアップであれば貴重な戦力を消費してしまう。
2. 再利用性がうすい
今までExcelなどのツールでテストケースを作ってきたが再利用したことがない。理由は色々あるが再利用するためのテストケースの抽出に手間がかかる。そして抽出したテストケースをまた管理する手間が生じる。
結果、再利用しないため時間が経つと再度テストケースの作成すること多くあった。
以上のツールはバグを網羅的に見つけるのが得意であっても、チケットの管理・ドキュメントとしての機能が薄い。
テストでスピード感が失われる
以上のようにテスト管理をしっかり行わないと以下のような状況に陥る。
- バグを混入したままリリースされ、障害が発生する
- テスト管理・コミュニケーションのコストが増大する
- 毎回テストケースを作るコストが発生する
- テストケースのクオリティに差が出てしまう
- etc
つまり、何が言いたいかと言うとテストの失敗でスピード感が失われ、結果的に素早いリリースが達成できなくなることである。スクラムやCIによる自動化などを実施していてもテストが遅すぎると、まさに底が空いたバケツである。折角自動化が進んでいるのにリリーススピードは一向に速くならないジレンマに陥る。
反対にテストの分野というのは実はかなり経験則が活かせる箇所であり、上手く運用すればプロジェクトの期間を1週間ぐらい圧縮できるのである。*1
テストケースの再利用性がない
個人としてはこの点がかなり重要だと考えている。自分は今まで多くのサービスの開発に携わってきたが技術的に大変だったという機会はむしろ少なく、ドキュメントがほぼ存在せず仕様の把握が難しかったケースが多い。そもそも一度もこのサービスはしっかりとドキュメントが揃っていたという経験がない。
エンジニアが社内・社外問わず非常に流動的である現在において仕様の把握はものすごいコストがかかっている。どんなに優秀なエンジニアが入社しても仕様の把握が覚束なければ価値を提供することは難しいのだ。
その中でテストケースを再利用出来るのであれば、完璧ではないにしろ仕様書として利用できるのである。かつて知人のエンジニアは「仕様書が無くても、テストがきちんとあれば仕様を把握することが出来る」と言っていたがその通りだと思う。
Kururu - テスト管理ツールを何故作ったのか
以上のように仕事経験の中で本当に必要だと感じてテスト管理ツールを作っている。そして、テスト管理ツールを有効に使うことでもっと開発を楽にしたいのが動機だ。
が、ここまできてやっぱり思ったのはそもそも自分はこの業界にサービスを作りにわざわざ入ってきたのに真剣に自分のためのサービス作りに取り組んだことがなかったなと。
30歳になってどんどん自分ための時間が少なくなる中でこのままじゃ後悔しそうだなと考えたのも動機です。
今は他の仕事を断って全てサービス作りに費やしているので、またリニューアルしたらブログ書きます。
*1:QAエンジニアという専門のエンジニアがいるぐらいなので、大きいプロジェクトほど圧縮は大きい