見出し画像

JaSST'22 Tohokuで学んだ『テスト自動化アンチパターン』|イベント参加レポート

きっかけ

こんにちは。株式会社SHIFTでQAエンジニアをしている坪根です。

最近ガーリックバターソースをびしゃがけしたトーストにはまっています。在宅勤務だと同僚を気にせず臭いの強い食べ物を食べられちゃいますね。

先日のJaSST'22 Hokurikuに引き続き、に引き続き、2022年5月27日(金)に開催されたJaSST'22 Tohokuに参加してきました。

なお、JaSST'22 Tohokuのテーマは「テスト自動化その前に ~テスト自動化アンチパターン~」です。

テーマどおりプログラムはすべてテスト自動化に関するセッションやワークショップで統一されていました。 今回はその中から以下のセッションで学んだことと感想を残していきたいと思います。

【基調講演】
「テスト自動化に取り組むにあたり」 松尾 和昭氏(HeadSpin, Inc)

【事例紹介】
「テスト自動化導入後の課題の改善ビフォーアフター ~テスト自動化は導入後が大変~」 江村 禎昭氏(楽天)

【事例紹介】
「初めての自動化導入は慎重に、計画的に 失敗ケースの山から学ぶ楽な歩き方」 二河 亮氏(Mobility Technologies)
【ワークショップ】

【招待講演】
「テスト自動化の成功を支えるためのチームと仕組み」 井芹 洋輝氏(トヨタ自動車)

テスト自動化に取り組むにあたり【基調講演】

講演者:松尾 和昭氏(HeadSpin, Inc)

-テスト自動化とは

ソフトウェアを使ったテスト活動の実行や支援のことです。

-テストピラミッド

テストピラミッドはテスト自動化を議論するときよく出る図の一つです。

Android デベロッパーのテストの基礎より引用

-テストピラミッドの底からテスト自動化に取り組むことが推奨される理由

テストピラミッドの上から説明します。

範囲を区切らず全体をテストするのがUI Testです。

デモではUI Testは40秒かかりました。

通信の範囲で区切ってテストするのがIntegration Testです。

Integration Testは3秒かかりました。

個々のより細かな実装で区切ってテストするのがUnit Testです。

Unit Testは0,005秒かかりました。

つまりUI TestはUnit Testの8000倍の時間がかかったということです。

実行時間が短いと何度も実行しやすく、テストが失敗したときにやり直すのも容易です。

また実行時間が短いと、開発中に気軽に実行しやすく、開発中にバグを検出できます。

上記のとおり実行時間が短いことは多くのメリットがあるため、テスト自動化を始める際は費用対効果が高いUnit Testから自動化に取り組むことが推奨されています

《このセッションの感想》

自動テストについて初学者向けのセッションでした。説明やデモを通じて、なぜテストピラミッドの底からテスト自動化に取り組むことが推奨されているのかを理解できました。

「テスト自動化導入後の課題の改善ビフォーアフター ~テスト自動化は導入後が大変~」【事例紹介】

講演者:江村 禎昭氏(楽天)

-テスト自動化の役割が定まらない課題の改善ビフォーアフター

テスト自動化を始めるにあたり、テスト自動化の役割が定まらないという課題が発生しました。

そこで、マニュアルテストと自動テストの責任範囲と自動化の優先順位を定めました。

上記に沿ってテスト自動化を進めることで、テスト自動化の役割を定められました。

-自動テストに問題が起きたことに気づけなかった課題の改善とビフォーアフター

テスト自動化は進みましたが、自動テストが増えたことでテスト結果に問題が起きたことに気づけなかった課題が発生しました。

そこで、テスト実行結果の可視化をしました。

結果、テスト自動化のパフォーマンスの問題の早期発見と開発者への問題の早期報告ができました。

-自動テストに問題が起きた時のプロセスが多い課題の改善とビフォーアフター

マニュアルテストと比較して、自動テストは問題が起きた時のプロセスが多く対処が大変でした。

