1. B-Testing.fm
  2. #53 自動テストって何のために..
#53 自動テストって何のために書くの? 4つのメリットを分かりやすく解説!
2026-10-05 13:04

#53 自動テストって何のために書くの? 4つのメリットを分かりやすく解説!

今回は、これまでのテスト設計の話題から少し離れ、「自動テスト」をテーマにお話しします。自動テストと聞くと、「テスト実行の工数削減」が真っ先に思い浮かぶかもしれませんが、実は得られる恩恵はそれだけではありません。「そもそもなぜ自動テストを書くのか?」という根本的な疑問について、ロボット掃除機や食洗機、サーカスの綱渡りといった身近な例えを交えながら、4つの視点でメリットを深掘りして解説しています。自動テストに興味がある方、これから導入を考えている方はぜひお聴きください!


📌 今回のエピソードのポイント

  • テスト実行に必要な準備の明確化: ロボット掃除機を買うと床を片付けるようになるのと同様に、自動テストの導入はテストしやすい設計や環境作りを促進します。
  • 安心してコードを変更できるセーフティネット: サーカスの落下防止網があるから大技に挑めるように、自動テストがあるからこそ安全にリファクタリングや仕様変更が行えます。
  • 生きたドキュメントとしての機能: 自動テストは、常に仕様書と実装の乖離を防ぐ「動く説明書」としての役割を果たします。
  • 工数削減とその注意点: テスト実行工数は削減できますが、テストを準備する工数やメンテナンスコストへの意識も重要です。



📕 参考文献



🕒 チャプター

  • () オープニング
  • () なぜ自動テストを書くのか?
  • () メリット1:テスト実行に必要な準備が明確化される
  • () メリット2:安心して既存コードを変更できる
  • () メリット3:実装内容の説明書代わりになる
  • () メリット4:テスト実行の工数が削減できる
  • () エンディング


📢 あなたのご意見をお聞かせください

自動テストの導入でつまずいたことや、逆に「導入してよかった!」と感じたエピソードはありますか?ぜひ皆さんの自動テストに関する体験談を教えてください!

  • X(旧Twitter):ハッシュタグ #b_testing でのポストをお待ちしています。

  • お便りフォーム:こちらからお気軽にどうぞ。

  • フォローのお願い:最新回を逃さないよう、Podcastアプリでのフォローをぜひお願いします!

感想

まだ感想はありません。最初の1件を書きましょう!

サマリー

自動テストを書く理由を、実装方法ではなく考え方の面から整理する。メリットとして、テスト実行に必要な準備の明確化、既存コードを安心して変更するためのセーフティーネット、実装内容を示す動く説明書、テスト実行工数の削減の4点を挙げる。ロボット掃除機や食洗機、綱渡りの落下防止網を例に、テストデータや設計の準備、デグレードの早期発見、仕様変更時のドキュメント維持を説明する。一方で、テスト準備やメンテナンスのコスト、テスト分析・設計が引き続き必要な点にも注意を促す。

