『本当にメンテナブルなSeleniumについて考えてみた』 参加レポート #selenium_cybozu

スライド

speakerdeck.com

自己紹介

  • 赤坂翔太
  • 一休.com
  • 宿泊事業本部宿泊システムチーム

ここでいうテストって

  • リグレッションテスト
  • 予約・購入できないと甚大な被害

メンテナブルなSelenium=PageObjectPattern?

  • 正解の一つ
  • 本当に大事なことはリグレッションテストの自動化をより長く続けること
  • 実装した後の運用が大事

一休のリグレッションテスト事情

  • 30ケース8並列
  • 実行時間
    • 5~7分(本番環境)
    • 8~10分(ステージング環境)
  • PageObjectパターンで作成
  • メンテナンスデキる人が1人しかいない

やったこと

  • 全体向けに説明会
  • アウトプットは要所要所
  • 自分でメンテナンスは我慢
  • 開発フローに組み込む

全体説明会

  • Selenium WebDriverの概要
  • 様々な環境での実行方法
  • Jenkinsからの実行方法
  • ChatOpsからの実行方法
  • Seleniumはみんなのもの!という意識を持ってもらう

要所要所でアウトプット

  • Qiita:Teamで投稿
  • Seleniumをみんなの中に刷り込む

自分でメンテナンスしない

  • 修正をお願いされても突き放す勇気
  • 修正をした際に、Seleniumのテストケースも修正してもらう
  • Seleniumに触れる開発者を増やしてくる

フォローは喜んで

  • サーバーサイドエンジニアが多く、Seleniumに慣れていない人も多かった
  • できればアウトプットもお願いする
  • どんどんSeleniumの輪を広げていく

まとめ

  • 持続させることが大事
  • メンテナーが1人にならないようにする
  • 長く続ける・運用すること
  • 仲間を増やすこと

番外編

  • たまに一石を投じることも必要

実例

  • 定期実行がFailしまくる
  • アプリケーション側の問題のようだ
  • ステージング環境の失敗に関しては反応が無い
  • エラー内容を添えて聞いてみたが、誰からも応答が無かった
  • 怒りの思いをQiita:Teamに書いた

数ヶ月後

  • 同じような事例が発生
  • キャッチアップ&フォローしてくれる人が現れた

  • 一石を投じることも重要

  • でも権威的になり過ぎないように気をつける
  • 正論をふりかざして相手を避難することは良くない

質問

テストケースの管理・重複は?

  • テストケースのレビューは自分だけ

    役割分担は?

  • 一休のエンジニアが何でもやるという感じ

カバレッジを広げたくなる思いを留めるには?

  • 結構割りきってしまう
  • 予約の導線をカバーできればOKとやる内容を切った
  • もっとやれる範囲はあるが、現在は切っている

パターンは気にしないのか

  • 導線が意外と多い
  • Yahoo連携、au連携、現地決済、事前のカード決済

パターンの管理・設計の管理は?

  • その部分の知識の説明はあまり必要なかった

Jenkins特有のエラーがたまにあるが、エラー通知が鈍感にならない工夫は?(2回まわすなど)

  • max retry回数を設定したりしている
  • 「テストが落ちても大丈夫」と思われないようにする