そこで問題を分析したところ、一時的に環境が不安定になったことが原因の問題が全体の7割以上でした。

上記の問題は再実行すればたいてい成功するのですが、再実行は手動で行っており都度工数がかかってしまいました。

再実行を自動化することで、問題が起きた時の対応工数を8割差削減できました。

《このセッションの感想》

テスト自動化の課題と改善についてのセッションでした。

一時的に環境が不安定になったことで自動テストが失敗することは私の普段の業務でも起きているので、再実行の自動化は早速取り入れようと思います。

「初めての自動化導入は慎重に、計画的に失敗ケースの山から学ぶ楽な歩き方」

講演者:二河 亮氏(Mobility Technologies)

-なぜ自動化しようと考えたのか

人員リソース不足でシステム全体のリグレッションテストを実行できず、リリース後デグレードがたびたび発生していたからです。

そこで実行できなかったテストの自動化を考えました。

ただし以下の3点が原因で自動化に心理的な壁を感じました。

・どう自動化していけばよいのかから考えていかないといけない

・専任者がいないことによりノウハウがない

・コーディングスキルなどの技術不足による漠然とした不安

-自動化は小さな一歩から

自動化を始めるにあたり最初はテストにこだわらず、身近な作業から自動化にチャレンジしました。

RPAツールを使ってテスト環境構築を自動化し、自動化前と比較して工数を30時間から1.6時間に短縮できました。

小さな一歩から成功体験を得られたため、壁が取り払われました。

-過去の失敗から学びました

ノウハウがないので過去の失敗したテスト自動化を調査し、失敗の原因は未計画で見切り発車したからではないかと考えました。

そこで以下を実施した結果、自動化の実現可能性の調査と自動化すべきポイントが見え、壁が取り払われました。

・テスト対象の構成を洗い出して表にまとめました

・その表に従ってツールを動かして自動化可能か調査しました

-ツールベンダーを頼りました

技術が不足していてもツールベンダーが提供しているサンプルコードを参考にして自動テストコードのコーディングができたため、壁が取り払われました。

すべての壁が取り払われた結果、次のステップが明確になり、説得力のあるテスト計画書をベースに実現性を説明でき予算を獲得し、テスト自動化できました。

《このセッションの感想》

テスト自動化を導入する際の心理的な壁とその解決方法を説明いただきました。

解決方法を導き出す考え方は自動化以外にも横展開できそうなので、新しいことに取り組むモチベーションになりました。

【ワークショップ】

-セッションの概要

テスト自動化にまつわるストーリーを体験する、ゲームブック形式のセッションです。

某サウンドノベルゲームをオマージュしたような影絵の人物が登場するスライドにストーリーと選択肢が表示され、参加者から一番投票された選択肢が採用されるマルチエンディングストーリーを体験しました。

なお投票はDiscordというチャットサービスから行いました。

-プロジェクトマネージャのストーリー

4つのストーリーから初めはプロジェクトマネージャーとしてテスト自動化を推進するストーリーを体験しました。

6回連続で正解することでハッピーエンドに到達できました。

ストーリーの中盤でテスト自動化ツールを選定するのですが、どちらのツールも正解に思われこの選択肢が一番投票が割れました。

解説で選択肢の不備ではなく今回のプロジェクトに合せてツールを選定するとどちらのツールでもよいからどちらの選択肢も正解ということでした。

テスト自動化した後の保守運用を踏まえて属人化が起こりにくい、簡単に使えてサポートを受けられるツールを選定すべきと考えましたが、与えられたプロジェクトの情報だけではどちらのツールがよいかは判断できないので、納得しました。

組織管理者としてシステムテストのコスト削減を検討するストーリー

次に組織管理者としてテスト自動化を推進するストーリー体験しました。

このストーリーは5回連続で正解することでハッピーエンドに到達できました。

テスト自動化することでテスト実行工数を削減できますがそれ以外の工数が発生するので、コスト削減を目的にテスト自動化をするストーリーに初め疑問を持ちました。