自動テストを書く理由と4つのメリット
皆さん、こんにちは。B-Testing のブロッコリーです。この B-Testing.fm は、QAエンジニアである私、ブロッコリーが、テストや品質に対する私なりの考えを、約10分間で語っていくポッドキャスト番組です。
こないだまで、テスト設計の話が多かったとは思うんですけれども、今回から自動テストについての話を始めていこうかなと思っています。お聞きの皆さんも、自動テストっていうのは興味を持っている方が多いかなとは思います。
ただし、ちょっとあくまでもポッドキャストの中なので、結構自動テストの実装方法を具体的にどう話すかっていうよりも、実は自動テストって各以前の話ですね。その前段となるマインドセットであったりとか、こういう考えでっていうような、そういう話がすごい大事になってくるので、そこがこのポッドキャストの中では多めになってきそうかなと思います。
また、そういうところもあるので、結構テスト設計の回ではですね、ディシジョンテーブルとか状態遷移図とか、どうしてもスライドに頼るところが多かったんですけれども、少なくとも今回はですね、スライドはなく結構説明したり話していきますので、ぜひ目で見る必要もないですし、耳だけこっちに向けてポッドキャストを聞いていただければと思います。
ということで、今回もbtesting.fmスタートです。今回はですね、まず自動テストの一つ目、初回としてですね、そもそもなぜ自動テストを書くのかっていうところについて考えていきたいなと思います。
なぜ自動テストって書くのかっていうところで言うと、結構よく出てくるのが、自動テストをやることによってテスト実行の工数削減をしたいみたいな、そういう話がよく出てくるかなと思うんですけれども、それは自動テストをなぜ書くのかとか、自動テストを書くメリットの一つにしか過ぎないかなと思っています。
自動テストをなぜ書くのか、もしくは自動テストのメリットとしては他にこういうのがあるかなと思っています。今回4つ紹介したいなと思います。
1つ目がテストを実行するために必要な準備が明確化される。2つ目が安心して実装して安心して既存コードの変更を行える。
3つ目が実装内容の説明書代わりになる。そして最後4つ目がテスト実行の工数が削減できる。この4つを紹介していきます。
これは別にJSDKBであったりとか、どっかに書いている4つの値ではなくて、自分が個人的に考えているものにはなります。
テスト実行に必要な準備の明確化
1つずつ紹介していきます。まず1つ目はテスト実行に必要な準備の明確化ということで、実は自動テストを書こうというふうになったときは、いきなり自動テストを書けるかというとそうじゃないことが多くて、
いろいろ準備、こういうことも準備した方がいいというのがいろいろ見えてきます。ちょっと自動テストの話から外れますけれども、皆さんに身近な例として2つ思い浮かべてほしいなと思います。
まず1つ目がロボット掃除機ですね。ロボット掃除機って家がちょっと汚い、掃除したいってなってロボット掃除機買ったときにですね、これ買ったらすぐ床きれいにできるでしょうかっていうとそうはならないかなと思っています。
ロボット掃除機買っただけでは自動的に床はきれいにできません。何でかっていうと掃除機かけようと思っても床にいろいろと荷物とかものを置いてたら掃除機かけられないんですよね。だからロボット掃除機を買うことによってロボット掃除機が通れるように荷物を片付ける必要が出てくるわけですよね。
というふうなのと同じように、自動テストでやろうって思ったときにはですね、実は手動テストではうまく回避していたものをちゃんとどけたりとか準備をしたりしないといけないということが出てきます。
例えばですね、会員登録の自動テストをやるとして、全く同じメールアドレスで会員登録何回も自動化してできないですよね。もう会員登録済みですっていうふうに2回目以降は出ちゃうわけですよ。
じゃあそうならないようにするためには会員登録しようと思っているメールアドレスだったりとか会員IDを何かしら工夫しないとうまくテストが実行できないわけですよね。
そういうちっちゃなことがあったりするんですけど、そういう小さなところを手動テストだとうまく回避しながら実行しているわけですよね。
それを自動テストということで明確にやろうとすることによって、こういうのもちゃんと工夫してデータを作らなくちゃいけないなとかっていうのが見えてくるんですね。
これが実は自動テストをやることで良いメリットになるものの一つかなと思います。
あとは先ほどロボット掃除機という例えを言いましたが、もう一つ最近自分は食洗機もちょっと例えたりしています。
何かというと食洗機って今まで食洗機を使っていなかった生活の時に利用していた食器とかっていうのをそのまま食洗機に投入できないんですよ。
食洗機したいような食器とか割れちゃうわけですよね。
かつ食洗機を使おうっていうそういう生活になると、じゃあこの食器は食洗機対応しているかどうかを気にしたりとか、これは我が家の食洗機にはうまく入る大きさだなとかっていうのを考えながら食器を購入することになると思うんですね。
それと同じで自動テストをやろうっていう風になると、これが自動テストの形で書きやすい設計になっているかとかっていうのも意識しながらやることができるんですね。
ということでこのテスト実行に必要な準備の明確化っていうのが、自動テストどうすればうまくスムーズにできるのかっていうのを自覚に考えることにつながるっていうのがメリットの一つ目になります。
既存コード変更のセーフティーネット
続いて2つ目が安心して実装して安心して既存コードを変更できるっていうことですね。
これ何言ってるかっていうとこれも一つ比喩としてお伝えするとアサカスって例えば綱渡りとか高いところの綱渡りとかしたときに下に落下防止用の網とかが張られたりしますよね。
でああいう網があることによって危険の技とか挑戦して万が一落ちても怪我をしないようにできているわけですよね。
でそれと同じように自動テストっていうのは実際にテストを自動でテストを行うことによって何かしら実装したときに既存の部分が壊れちゃったとかそういうときにデグレードをすぐ素早く発見できるっていうまさに落下防止用の網セーフティーネットみたいな役割ができるっていうところがありますと。
なので安心して実装できるしそういうふうに自動テストがちゃんと作られていると既存のコードをちょっと修正するとか仕様の変更があったときにそこに対応して思いもよらぬところのデバグが起きるっていうのを早くリリース前に検知できるこれがメリットの2つになります。
実装内容を示す動く説明書
そして3つ目が実装内容の説明書代わりになるということになります。
よく仕様書っていうのがあってあとは実装内容があったときに乖離が起きちゃったりするんですよね。
なんでかっていうと実装していく中でこれこういうふうにちょっと変えたほうがいいなとか更新があったときに仕様書まで更新する仕組みってなかなかないんですよね。
ちゃんと意識的に仕様書も更新しなきゃって思えば仕様書も更新できますけどそういうふうに意識しないと更新されなくなる乖離が発生しちゃうわけですよね。
仕様書までいかなくても自動テストでこういう振る舞いになるよっていうのを定義して自動テストが組まれていればもしも仕様が変わったときとかそういったときには自動テストがちゃんと失敗してくれるわけですよね。
なので仕様書が追随できてないよ。仕様が変更になったときに仕様書が追随できてない。自動テストが落ちるってことはその変わった部分に対してちゃんとテストも反映できてないよって見えるわけですよね。
逆にテストをそうやって修正することによって常に動く保証のあるドキュメントになる。これがまさに実装内容の説明書代わりになるというメリットにつながります。
工数削減と導入・維持コスト
最後がテスト実行のコースの削減の話になります。これやっぱり自動テストをやる時の導入するモチベーションとかメリットと思われがちなところなんですけれども、ちょっと注意が必要で導入するメリット、モチベーションにはなるんだけれども
先ほど最初に言ったロボット掃除機の話みたいなテストを準備するコースっていうのは実はあったりとか、あとはメンテナンスするコースっていうのは結構意識する必要があるかなと思います。特に導入をすごい推進する人は結構このメンテナンスのコースを想定よりも低く見積もりがちになるかなと思います。
結構メンテナンスのコースがかかるという意識はしたほうがいいです。あとはこれ削減できるのはあくまでもテスト実行のコースの削減になります。
あとは自動テストで書いているスクリプトっていうのは、今までこのPodcastの中でも話しているテストプロセスに照らし合わせるとテスト実装の部分になります。テスト実装としてテストスクリプトを書いて、それをテスト実行の自動化として使っていくという話になるので、
テストスクリプトを書く、テスト実装をやるにしても、やっぱり手動のテストと同様にテスト分析、何をテストすべきかとか、どういうパターンがあるかというテスト設計っていう考え方が引き続き必要になってきます。
なのでテスト実行のコースが削減できるっていうのもメリットなんだけれども、実は考えることいっぱいあるよっていうのはぜひ押さえておいてほしいなと思います。
4つのメリットの振り返り
ということで、なぜ自動テストを書くのかとか、自動テストのメリットについて4つ紹介してきました。
テストを実行するために必要な準備が明確化される。安心して実装して、安心して既存コードの変更を行える。
実装内容の説明書代わりになる。テスト実行のコースが削減できる。の4つを紹介してきました。
このような形で自動テストをなぜ書くのか、メリットっていうのは実は多岐にわたるよというお話をお伝えしました。
エンディング
はい、ではエンディングです。
btesting.fmではリスナーさんからのお便りを募集しています。
エピソードの感想や私に聞いてみたい質問やテストのお悩みなど、どんなことでも構いません。
投稿フォームは番組概要欄にあります。
またエピソードの感想は、ハッシュタグBテスティングでXのポストをお願いいたします。
今日の話、ちょっと自動テストの導入の話で結構抽象的な話が多かったかもしれませんが、
より具体的な身近な例としてロボット掃除機とか食洗機とかいろいろたとえて紹介していきました。
なるほど、そういうことなのねって思っていた方もいれば、結局何が言いたいんだよってツッコミを入れたくなる方もいたかもしれません。
ぜひ、Bテスティング、ハッシュタグBアンスコテスティングでポストを、そういう感想のポストをお願いします。
もしもこれからも聞きたいという方はお手持ちのポッドキャストアプリで番組のフォローもお願いします。
最新回が上がった時にすぐに気づけます。
今日から自動テストについてしゃべり始めたというところもありますが、もちろん次回以降も自動テストについてしゃべっていくので、気になる方はぜひフォローお願いします。
ということで今回はここまでです。それではまた次回。バイバイ。
13:04

コメント

スクロール