天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます

「人類よ!これがテスト自動化だ!プロの自動化エヴァンジェリストの技術を一緒に学ぼう!」に参加してきた

mabl-japan.connpass.com

少し日が空いてしまいましたが、上記のイベントに参加してきたので、イベントの感想を書いていこうと思います。

イベント概要

mabl Japan コミュニティさんが主催している、ソフトウェア品質やテスト自動化に関する知見を広めることを趣旨としているイベントです。
今回は、テスト自動化エヴァンジェリスト伊藤由貴さんが「プロの自動化仕事術」について色々と答えてくれました。
具体的には、

  • 伊藤さんのキャリア
  • テスト自動化エヴァンジェリストの仕事について
  • 「テスト自動化で工数が削減できるか?」ともし聞かれたら?
  • 「テスト自動化で品質が上がるか?」ともし聞かれたら?
  • E2Eの場合、WebDriverとテストSaaSではどちらが強いか?
  • ツールは手段でしかないが、ツールを使うことが先行してしまう場合ってないか?
  • アジャイルテスターって存在すると思うか?
  • テスト自動化が成功するケースとはどんなケースか?
  • テスト自動化はエンジニアとQAのどちらが行うと良いか?
  • 完全自動化は有り得るか?
  • テスト自動化エヴァンジェリストになるためには?
  • テスト設計をして作られたスクリプトテストより、探索的テストが優位に立つことはあるか?
  • テストピラミッドの形に従わないのはアンチパターン?(例えばUTの後、APIテストがないのにE2Eテストを作るなど)
  • テスト自動化の目標やスコープ決定の具体例
  • 自動化しないテストと自動化するテストの連携について工夫はあるか?

等々の多数の質問について、できる限りの範囲で答えてくれました。

イベントで印象的だった話

テストピラミッドについて

f:id:aki_M:20210124182617p:plain

テスト自動化やテスト戦略の文脈で良く話が出てくる、テストピラミッドについて、伊藤さんと藤原さんが考えていることを聴くことができました。
お二人ともテストピラミッドの考え方は認めていて、基本的には賛成とのことでしたが、例えばE2Eテスト(上記図の最上位レイヤー)をAPIテスト(上記図の中位レイヤー)より重視する考え方*1だってあり得るし、藤原さんが参加した海外イベントでは、リリース後のテスト自動化戦略として、テストピラミッドを派生させたモデルも登場しているという話も出ていて、必ずしもテストピラミッドの形に拘らなくてもいいと思っているという話が聞けました。
現場では、まだAPIレベルのテストやE2Eレベルのテストがなく、これから整備していこうとしている状況なので、必ずしもAPIテストから始める必要がない、という意見を聞くことができたのは、引き出しが一つ増えて良かったです。

テスト自動化の目的が抽象的なものだと危ない

テスト自動化の目的が「工数を削減すること」や「品質を上げること」だった場合、おかしな方向に向かうという話が出ていました。
実際にテスト自動化を進めていくにあたっては、テスト自動化によって削減できるコストに着目するのではなく、テスト自動化をすることで必要になるコスト(テスト自動化のメンテナンスにかかるコスト)にも着目すると共に、テスト自動化のROIをある程度慎重に見積もりしていこうと思います。

テスト自動化をした後

これまでの自分は、テスト自動化するまでのことに軸を置いて考えていたのですが、伊藤さんが言っていた「1,000ケースのテストを自動化しても成功ではない。1,000ケースの自動化されたテストが継続的に実行されるようになって成功だ」という話で、自分がこれまでテスト自動化に対して持っていた考え方を見直しさせられました。
また、少し感覚的な話ではありますが、テスト自動化して現場が楽になっていたら、それがテスト自動化が成功した証、という話も、今後大切にしていきたい考え方だと思いました。

イベント全体を通した感想

テスト自動化エヴァンジェリストの方のお話を聞く機会というのは中々ないので、非常に貴重な時間を過ごすことができました。
多種多様な業種で様々な種類のテスト自動化を経験されてきた伊藤さんが、自身の引き出しの中で抽象的な質問に対しても丁寧に答えてくれていたのが、印象的でした。
穏やかな優しい口調で、話もゆっくりだったので、内容も頭に入りやすかったです。
イベントページにはZoomの動画も公開されていますので、もし気になる方がいらっしゃいましたら、是非是非ご覧になっていただければと思います!

*1:例えば少ないコストで簡単にE2Eができて、高速実行できる