ストーリーの後半で工数削減の効果が出るのは2年以上先になることがわかり、別の効果がないか検討する選択肢が採用されました。

コスト削減が目的なので私は自動化は取りやめる選択肢を選んだのですが、解説でコスト削減できないから自動化をあきらめるのではなく、自動化によるほかの効果を上長に進言することで自動化を進めるのが推奨される解答とのことでした。

《このセッションの感想》

それぞれの選択肢に対して参加者が持論を展開してそれに対する議論も生まれて、楽しいだけでなくとても勉強になりました。

どちらもハッピーエンドに到達したので、最後にバッドエンドを見せていただけたのもよかったです。

まだ体験していないストーリーが2つ残っているので是非挑戦したいです。

「テスト自動化の成功を支えるためのチームと仕組み」【招待講演】

講演者:井芹 洋輝(トヨタ自動車)

講演資料は公開されているので詳細は資料をご覧ください。

-テスト自動化の成功とは

妥当な対価で目的を達成することです。

そのためには適切な目的を立て費用対効果を改善することが必要です。

-適切な目的を立てて費用対効果を改善するには

以下を行う必要があります。

・チームにとって有益で実現可能な目的を設定する

・テスト自動化活動のスコープを広げること

必要な技術レベルが低く、効果を早期に確保できるテスト自動化活動を継続し、テスト自動化の持続可能性を高め、ステップバイステップでより難しい目的達成を目指すこと

テスト自動化の成功を支えるチームと仕組み/TestAutomation16ページより

-テスト自動化活動とは

自動テストにとってのテスタビリティを高めることや、テストの妥当性を高めることなどです。

テスタビリティとは、円滑にテストできるかや単純にテストできるかの度合いのことです。

例えばシンプルなセットアップ手順を用意すればテスタビリティを高められます。

テスタビリティの低いテストを作ってしまうと、結局自動テストの大半を捨てることになってしまいます。

自動化する価値のあるテストケースを設計し、その価値を維持することでテストの妥当性を高められます。

-テスト自動化の成功を支えるチームと仕組み

テスト自動化活動を継続しテスト自動化を成功させるには、チームと仕組みによる下支えが重要です。

例えばテストチームだけでテスト自動化を進めると能力不足でテスタビリティの低い自動テストを作ってしまい、テスト自動化が失敗します。

-テスト自動化のチーム・仕組みを支えるチーム文化

チーム文化とチームの仕組みは相互関係にあるため、テスト自動化を成功させるには両方とも必要です。

テスト自動化の成功を支えるチームと仕組み/TestAutomation29ページより


《このセッションの感想》

テスト自動化を成功させるための理論を教えていただきました。

私が業務で運用している自動テストはエラーのステータスコードしか表示せずテスタビリティが低いことに気づけたので、エラーメッセージも表示するように修正してテスタビリティを高めようと思います。

教えていただいた理論は難しい内容が多く、完全には理解できていないので、共有いただいた資料を教科書として、私が運用している自動テストと照らし合わせながら自動テストを改善しようと思います。

JaSST'22 Tohokuに参加した感想

Discordでほかの参加者や運営の方と意見や感想が言い合えるコミュニケーションが取れるのが素敵でした。普段の業務でテスト自動化に取り組んでいるので、学んだことを業務に活かそうと思います。

また同僚にも学んだことを共有しようと思います。とくにワークショップのゲームブック形式のセッションは同僚にも興味を持ってもらえそうなので、なんとか用意して同僚に取り組んでもらいたいと思いました。


執筆者プロフィール:坪根 圭佑
ERPパッケージソフトの開発会社で会計ソフトの手動テストを2年経験したのち、2019年にSHIFTに参画しました。普段はAPIテストを担当しています。


お問合せはお気軽に
https://service.shiftinc.jp/contact/

SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/

SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/

SHIFTの導入事例
https://service.shiftinc.jp/case/

お役立ち資料はこちら
https://service.shiftinc.jp/resources/

SHIFTの採用情報はこちら 
https://recruit.shiftinc.jp/career/

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!