カテゴリで絞り込む

トレンドワード

テストツール
more
テストケース生成ツール
テスト自動化ツール
実機テストのクラウドサービス
テスト管理ツール
Qbookについて
Facebook x

テスト自動化は運用が9割 ~テスト実行が不安定になる要因とそれを取り除く改善策~
第3回 テスト自動化は運用が9割
テスト自動化は運用が9割

更新日:

2025.03.05
x hatenabookmark
2

テスト自動化は運用が9割 ~テスト実行が不安定になる要因とそれを取り除く改善策~

執筆: 江村 禎昭

バルテス・ホールディングス株式会社 ソリューション事業推進部 首席研究員

テスト自動化が運用フェーズに入ってある程度時間が経つと、テスト自動化の環境や結果が不安定になるという経験があるのではないでしょうか?

不安定になる事象として以下のようなことが挙げられます。

  • プロダクトのソースコードなどは変更を加えていない。しかし、なぜかテストの結果が成功と失敗を交互に繰り返す。
  • テストはずっと成功を続けている。しかし、なぜかテスト実行時間が徐々に長くなってきて、テスト全体の時間がかかるようになってきている。
  • テスト実行時に、作成したはずのテストデータがなくなっており、そのステップでテスト失敗してしまう。
  • パソコンやスマートフォンの不意なポップアップなどでテストが妨害されてしまう。

このような不安定な状態が恒常的に発生すると、運用する人にとっては、たまったものではありません。プロダクトの品質は問題が起きていないのに、運用者にとってつまらない調査工数ばかりが増えてしまいます。

そこで、第3回である今回は、テスト実行が不安定になる事例とそれを取り除く運用について解説します。

テスト自動化は運用が9割 の連載一覧

もくじ
  1. ソースコードを変更していないのにテスト結果が不安定(=Flaky Test)
    1. タイミング問題
    2. システム負荷・ネットワーク問題
    3. テストケースの依存関係
    4. 複数のテストケース実行の衝突
    5. ランダム性のある要素
  2. テストの実行時間が長くなる不安定
    1. プロダクト側のパフォーマンスの問題
    2. テスト自動化の問題
  3. テストデータ起因の不安定
  4. テスト環境起因の不安定
  5. まとめ

1.ソースコードを変更していないのにテスト結果が不安定(=Flaky Test)

プロダクトのソースコードを変更していません。テスト自動化を何回か実行すると、成功と失敗の結果を出すことがあります。

これをテスト結果が不安定といいます。(Flaky Test ※)

※ 出典:「Advances in Continuous Integration Testing at Google」JaSSTソフトウェアテストシンポジウム-JaSST'18 Tokyo-セッション概要

下図に3種類のテストケースを8回実行したものになります。

テストケース実行.png

テストケースAはすべて成功しています。問題ありません。

テストケースCは3回目以降すべて失敗しています。2回目と3回目の間に不具合が混入したのでしょう。プロダクトに問題はありますが、テスト自動化のスクリプトとしては安定しています。

テストケースBは成功と失敗が交互に発生しています。これはなんらかの不安定な状態で、正常にテストできないことが起きていると考えられます。これをFlaky Test(フレーキーテスト)といいます。

このFlaky Testは、テストを実行するたびに結果が変わるため、プロダクトに不具合があるのか判断できません。またこの原因特定するための調査工数もかかってしまいます。

そのため、このようなFlaky Testを減らすことが、テスト自動化の運用改善につながります。

Flaky Testのいくつかの原因と改善策を順番に解説します。

1-1 タイミング問題

まず考えられる原因として、タイミングの問題があります。例えば画面表示後、JavaScriptでAPIをCALLしてデータを取得し、一部のUIを非同期で作成したとします。

この非同期の時間が実行毎にまちまちで、場合によって数秒待たされることで、テスト自動化は要素がないと判断して失敗してしまう可能性があります。

数秒待たされる例として、検索結果のレイアウトは表示されているが、検索結果の詳細が読み込み中で表示されていない状態の場合です。

サイト読み込み.png

また、各種ボタンなどは表示されているが、Loadingのモーダルがoverlapされていて、どのボタンもクリックできないケースもあります。モーダルが消えるまで処理を進めることができません。

サイト読み込み_2.png

このような、タイミングの問題が、Flaky Testを引き起こします。

タイミングの問題に対して、簡単な改善方法はwaitをいれることです。

ただ、waitをどれだけ入れればいいのか不明確なまま、長くwaitをいれると、その分テスト自動化の実行時間が長くなってしまうため、望ましくありません。

上記の例では、Loadingの表示が消えるまで待つ処理を入れれば、改善します。このように、wait以外で改善する方法を探すのが良いですが、どうしても難しい場合はwaitも選択肢ではあります。

関連記事

お役立ち資料

QAエンジニアって何?

QAエンジニアって何?

「QAエンジニア」とは、ソフトウェアやシステムの品質を保証するために、テストや検証を行うエンジニアのことです。 本資料では、QAエンジニアの主な仕事内容や、求められるスキルや資格、キャリアパスについて解説します。 ※こちらの資料は会員登録不要でダウンロードいただけます。

ソフトウェアテスト実施はじめてガイドブック

ソフトウェアテスト実施はじめてガイドブック

実際に「テスト実施」・「不具合報告」をする際の正しい流れを解説したガイドブックです。ソフトウェアテストを初めて実施する人に向けて、その作業内容や用語、心構えをまとめています。

ソフトウェアテスト効率化 カオスマップ(2025年版)

ソフトウェアテスト効率化 カオスマップ(2025年版)

ソフトウェアテスト効率化カオスマップは、ソフトウェアテストに関連するサービスを提供する事業者や、自動化ツールをはじめとしたツール・サービス類について、独自の調査をもとにまとめたものです。 自社のサービス選定のご参考にご利用ください。

テストツール

テストのプロであるQbook監修の講師陣が提供する

Qbookの品質教育サービス

もっと見る

開催中の講座

一般向け

これから学びたい方・スキルアップを目指す方

事前ヒアリングに基づき、品質課題に沿ったカリキュラムを提供します。実務で使える品質管理手法を学べます。

企業向け講座

企業向け

社員教育をご検討中の方

事前ヒアリングに基づき、品質課題に沿ったカリキュラムを提供します。実務で使える品質管理手法を学べます。

eラーニング

一般向け

資格・試験対策をしたい方

事前ヒアリングに基づき、品質課題に沿ったカリキュラムを提供します。実務で使える品質管理手法を学べます。

バルデミー

企業向け

社員教育をご検討中の方

「バルデミー」は、より実践的で質の高いソフトウェアテストのオンライン教育プログラムです。