Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2年間自動テストを作り続けて分かったこと_失敗談から学ぶテスト自動化

tateishi
December 11, 2021

 2年間自動テストを作り続けて分かったこと_失敗談から学ぶテスト自動化

ソフトウェアテスト自動化カンファレンス2021での発表資料になります。

イベントページ:https://testautomationresearch.connpass.com/event/228204/

Twitter:https://twitter.com/mt3_set
note:https://note.com/mt3_set/

tateishi

December 11, 2021
Tweet

More Decks by tateishi

Other Decks in Technology

Transcript

  1. | Copyright(C) TechVan Co,Ltd 2 1. 自己紹介 2. テスト自動化失敗物語 3.

    失敗の原因の整理 4. 失敗の原因に対する解決策 5. まとめ アジェンダ
  2. | Copyright(C) TechVan Co,Ltd 3 舘石 光寛(たていし みつひろ) Twitter:MT(@mt3_set) ・テクバン株式会社

    ・新卒で入社 → テスター → TE → QA / TAE ・現在:テスト自動化の導入/運用支援、推進活動 経歴 趣味 キャンプ / 筋トレ 社外活動 ・社外向けテスト自動化研修の実施 ・各種イベント / セミナーでの発表
  3. | Copyright(C) TechVan Co,Ltd 4 ◆ 今日話すこと 過去の経験からの失敗の数々と「そこからどうしたか」「こうすべきだった」を共有 ◆ 対象者

    ・まだテスト自動化を始めていない方 ・テスト自動化で悩んでいる方 ◆ その他 ・資料、動画は後日公開されます ・質問、感想等はDiscordにてお待ちしています 発表について
  4. | Copyright(C) TechVan Co,Ltd 6 ◆ 登場人物 ◆ PJの概要 ・QAチーム体制:2人(どちらもテスト自動化&開発経験なし)

    ・テスト内容:システムテスト ・テスト対象システム - とあるWebサービス - リリース頻度:Q~半年に1回 テスト自動化失敗物語の概要 開発者さん MT(QA) 上司さん
  5. | Copyright(C) TechVan Co,Ltd 8 テスト自動化失敗物語(1/7) ある日の定例会 今度のリリースは◦◦月××日の予定だけど、 最後のリグレッションテストって いつもどれくらいかかってるっけ?

    いつも◦◦日くらいを見込んでますね なるほどーその辺もうちょっと効率的にやりたいよね~ 例えば...自動化するとか (そうきたか...)確かにうちでも導入した方が 良いかもしれないですね ちょっとどんなツールが良いか調べてみます MT(QA) 上司さん
  6. | Copyright(C) TechVan Co,Ltd 9 テスト自動化失敗物語(2/7) 翌日 取り合えず無料で使える自動化ツールを調べてみよう(ググる) なるほど、名前は知ってたけどやっぱりこの「Selenium」っていうのが今は主流っぽいな IDEだと出来ること限られてきそうだしWebDriverかな

    言語は...お、pythonであれば記述もわりと簡単みたい (クイックリファレンス見ながら)開発経験ないけど、要素取得してクリックとかするだけ みたいだし出来るんじゃないかな 自動化するテストは...取り合えずお客さんから言われているリグレッションテストだな 早速作ってみよう
  7. | Copyright(C) TechVan Co,Ltd 10 テスト自動化失敗物語(3/7) 数日後 うーん何か上手くいかないところが多いなあ 取り合えず出来るところだけ作っていくか... インポートした

    証明書が上手く 動作しないなあ... 右クリック メニューが上手く 取得できない... IEではファイルの ダウンロードが 出来ないのか!? IDもnameも 割り振られていない... class名も同じだし Xpathしかないか...
  8. | Copyright(C) TechVan Co,Ltd 11 テスト自動化失敗物語(4/7) 数か月後 取り合えず半分くらいは出来てきたし1回通しで動かしてみよう そう言えば通しで動かすのは初めてだな あれ、単体で動かしたときは通ってたのに何か落ちちゃったな...

    そうか、ここのデータ登録がこっちに干渉してたのか、直したいけど通常業務もあるし時間がないなあ あ、ここも失敗してる...うーん、ここの期待値チェックはここまで出来ていればOKにするか ここはさっき通ってたのに今度は落ちてるぞ?もう一回実行するか... 通った。何かタイミングとかの問題だったのかな、取り合えずOKと。
  9. | Copyright(C) TechVan Co,Ltd 13 テスト自動化失敗物語(6/7) そのまた数か月後 はあはあ...新しいUI用のテストスクリプトの修正が何とか終わったぞ しかし変更箇所が多くて大変だったなあ、もう少し変更しやすい作りに変えないと... 何か良い方法はないかな(ググる)

    なるほど、pythonにはpytestっていうテスト用のフレームワークがあるのか、これを使ってみようかな あれ、これ結構書き換えが大変だぞ。というか半分くらい書き直さないといけないのでは...? しかもこれ実行させるときにclassとかメソッドごとで呼び出してるから、命名規則も統一させなきゃでは... ...ああ、また修正しなおしか...
  10. | Copyright(C) TechVan Co,Ltd 16 ・コスト削減のみを主要な目的とする ・「無料だから」という理由だけで選ぶ ・作業担当者を決めずに始める ・スケジュールを決めずに始める ・通常業務と並行して片手間で行う

    ・自動テストスクリプト全体の構成やコーディング規約など、 最初にルール化できていない ・マニュアルテストをすべて自動化する ・システムが自動化に適した設計になっていない ・作業メンバーのリソース不足でテストの実装ができない ・作業メンバーのスキル不足でテストの実装ができない ・自動テストが全て完成してから実行する ・自動テストを日常的に実行していない ・期待値チェックの判定条件が曖昧・行っていない テスト自動化失敗の原因 ・マニュアル化できていない ・担当者が1人しかいない・少ない ・ナレッジが溜められていない ・自動テストが失敗したときにすぐにメンテナンスをしない ・不安定な自動テストを改修せず放置してしまう ・作業メンバーのリソース不足でメンテナンスができない ・コードの保守性・可読性が低くてメンテナンスがしづらい ・テストのスピードがあまり求められていない ・テスト対象システムが既にほぼ完成されたシステムで、 その後のリリース頻度が少ない ・開発プロセスの最後にだけテストをしている etc.
  11. | Copyright(C) TechVan Co,Ltd 17 ・コスト削減のみを主要な目的とする ・「無料だから」という理由だけで選ぶ ・作業担当者を決めずに始める ・スケジュールを決めずに始める ・通常業務と並行して片手間で行う

    ・自動テストスクリプト全体の構成やコーディング規約など、 最初にルール化できていない ・マニュアルテストをすべて自動化する ・システムが自動化に適した設計になっていない ・作業メンバーのリソース不足でテストの実装ができない ・作業メンバーのスキル不足でテストの実装ができない ・自動テストが全て完成してから実行する ・自動テストを日常的に実行していない ・期待値チェックの判定条件が曖昧・行っていない テスト自動化失敗の原因 ・マニュアル化できていない ・担当者が1人しかいない・少ない ・ナレッジが溜められていない ・自動テストが失敗したときにすぐにメンテナンスをしない ・不安定な自動テストを改修せず放置してしまう ・作業メンバーのリソース不足でメンテナンスができない ・コードの保守性・可読性が低くてメンテナンスがしづらい ・テストのスピードがあまり求められていない ・テスト対象システムが既にほぼ完成されたシステムで、 その後のリリース頻度が少ない ・開発プロセスの最後にだけテストをしている etc. 失敗の原因が多すぎる...
  12. | Copyright(C) TechVan Co,Ltd 21 テスト自動化失敗の原因(整理後) 導入時の話 ・コスト削減のみを主要な目的とする ・「無料だから」という理由だけで選ぶ ・作業担当者を決めずに始める

    ・スケジュールを決めずに始める ・自動テストスクリプト全体の構成やコーディング規約など、 最初にルール化できていない ・マニュアルテストをすべて自動化する 運用時の話 ・マニュアル化できていない ・担当者が1人しかいない・少ない ・ナレッジが溜められていない ・自動テストが失敗したときにすぐにメンテナンスをしない ・不安定な自動テストを改修せず放置してしまう ・作業メンバーのリソース不足でメンテナンスができない ・コードの保守性・可読性が低くてメンテナンスがしづらい そもそもの話 ・テストのスピードがあまり求められていない ・テスト対象システムが既にほぼ完成されたシステムで、 その後のリリース頻度が少ない ・開発プロセスの最後にだけテストをしている 実装時の話 ・通常業務と並行して片手間で行う ・システムが自動化に適した設計になっていない ・作業メンバーのリソース不足でテストの実装ができない ・作業メンバーのスキル不足でテストの実装ができない
  13. | Copyright(C) TechVan Co,Ltd 22 テスト自動化失敗の原因に対する解決策 導入時の話 テストの目的を決め、 計画・設計を行う 運用時の話

    メンテナンスが命 そもそもの話 今、本当に「自動テストを作ること」が 必要なのかを考える 実装時の話 片手間でやらない
  14. | Copyright(C) TechVan Co,Ltd 23 テストの目的を決め、計画・設計を行う 導入時の話 テストの目的を決め、 計画・設計を行う ・まずは目的があって、それをもとに

    - どのツールを使うか - どの部分の自動テストを作るか - どのようなスケジュール感で進めていくか を決めていく。 ・テスト実行コスト削減のみのテスト自動化は アンチパターンになりやすい印象
  15. | Copyright(C) TechVan Co,Ltd 25 運用時の話 メンテナンスが命 メンテナンスが命 ・とにかく「失敗したら即メンテナンス」が鉄則 ・どうしてもすぐに対応するのが難しい時は

    一定の期間の中でルールを決めて作業時間を確保 ・メンテナンスがしやすい作りにすることも重要 - 全体の構成、関数化、コメント - 有償ツールの力を借りるのもあり
  16. | Copyright(C) TechVan Co,Ltd 26 そもそもの話 今、本当に「自動テストを作ること」が 必要なのかを考える 今、本当に「自動テストを作ること」が必要なのかを考える ・今抱えている悩み・課題を

    「自動テストを作ること」で解決できる? ・今必要なのは別のことかもしれない - UT、APIなど別レイヤーのテストでカバー - 既存テストの妥当性・必要性を見直す