「テスト自動化とテスト駆動開発」講演資料
クライアント企業から依頼をいただいて、「テスト自動化とテスト駆動開発」という講演をしました。その資料を公開してよいことになったので、(若干手を入れて)公開しています。
以下のような内容です。
ねらい
- 主に顧客向けの業務システム(B2B)を開発している、
- プロジェクトベース、ウォーターフォールプロセスが主流の開発現場や運用保守の現場にいる、
- マネージャーのかたに向け、
- テスト自動化が自分たちのメリットになると納得してもらい、
- その道筋として2つのアプローチを紹介して、
- 組織的・長期的に取り組む価値を感じてもらう
アジェンダ
質問と回答
また、講演の際に質問をたくさんいただきました。回答をテキストで書いたものを、こちらも公開しています(いきます)。質問11件に対して、Wordで書いていたら21ページ分になったので分割しています。
-
質問5. 実際にTDDで運用したとき、それでも不具合が発生したことがありました。 データの量、質が問題視されたことがありました。 受け取った情報の信憑性は会話しながら模索しないといけないのでしょうか
-
質問6. テストコード部分の品質はどのように維持するのでしょうか?テストコードのテストコードを作るのではないと思いますが……
-
質問9. DBアクセスを含む処理をテストする場合、どのように環境を整えるのが良いと思いますか? 例.開発環境DBにつなぐ/クライアント端末にDBを建てる/メモリ内で完結させる
-
質問10. 仕様変更時、テストが壊れるケースがあると思います。どのようにプログラム修正するのが良いでしょうか?リファクタリングとは異なり、新規開発のように先にテストを書くのでしょうか?
-
質問11. カバレッジを上げようとすると費用対効果が悪くなっていくと理解しています。どこまでテストすべきか指針となるものはありますか? 例.業務ロジックのみテストコードを書く…など
最初のツイートが400いいね超という、ちょっとびっくりするくらい見てもらえているようです。
「テスト自動化とテスト駆動開発」という講演資料を公開しました。入門的な内容かつ、マネージャー向けの効果とか作戦とかの話です。業務システム開発のような比較的硬い会社をイメージしています https://t.co/e0XojZxvTZ
— YASUI Tsutomu (@yattom) 2021年3月29日
ここから下は、資料公開時の補足・言い訳です。
講演全体の構成として以下のような話の流れです。現在テストの自動化ができていない、稼働中システムのカバレッジという意味でも、自動化できるスキルが足らないという意味でも、できていないという状況にある。テスト自動化を推進しようと思ったとき、テスト駆動開発に取り組んで少しずつテストを書きながら、メンバーの学習と実践の場を作っていく、という作戦を提案しています。
別の作戦としてはSETの軍団に一気に自動化してもらう(雇用は難しいと思うんだけど発注はできそう)とか、自分たちでやるにしてもE2Eテストの自動化を中心にするという方法も、あると思います。そもそもアーキテクチャから変えればいい、みたいな話もあり得ます。このときはテスト駆動開発は関係なさそうです。
今回テスト駆動開発作戦を選んで提案した理由は、以下のようになるかなと考えています。
- 中の人が、テスト駆動開発を推進したいというパッションを持っている。組織で推進する上ではとっても重要なファクター
- 新技術・動向へのキャッチアップの力は組織全体で見たとき強くなく、安定とか効率化への力が強い。雇用も比較的安定している
- 長期的に組織を強くしたいという、発注者の方の思い
- テスト駆動開発の話ならできる。他の作戦なら、他の人が話すべき
逆に、そういう状況・前提・背景を取っ払った上でテスト自動化とかテスト駆動開発とかペアプログラミングとかを考えたら「今どきはこうだろー!」とか「こっちのほうが最強!」とか「やっとむてめーわかってないな!」とか、そういうツッコミがたくさんあるんじゃないかとも、思います。たとえば、モブプロじゃなくペアプロを取り上げたのは中の人の希望をいれた結果だったりします(モブプロいいよね。ペアプロもいいんだけど)。
そういうツッコミは歓迎ですし(あんまり痛くしないでくださいね)、意見や議論が出てきて盛り上がったりしたら、また嬉しいなあとも思います。