FORTRANから始まって41年(7) [プログラマー現役続行]
テスト駆動開発の実践
開発対象のソフトウェアのテストを自動テストで行うテスト駆動開発の経験については、過去にまとめて書いています(「テスト駆動開発の経験(6)」や「不具合が発生した場合、必ず再現テストを書く」)。「テスト駆動開発」という言葉が登場したのが、41年間の経験の後半に入ってからです。そして、本格的にテスト駆動開発を行うようになったのが、2003年からです。それだけ、ソフトウェアを手作業でテストする時代を長く経験したことになります。そして、2003年から経験したテスト駆動開発は、単に自動でテストするというだけでなく、テスト対象がマルチプロセス構成で、各プロセスがマルチスレッドで構成されているという非常に複雑なシステムでした。
テスト駆動開発を経験・実践することは、簡単なようでも、実は所属している開発組織によっては困難な場合があります。テスト駆動開発を実践していない開発組織では、すべてのテストが手動による目視確認になります。そして、そのような開発組織では、開発しているソフトウェアは製品やサービスのソフトウェアだけのこと多いです。そして、手作業でテストをするため、開発全体のコストがそれなりに高かったりします。
このような開発組織では、追加の自動テストコードを書いて、それらが動作するような何らかのフレームワークを作成したり、既存のレガシーコードを自動テスト可能になるように修正したりすることは、「余分な追加の開発コスト」とみなされて、却下されたりします。このような開発組織では、テスト駆動開発を実践して経験を積むことは困難な場合が多いです。テスト駆動開発を導入することをマネージャや開発部門のトップ(場合によっては年配のエンジニア)に対して説得しようとして、納得されずに徒労に終わってしまうことも多いのではないでしょうか。
私個人は、私自身が部門長という権限を持っている立場の時にテスト駆動開発を推進し、実際に自分で経験できました。しかし、若い人達がテスト駆動開発の経験を積むための近道は、「きちんとテスト駆動開発をしている開発組織で働くこと」です。
しかし、テスト駆動開発といっても、単に単体テストを書いているだけでインテグレーションテストは書かれていないとか、何らかのモックライブラリを使いすぎて意味のないホワイトボックステストだらけになっているような組織があったりもしますので、注意が必要です。
また、「マルチスレッドプログラミングにおける重要な4要件」で述べているような要件が求められるテスト駆動開発を行っている開発組織を見つけてそこで働くことは非常に難しいと思います。なぜなら、そこまで必要なソフトウェア開発を行っている組織が少ないと思うからです。たとえば、現在メルペイ社でbackendエンジニアとしてマイクロサービスを開発していますが、「マルチスレッドプログラミングにおける重要な4要件」が求められるような複雑なソフトウェア開発ではありません。これは、おそらく多くのウェブサービス開発に当てはまると思います。
2019-04-04 03:38
コメント(0)
コメント 0