勉強会の告知ページ
- 今回の記事では、この勉強会の中のQ&Aパネルディスカッションの内容を記載します。
- 同時通訳の人の言葉を基に書いているので、若干内容が不足している可能性があります。
進行方法
- 質問に対してパネリストが応えていく形式
- 質問は以下のサイトから投稿&投票が出来る
- 得票数が高い質問から行う
回答者
- 3名ともSeleniumのコミッターです。
- Jim Evans(以下、JIM)
- Marcus Merrell(以下、Marcus)
- Manoj Kumar(以下、Manoj)
SeleniumプロジェクトとAppiumプロジェクトは統合する予定はあるか?
JIM
- Noです。
- SeleniumプロジェクトはDesktopのアプリケーションの自動化。
- Appiumプロジェクトは目的が違うので統合する予定はない」
Marcus
A/Bテストの話にもあったように、今後テストの対象の質が変わってくるように思います。例えば確率的に振る舞うもののテストや、機械学習のように時系列で結果が変わってくるようなものなど。今後どうしたらこうしたテストを生産性高く行えるでしょうか?
Manoj
- 面白い質問です。
- A/B Testingで色々なこと、クレージーなこと、異なるDOCKERイメージでパフォーマンスで比較して…とか。
- Marcusさんもアナリティクスの話で、どちらのユーザーフローが良いのかなどを行っているが(どうですか?)。
Marcus
JIMさんのセッションで、Selenium 4でオープンソースではなくなるところがある、といったことをお話しされたような気がするのですが、少し聞きもらしてしまいました。その部分について、あらためて説明してもらえないでしょうか。
JIM
- Seleniumプロジェクトですが、これは常にOSSです。これは強い意向を持っている。
- ただし、コンポーネントの中のブラウザが提供しているものについては話が別。
- 例えばEdgeDriverとかはMicrosoftが開発しており、ソースコードをリリースする決定はなっていない」
JIMさんはアルバムをリリースしているとのことですが、どういう音楽のアルバムを出しましたか?
JIM
- いくつか出しました。ロックです。今はもう活動していませんが。
- 例えば、{複数のグループの名前、聞き漏らした…}などのアーティストと似たような音楽です。
Marcus
- 全然理解できませんね。
JIM
- じゃあ、リリースした音楽についてのリンクを送りますね。
ヘッドレスブラウザが登場した時はどう思いましたか?また、皆さんは使っていますか?
JIM
- もしもお客様が『WEBアプリの自動化したい』、そして『ヘッドレスブラウザもテストしたい』と言ってきた場合、『なぜなんですか?』と聞きたい。
- 『ヘッドレスブラウザだと速くなるんですか?』とも聞きたい。実は速くならないです。
- もう一つ聞く質問として、『あなた(JIMさんが相手にしているお客様)は、ヘッドレスブラウザを使ってサイトを訪問したことがありますか?』と。おそらく『NO』と答えるでしょう。
- なのでヘッドレスブラウザのテストをする必要がない。
- ただし、ヘッドレスブラウザが出てきた当時は各ブラウザにオプションが無かった。それが、つい最近変わった。
- 例えばGoogleChromeでヘッドレスモードが出来た。これはChromeの一部の機能であることを意味しているので、そうなると話が変わるかもしれない。Chromeのヘッドレスモードができたということなので。
- 私は日々のTestingで使う時、全く同じコード、振る舞いになった場合、それは魅力的になっていくと思う。
Manoj
- 私も同じ意見です。
Marcus
- これはメンテナンスも大変。競争性もないかもしれない。
JIM
- UI、ブラウザレベルの自動化の目的としては、実質的なセーフティ、あるいは予測するセーフティだと思っている。
- ヘッドレスブラウザを使うとき、使いやすいか?
司会者
- コレに対して反論がある方…。3人を前に反論しにくいですよね。
伊藤さん*1
- 海外で使っている事例はご存知ですか?
Marcus
- 私自身は知らない。
- 外資系の仕事もしていてが、ヘッドレスブラウザを推奨している立場でもあるが、辞めたほうが良いと伝えている。
海外の会社では、1つのWebサイトに対して幾つくらい自動テストを作りますか?
Marcus
- 一番成功した導入テストとしては、ユニークなIDが全てあった時。
- ナビゲーションが成功しているか、ちゃんとレンダリングしているかの確認で約1200通りやっていた。
- これが2009年の話。現在も同じソフトウェアでやっていたので、今でも使っていると思う。
Manoj
- アプリケーションも機能テストも含めて1万ぐらい(?)*2
- これが全体の20%にあたる。
- テストピラミッドに対しても明確な答えとして出ている。
JIM
- 大手のグローバルで行っている企業で働きましたが、ブラウザで適切に表示されているかどうかについては、どこかで線を引かないといけない。
- ブラウザレンダリングのバグも存在するので。それについては私たちは制御できない。
- 何を制御するのか。ファイルをダウンロードするのは制御できるもの。
- それでは無い部分などはブラウザベンタが制御するものかもしれない。
Marcus
- 例えばユニークなHTMLが表示される場合、ソフトウェアアーキテクトはhtmlをQA側にも提供して、シームレスにできるようにするとか。
- QAというのは、自分達の立場、リクエストを主張してこなかった。投げかけられるのを待っていた。
- QAがきちんとテストするということをQA側が主張すべき。
「独立したテストはどのように作っていたのか?」
Marcus
- このセッションはあと何時間ぐらいできますか?
司会者
- あと30分ぐらいですね。
Marcus
- この質問に対して語るには時間が短すぎますね(笑)
- 例えば私達はテンプレートとしてVelocityを使っている。これを用いて開発者が作成している。
- 一方で、私たち(QA)はPage Objectを作成した。
- コードをチェックインする前にPage Objectを作成する。
- それを用いて自動化で何か壊したか確認する。
- Simon Stewart*3は生成には否定的だった(?)*4。
JIM
- Page Objectという言葉に誤解がある。
- システムが何を生成するかというと、ページラッパーを生成する。その上に適切なPage Objectを作成すると。
- 開発者は簡単にこういったelementのロケーションを提供するならば、各人によって楽になる。
- このようにしてテストが壊れにくくするようにする。
Marcus
- ページのマップを生成するようにしている。
- テストが壊れてしまうかをチェックする。
- そうすれば、新しいマップを更新するだけになる。
- 通常のテストだとチェックインした1日後ぐらいで行う。
- 開発者が12ページのワークフローを作成していた時に、1日の終わりの前に自動化のコードを書き始めることができた。
- このようにして壊れにくいようにしていた。
JIM
- 私が作っていたものでは、壊れやすいロケーターを確認するような企業が無かった。
- 私がそこをチェックし、説明し、教育していた。
- コーディングの標準を守って欲しいが、そこを分析するまでは出来ていなかった。
- あまり自分がやるべきではないことに時間をかけるべきではない。
- Dave HaeffnerさんがSeleniumConfでデモしたツールがあるが、非常に素晴らしいソフトウェアで、静的分析をSeleniumで実施してくれる、Runtimeでレポートを出してくれる。
- 静的分析の結果、このコードは良いものである、ロケーターがしっかりある、というようなツールを作っている。
Marcus
- Locationという名前のツールである。
司会者
- ここらへんの話は掘り下げて聞きたい人が多いと思うので、それは懇親会などで聞ければと思います。
docker seleniumの internet explorerイメージはありますか?
Manoj
- あればいいですね
Marcus
- 本当ですね
Manoj
JIM
Manoj
イメージはすべてあるが、UNIXのコンテナベースなので。
Selenium IDEとSelenium Builderの今後の動向を知りたいです。ちょっとした作業の自動化に便利です。
JIM
- これは(JIMさんの発表の中で)少し話したと思うが、Selenium IDEはテクノロジーとしては古い。
- Selenium Builderはもっとモダンなものにしようとしていた。
- しかし残念ながら、ボランティアの仕事なので、中心で開発している人達はプレイバックのツールに興味がない。
- Selenium IDEやSelenium Builderはユースケースがあり便利なものだが、ライブラリを作る、テストコードを長期的にできることに意義がある。
- ソフトウェアテスト業界に25年以上に努めているが、コードを再生し、的確、適切、そして維持できるものは無かった。
- 例えば、これが壊れてしまったのでもう一度レコードするというのは、長期的に維持できないことを意味する。
- 学ぶ段階で使う。
- プロジェクトチームが認識していることとして、レコードツールが無くても使えるようになったと考えている。
- それには気付いているが、優先順位は高くない。
- とはいえ、これをどうやって前進させるかということは話している。去年のSelenium confの後に1日話し合った。
- コードが生まれてきているわけではない。
- ただし、現状のSelenium IDEのコードを見たが、このコードを現状のまま使い、さらに前進させることを見ているチームもいるが、まだ時期尚早。
- 具体的なスケジュールを言うことは出来ない。いつか。まあ、クリスマスまでにはあるでしょうね(笑)*5。
- 期待に添える答えではなかったと思う。それを欲していることも知っている。ただしタイミングとしては妥当ではない。
Marcus
- ドキュメンテーションやプレイバックツールや貢献できる人が現れれば良いですね。
画面の「見た目」のテストについて、有効なソリューションや、今後どうなっていくかについて意見はありますでしょうか。今はDOMの計算済みスタイルや画面のスクリーンショットをスナップショットとして保存し、正解として使うアプローチがあると思います。
JIM
- 長い間、ビジュアル系のテストをやってうまくいったこともあるが、比較がfuzzyであるべきところはfuzzyで、正確なところは正確であるべき。
- 誰かが『1px変えた』とかに対して上手くいったこともある。
- 適切なスクリーンショットを提供すると比較するオプションを提供しているツールがある。
- Mongoテスト(?)というものもある。残念ながらそのプロジェクトが今は存在していないが。
- また、スクリーンショットではSeleniumでは課題がある。
- そもそも『スクリーンショットを撮る』という行為がブラウザによって解釈が異なるからだ。
- あるブラウザでは現在の画面表示域のみを見せてくれる。別のブラウザではスクロールする部分も含めたフルページを見せてくれることもある。
- しかしフルページに意味はないと思っている。現在はスクロールし続けられるページがあるので。
- ちなみにW3Cではビジュアルポートという項目で定義している。どんどんW3Cに従ってしていると思う」
地獄に落ちろと思ったブラウザまたはそのバージョンは、今までにありましたか?
Marcus
- 時間が無いのでちゃんと答えられないね。(笑)
司会者
- それでは時間になってしまったので、このセッションはこれで終わりに…。
JIM
- Firefox48とIE7だと、(締めのコメントを司会者が話している間に)3人の中で合意できました。(笑)