日々のこと

まいにちの暮らしをつれづれ書きます

ソフトウェアテスト自動化カンファレンス2020を聞いた


先週土曜の12/5、オンラインのソフトウェアテスト自動化カンファレンス2020に参加しました。

testautomationresearch.connpass.com

前職の会社でご一緒したことのある方が登壇する、と聞いたことが参加のきっかけでした。
教えてもらったイベント内容を見てみたら、彼女のお話する予定の内容が気になったことはもちろん、カンファレンスのテーマであるテスト自動化自体、とても気になるテーマだったので参加することにしました。
(残念ながら、こどもの習いごとの送迎があったりで、途中からの参加になってしまいました。)

どんなイベントかというと、公式ページから概要を引用します。

去年に続き、今年も2020/12/05 (土)にテスト自動化研究会(以下、STAR)は、8回目のテスト自動化に特化したカンファレンスを開催します。

テストの自動化は多くの現場で実施されるようになってきており、それぞれの場で様々な工夫がなされております。しかし、それらを聞く機会はなかなかないのが現状です。そこで、今年度はテスト自動化研究会以外の多くの方にご協力いただき、様々な現場でのテスト自動化について工夫や試行錯誤の様子をお話頂きます。

私は、前職ではユニットテストはコーディングして自動テストしていたけれど、E2Eテストはほとんど書いておらず、転職してからE2Eテストを書くようになりました。
なのでE2Eテスト初心者ですが、前職のときから興味はすごくありました。

この記事では、自分が聞いた講演に限定されますが、カンファレンスの様子をレポートします。

会場

カンファレンス会場はDiscord、講演はZoomで2つの部屋(会議室)が用意されていました。
会議室Aが初心者向け、会議室Bが経験者向けです。

Discordは初めてだったのですが、入り口や廊下、会議室A、B用のチャンネルが用意されていて、ボイスチャットで談話室もいくつかありました。

講演の間、自分の聞いている方の会議室のチャンネルに、twitterのようにリアクションを書き込めたりわいわいできるのが、カンファレンスに参加してる感じがあってとてもよかったです。
twitterハッシュタグは、#stac2020でした。
ただ、Discord会場でのつぶやきが多かったので、twitterへのつぶやきは少なめかも?そんなことないかな。

f:id:nobu09:20201211084425p:plain
Discordのカンファレンス会場

当日の講演資料

当日の講演資料は、こちらで公開されています。
全ての講演の分は公開されていなそう。。😢

testautomationresearch.connpass.com

FindElementできない画面のElementをFindした方法、そこから発展していくテスト自動化 / 佐藤 亮さん

Canvasで描画されていてFindElementできなかったアプリケーションをテスト自動化をしたお話でした。
実務で困った経験からこういう工夫をして成し遂げた、というようなお話はとても興味深いです。
私は、QAチームがいる開発現場にいたことがないので、QAの仕事に馴染みがないのですが、QAチームと開発チームが協働されているのがとてもよいなと思いました。
登壇者の方、コロナでリモート勤務になったため地元で働かれているそうで、釧路からの講演でした。
オンラインカンファレンスならではです。

  • Selenium IDEでUI操作しようとしたところ、アプリケーションがCanvasで描画されていて、いろんな要素がid=viewとなってしまい、テスト対象の要素をFindElementできなかった
  • QAチームが開発チームと相談して、座標の情報が入ったjsonを返してもらうようにした
  • これによりUIの自動操作が可能になった
    • 座標の情報が入っているjson情報を使ってseleniumでクリックする
  • チャートや明細表の値、システム設定の情報もjsonで出力してもらう機能をつけてもらった
  • 描画完了までの時間の計測、人間の目でやっていた
  • ボードにアクセスして描画完了になるまでの時間をサーバーに保存する機能を実装
  • SeleniumJavaで描画テストの自動化できた
  • グループのテックブログにMB自動化を書き横展開も

テスト自動化ツールで考えるモデルベースドテスト / 大段 智広さん

株式会社豆蔵のコンサルタントをされている方の講演でした。
途中から聞いたのと、今は資料が公開されていないようなので、以下、覚え書きになります。
モデルベーステスト、という手法をはじめて知りました。
(ちなみに資料は後日、公開できる箇所のみ抜粋して公開予定のようです。)

  • テスト設計してますか?
  • モデリングを重視している
  • モデリングは、利害関係者との密接なコミュニケーションを促進する
    • モデル化して会話 -コードを起こす前に、どういう動き、こういうデータ、とモデル化しておくとバグが検出できる
  • モデルベーステスト
    • テスト選択基準
  • モデルベーステスト(MBT)をはじめて使用する人は、モデル設計でよくある間違いをいくつも犯しがち
    • 多すぎるor少なすぎる詳細をMBTモデルに入れてしまう
    • MBTモデルは、テスト目的を満たすかを確認しながらモデリングしましょう
  • ①テストでやるべきことをモデルに落としていく
    • そもそも何を確認したいんだっけ?
    • 優先順位沿って確実に作れる
    • テスト目的に最も適した意味のあるテストケースのセットを選択・生成する
  • ②テストケースの(可能であれば自動)生成

E2Eテストのflakyと向き合う / 奥村哲郎さん

flasky(不安定)なテストへの向き合い方についてのお話でした。
E2Eテストで不安定なテスト結果、いつもじゃないけれど時々落ちるテスト、よく出会います。なので、個人的にとてもぐっとくるお話でした。
途中、flaskyを擬似体験してみよう、のところで、声色を変えた一人二役がはじまりとてもたのしかったですし、これよくあることだ・・・と身につまされました。
flaskyという単語も、はじめて聞きました。

  • テスト自動化におけるflaskyとは
    • 同じテストコードで成功と失敗が観測できるテスト
    • 「不安定なテスト」ではなく「不安定なテスト結果」
      • テストコードだけが悪いわけではない
        • 外部要因(サーバ遅延、ネットワーク遅延、システム負荷etc)
  • なぜ自動テストは失敗するのか?
    • テスト対象が期待動作、期待値と外れている
    • テストコードが誤っている
    • テストケースに書いていないことが起きる
  • flaskyの落とし穴
    • Failすることに慣れてしまう
    • PassさせてOKにしたい誘惑
    • flaskyの調査で時間を無駄にしている
  • 取り組んでいる工夫
    • flaskyが発生した時のルールを決める(別のビルドで2回Flaskyが発生したら開発チームに確認etc)
    • 怪しいところに時間計測ロジックを埋め込んでみる
    • 実行記録を調査結果付きで残す
      • flaskyの原因、フィルタ用のタグを残す
  • 推しの本
    • http://www.amazon.co.jp/dp/4873118166 www.amazon.co.jp
    • 全員に読んで欲しい章
      • 1章:テストのピラミッド
      • 8章:ピラミッドを登る
    • 8.6 不安定なテストの扱い方
      • テストを書き直す
      • テストをピラミッドの下の層へ移動させる
      • 価値のないテストとみなし、テストを止める
  • あなたの自動テストは信用できますか?

中の人が語るテスト自動化SaaSのCS - カスタマーサポート、そしてサクセスへ - / 堀 明子さん

今年8月にAutifyに転職された、堀さんの講演です。今回が初登壇とのこと。
自動テストの本質的な課題はツールを使っても共通で存在し、どうツールを活用してサービスを自動テストに載せていくかがポイントになるという話には、その通りだな。。。と説得力がありました。

  • E2Eテストの自動化、してますか?
  • E2Eテスト、自動化してみていかがですか?
  • 自動化したE2Eテスト、順調に回り続けていますか?
  • 期待されることが多いE2Eテスト
  • Autifyは、テスト作成が直感的でわかりやすい
    • ユーザのPCからテスト対象にアクセスすると、テストシナリオがAutifyに保存されていく
    • テスト対象アプリの変化も、軽微なものならシナリオが自動で追随してくれる
  • サービス提供者側の目線だと、中の人たちががんばります!
    • チャットからいつでもお問い合わせください
    • チャットからはじまる問い合わせの旅
  • テストが予期せぬ失敗をした、が一番よくある問い合わせ
    • サポート内容の多くを占める
    • 繰り返しテストすると落ちてしまう場合、冪等性が担保できてなかったりとか
  • 問題の切り分け、再現自体の難しさ
    • 解決できたときの喜びはひとしお
  • Autifyのようなサービスを使っても、自動テストの本質的な課題は共通で存在
    • SaaSの利用は一つの手段
    • サービスをいかに活用して自動テストに載せていくかが鍵

おわりに

知らないツール、技法の話がいろいろ出てきたので、勉強になりました。
モデルベーステストなんて全然知らなかったです・・。
そして、テスト技法、おざなりにしてきたので勉強したいと思いました。
テストを書くのは好きなのですが、必要十分なテストケースを洗い出せていなくて、不要なテストまで書いてしまっている気がします。

この日のお話の中では、個人的に、flaskyなテストへの向き合い方の話がぐっときました。

そして前職で一時期ご一緒させていただいていた堀さん、変わらず活躍されていて(初登壇とは思えない落ち着いたわかりやすい発表でした)、たのしそうに働いてらっしゃるのを見れて、とてもうれしかったです。