音声書き起こし
1. オープニング
Guest
こんにちは
Guest
こんにちは
Guest
え。それでは、今週もわいインサイドやっていきましょう。
Guest
UIT INSIDEは、ユーザーインターフェースと、テクノロジーを愛する開発者のためのポットキャストです。
Guest
最新のウェブ標準はもちろん開発、フレームワークの変遷や
Guest
uyxに関することまで、様々なフロントエンドの情報をキャッチアップできるポットキャストをお送りしております。
Guest
twitterでの拍手タグはシャープuyt、アンダースコアインスタイド、
Guest
エピソードのご意見やご感想、リクエストなどもぜひぜひご気軽にツイートしてください。
Guest
今回はですねパーソナリティは私、玉田とえ、同じく、ティ所属の藤井さんを今回はお招きしてお送りしたいと思います。
Guest
それでは藤井さんよろしくお願いします
Guest
はい、よろしくお願いします。
2. 自己紹介
Guest
それでは、今回itインサイド、初参加の藤井さんにと自己紹介をしてもらいたいですよろしいでしょうか。
Guest
はい、UIT室に所属しています藤井と申しますと、私は2016年の8月にえ入社しまして、それ以来とま主に、
Guest
LINE内で動作する。ファミリーサービスのウェブフロントエンドの開発に携わってきました。
Guest
で、それ以外にもとラインアップのcmsの開発なども開発に携わっています。はい、よろしくお願いします
Guest
はい、よろしくお願いします。今日と藤井さんにえ、お伺いするビジュアルレグレッション
3. 「LINEのお年玉」での導入事例
Guest
のテーマについて、ちょっとお話しいただきたいと思います。と、藤井さんはえ、去年の年末にとLINEのお年玉のまあ、プロジェクトに携わっておりましてと、そのUIT作業をされておりました。
Guest
でと、まあ、その内容はとエンジニアブログにも結構詳しく紹介されているんですけども、
Guest
改めて、そのLINEのお年玉のえー内容について、ちょっとご紹介いただけないでしょうか。
Guest
はい、ラインのお年玉は、毎年年末年始に行なわれてるキャンペーンでして、今年で4年目の実施となります。
Guest
うっとま、案件の特徴としては、毎年非常にタイトなスケジュールの中でと、スピードを重視した開発が求められるような案件となっています。
Guest
あ、じゃ結構割とそうですね、結構LINEとしては、珍しく、すごい締め切りがもう絶対動かすですね。
Guest
あの、もう1月1日のはリスがもう確定してるので、そうです。まあ、もう何が何でもそこに間に合わせないといけない、はいていうような案件になってますね。はい、
Guest
結構じゃあ、スピード重視で開発されているっていうことですね。そう
Guest
ですね、
Guest
はい、結構なんかあのスポット的な。あの、まあ案件になるんで、コードのリダビリティよりも、まあ、あのスピードを重視した。はい、開発をま毎年してるっていうような感じになってます。はい、
Guest
なるほど
Guest
で、そのLINEのお年玉のまあ、開発を進めていく上で、今年の開発では、ビジュアルレクレッションのテストを導入されたということなんで
Guest
ですけどもままず、ビジュアルリグレッションのテストについて、ちょっと紹介してもらえないでしょ。
Guest
はいと、ビジュアルレグレーションテストっていうのはとま、画像をベースとしたテスト手法でして、あらかじめあの正解となる画像を用意しておいて、
Guest
それと、実際にアプリケーションを実行した際の
Guest
えと、スナップショットを撮影して、ま。それら2つの画像の画像を、ピクセル単位で、まあの色情報を比較していくっていうものになります。
Guest
そのピクの情報に差分があるとま、それをあの視覚的に分かり易い形で、まどこに差分があるのかっていうのは、分かり易い形で、
Guest
まエラーとして出力してくれるみたいなテストになっています。
Guest
そうですね、ビジュアル、リグレッション、
Guest
結構その色差っていうのをちょっとま言葉だとわかりづらいかもしれないんですけど、もま、画像はあの後で小のにはい
Guest
として、2つのえ、パターンの画像を比較して、まあ、差分があったところをこう赤く強調するみたいな感じで、今回は
Guest
見れるっていう形になってるんです。そうですね、じゃ、結構なんて言うんですかね、なんなんかこのスピード重視っていう。はい、そうですな。開発とこのビジュアル、レグレーションテスト。結構
Guest
矛盾してるなって最初思ったんですけど、なんか導入を決めたきっかけみたいなのってあったりしますか。
Guest
そうですね、一応ま導入の経緯としては、あのこの案件の特徴としては、あの、ほんとにもうリリース直前まで、あのいつも使用の変更とか、あと、デザインの変更というのが行われていて、
Guest
で、まあ、どこかあの行動を修正するたんびにま、他のページでまデグれが起きてないかっていうのをま確認する必要があると思うんですけど、他のページっていうのが、そのランディングページのパターンていうのがまも凄い多くてですね。
Guest
あのま、今年だのケースだと多分数十ぐらいランディングページの
Guest
パターンというのがあって、まあ、去年とかだともう100ぐらいあったんですね。で、それをま全て目視で確認するっていうのは、ちょっと現実的じゃないっていう。まあ、そういう
Guest
事情があって、その辺のま確認作業をま自動化したいっていうのが、元々のモチベーションでした。はい、
Guest
ああ、なるほど、はいはいはいま、それはそうですよね。なんか、
Guest
結構そのページ数が多いっていうところと、なおかつ時間が限られてるっていうことは、
Guest
やっぱりこういうテストをまあ、自動化というか、まあテストを導入するっていうことがま、大事
Guest
日だった。はい、そうですね、
Guest
はい、じゃ、結構割と時間の短縮とかみたいなのは達成できたんですかね。リアルレクレーションテストでそう
Guest
ですね、ま目しで、その数十パターンを毎回はい、確認しなくて済んだんで、
Guest
ま、そこはあのまあ時間の短縮につながりましたし、まあ、実際にその自動化、あのテストを自動化したことによって、まああのデフレを発見できたっていうのもあったので、ま、結構効果はあったのかなと思っています。はい、
Guest
あ、じゃあもう普通に導入して、時間が短縮できた
Guest
そうですね。はい、
Guest
うん、なるほど、ありがとうございます。
4. 「LINE公式アカウント」での利用例
Guest
藤井さんのこのビジュアルレグレッションの試みについて、実は私もあの、その開発途中はとの認知していなくて、そのエンジニアブログを読んで、初めて私も知ったんですけども、うんうん。実はその
Guest
タイミングで、僕も全く違うプロジェクトなんですけれども、似たような。そのビジュアル、レグレーションテストみたいなのを手元で開発していて、結構同じことをやってたっていう。
Guest
そうですね、あの、隣に座ってるけど、全然同じことをやってることに気づかずに、
Guest
数ヶ月間作業していたっていう、そんな感じでしたね。そうなんですね、
Guest
あの、私、藤井さんの隣の席なんですけれども、その隣に座ってたのに、全然
Guest
やってる子と同じなのに、全く把握してなかったっていう。そうですね、ちょっとちょっと反省しましたね、話をこれか
Guest
そうですね、まあ、仲が悪いってわけじゃないんですけど、まあそんな感じでしたね。使ってるライブやりとかも全く同じだったので、
Guest
結構開発プロジェクトが違うっていうこともあって、なかなかきっかけがなかったんですけど、そうですね、まあ、はい
Guest
で僕のやったことっていうのをあ、軽く紹介しますと、僕も
Guest
そのビジュアルレリューションを導入した経緯としては、LINEの公式アカウントのcmsを開発してるんですけど、もまそこで使用しているアイコンを。全体的にそのデザインをリファインするという
Guest
プロジェクトを以前進めていまして、ま、そこで、アイコンをこう一気に変えた時にどうなるかっていうのを確認するっていう。まあ、作業が必要になりました。
Guest
で、結構そのページ数もまあ100はあるはずなので、結構
Guest
なんて言うんですかね。まあ、全く同じ目視で確認するっていうのがまあかなりうん、大変っていう。まあ、課題があったので、私もまあ同じような感じでこう。ビジュアルブレーション
Guest
のまあ、コードを書いてま2つのスナップショットを比較するっていうことをやりました。で、ですね、ま、
Guest
結構LINEのお年玉だと、そのテスト形式でま、そのなんて言うんすかね。行動の変更によって、こう比較するみたいなことを
Guest
やっていたんですけども、私の場合だと、あそこまでもうほんとに手元で確認するよみたいな感じ
Guest
じて開発していて、そのcliでまパペッターをキラして、画像をまぜこかえへページを確認して、で、スクリーンショット撮るだけっていううん、ソースコードを書きました。
Guest
で、あの藤井さんのそのお年玉のランディングページのスナップショットとは、チョット違っていて、例えばこのページにたどり着くためには、このボタンをクリックして、このフォームに
Guest
テキスト入力してクリックしないといけないみたいな。こううん、普通ステップ
Guest
踏んで行かないとたどり着けないようなページとかがあったりしたので。なるほど、ま、そういったものをなんて言うんですかね。やるで
Guest
こう定義してこう人間がこう、そのこのボタンをクリックしてくださいっていうこう指示を出せるような形で、ま、今回はちょっと省力化を図ったっていう感じですね。
Guest
なるほど、なんか、そのページ遷移する際に、なんかその数秒待みたいなま、そういう処理とかも入れたりしてた感じですかね。とが更新される
Guest
そうま、もうちょっと。その内容を具体的に示すと、各そのページのま、アクセス時にcssセレクター形式で、まこのボタンをクリックみたいなっていうのをこう
Guest
やで、列挙して、はいはいでで。まあ、スナップショットを取るっていう感じになっていて、各クリックごとに3秒ぐらい待ってこううん、うん、うん、スナップショットを取るみたいな。
Guest
なるほど、
Guest
感じにしましたね。はいはい、なんで、結構最終的にスナップショット数200ぐらいは
Guest
だと思うんですけど、もま、それをこう後で、その人間が画像を確認するだけでま変化を確認するっていうことができるようになった。うんていう。
Guest
そうですね、私も結構これで助かりましたね。
Guest
うん、
Guest
そうですよ、
5. ビジュアルレグレッションテストを通してわかった課題
Guest
この私たち2人ともその同じ時期にそのビジュアル、リグレッションテストを実装する。え、適応するっていうことを
Guest
やったんですけれども、まあ、多分そのいいところだけではなくて、結構辛いところも
Guest
お互いあったんじゃないかなっていうところもあると思うんで、ちょっとそのあたりをこうは紹介していきたいなと思います。はい、で、
Guest
まずそうですね、私が結構課題だなと思ったのは、実行環境が
Guest
今のところまパペッタパペティアなので、クロミウムが基本的な環境みたいな感じ。
Guest
うんなってしまっているっていうところですね、これは、確かに藤井さんも同じですか。そう
Guest
ですね、これそうですね、私もクロミウムでやってたんですけども、確かになんかそのクロスブラウザーでこうテストができると、まあ結構
Guest
あのまテストでカバーできる範囲が広くなって、まあ、うん、いいなっていうのは、まあ確かに自分も感じました。はい、
Guest
そうですね、特にLINEのお年玉だと、ま、そもそもLINEのアプリないブラザー。
Guest
そうですね、
Guest
そこで確認したいっていう気持ちはそうですね、ただ、その今最近だとプレイライトっていう
Guest
ライブやりがありまして、これとかだと、実はルーキットとfirefoxにも対応してるという。
Guest
ああ、なるほど、これを使えば。じゃあ一応クロスブラウザンテストができるって感じなんですね。
Guest
ああ、そうですそうですあのパピティア確かァイfoxに対応し始めていて、ええ、結構
Guest
割と競合みたいな感じで、うん、お互いを高めていってほしいという。
Guest
そうですね、どんどん良くなってもらえるといいですね。はい、そうそう
Guest
なんで、1回プレイライトを使って書いてみるのもいいかもしれない。
Guest
うん、そうですね、1回ちょっと試しに書いてみて、どっちがいいのかっていうのを確認してみるのがいいかもしれないですね、
Guest
ブログにしてください、
Guest
時間があれば
Guest
お願いします。はいはい、もう1つはテストの実行時間がこうどんどん
Guest
増えていってしまうっていう問題も結構深刻だなと思いました。うん、その私もそのcmsのスナップショットを全て取るのを待つために、結構な10分も待ったりとか。しかも、手元のpcで
Guest
うん動かしていたので、すごいめっちゃファンが
Guest
まうるさかった、
Guest
うるさかったみたいな。はい、なんで、結構そ。ページ数に比例して、時間が増えるっていうのは、かなり困ることではあるんですけど、こここも
Guest
困りましたよね。富士山も。
Guest
はい、私もこれは結構なんか最初の段階から結構あの気にしていて、
Guest
でま。確かにそのテストケースの数が増えると、ま、それに比例して、どんどんあのテストの実行時間ていうのが
Guest
どんどん膨らんでしまうんで。あのま、今回あのLINEのお年玉では、あのci上でテスト
Guest
実行してたんですけども、テストの実行できるだけあの並列化して実行できるように、あの試合上で
Guest
まあのまジョブを幾つかに分けてま。できるだけ並列に実行するようにして、まあ、少しでもあのテスト時間
Guest
を短縮するっていうことをしてました。はい、
Guest
あ、ですよね、結構もう数で殴るっていうか、そうですね、
Guest
あ、そうですね、ま、ジョブをたくさん作るみたいな
Guest
感じでやってました。なんか、た田さんの場合だとあれですよね。なんか、セットタイムアウトとか入れて、3秒間待つみたいなのを結構
Guest
そうそうです。そうですや、
Guest
それも結構大きな問題でして、ボタンを押してから、すぐに遷移できるとは限らなくて、結構うん、待たないといけなかったり。
Guest
しかも、それはそのタイミングによって、なんかこうまたり、またなかったりみたいな感じなので、なかなかこう時間を読むのが
Guest
難しかったりしてま。結局こう長めに見積もって、全部賛同みたいなん
Guest
たので、
Guest
そういう行動がどんどん増えると結構きついですよね。
Guest
そう。しかも、このタイミングで、次のステップ実行みたいなのって、なかなか外からは分かりづらいところなので、うん、結構
Guest
困りましたね。うん、
Guest
なんか私もあのまあちょっと似たような話で。あの、
Guest
まあ、今回あのLINEのお年玉では、あくまで、そのランニングページのテストしかしてなかったんで、またまさんが今おしゃれたみたいに、なんかある。エレメントクリック
Guest
した時に、まそのドムの更新を待つために、なんかセットタイムアウト3秒みたいな。なんか、そういう行動はま書いてなかったんですけど、も。はい、そのランディングページ
Guest
が表示されたタイミングっていうのを検知する必要があって、それをま元々あのたまさんがおっしゃってたみたいに、セットタイムアウトでやってたんですね。
Guest
ただ、なんかあの後でちょっと調べて分かったんですけど、なんか、ペパティアのナビゲーションするapaいくつかあると思うんですけど、
Guest
まああいうAPIのオプションに、ウェイトアンティルっていうま、オプションを指定することが
Guest
できて、ああ、はいはいで、そこになんかあのまあブラウザが発火する。なんか、ドムコンテトローデットとかま、ロードみたいなイベントを指定することができるんですけど、
Guest
ま、なんかそれ以外にもあのまいくつか指定できるものがあって。で、今回、あのLINEのお年玉では、ネットワークアイドル0っていうオプションを指定してました。
Guest
で、これは何かって言うと、あのま、500ミリ秒の間と、ネットワークコネクションが1つもなかった場合に、おナビゲーションを終了したと見なすみ
Guest
みたいなま、そういうオプションなんですけど、ま、これを指定するしたんですね。で、一応数か月間これで運用したんですけど、ま、ここが原因でテストが失敗したことはま一度もなかったんで、ま、結構うまく運用できたかなと思ってます。はい、
Guest
ああ、なるほどうんあ、そっか。ネットワークキーだと、もう普通にそのネットワークアイドル0。そうですね、はい、これしかも500ミリ秒待ってくれる
Guest
そうです。そうです、
Guest
これ以外にも、なんか他にもいくつかあって、なんかなんだっけな。ネットワークアイドルなんか、1とか2とかっていうのがあって、それだと、500ミリ秒の間にネットワークコネクションがなんか
Guest
1つか2つになったら、ナビゲーションを終了したとみなすみたいな、そういうオプションもなんかあるっぽかったです。はい、
Guest
あ、それは知らなかった
Guest
そうですね、普通にネットワークを待つっていうことが、多分大半ですよね、普通にこれで
Guest
まそうですよね、はいた田さんのケース、もしかしたらこれでいけるのかもしれないですね。わかんないですけど、
Guest
いや、いけそうな気が。
Guest
おお、ありがとうございますはい、あとは、ボタンをその今回クリックするみたいな指定を
Guest
してあげてたと思うんですけども、ちょっとそのやのファイルとかを見てもらうと、結構そのセレクターが
Guest
うんの内容がひどいことになっていて、うん、このこの要素の何番目の隣の隣のこれの子孫みたいな、そういう
Guest
感じで、割となんとかしたいなっていう気持ちがありましたね。結構確かになんていうん、
Guest
結構ドームの構造が変わっちゃうと、なんかセレクター効かなくなっちゃいます。あ、
Guest
そうそうなんですよ、すごい変化にすごい弱くなってしまうっていう、すごい大問題が起こってしまう
Guest
で、もう1つ結構今ならではの理由だと、その確かcssインジェースとかで、結構くらcssのクラスを
Guest
次で指定するっていうことがなくなり、つつあったり、
Guest
うんするんですよね。結構そこがそこだと、例えば、まあ普通に人間がこうクラス名押してしてあげれば、まあ、
Guest
こう。このドム要素っていうのが指定できたのが、そのほんとにそのcs
Guest
スンジェースでこう作られた自動的に作られ、たまクラス名とか、
Guest
うん、トップスみたいなのを指定するっていうことになってしまうので、うん、ほんとに何かのきっかけで構造が変わったりとかっていう
Guest
だけで、全てそのステージが無駄になってしまうみたいな。うん、難しさもなんか起こりそうだなっていう気持ちが確かに
Guest
ありました。
Guest
なんか、テスト用のなんかidとかクラスその専用のクラスで振るとか、なんかそういう感じ。
Guest
ああ、そうそうなってしまい、やるか、
Guest
それ以外にもなんかあのテパティアの機能で、あのはいなんだっけ。
Guest
まあ、なんかその画面上のなんか座標を指定して、そこにあるあの要素をまくり、あ、はいはみたいな。なんか、そういうことも一応できるらしいんですけど、
Guest
ま、それはそれでなんかそのなんて言うんすかね。ページのデザインとか変わってしまうと、ま、テストを更新しないといけないんで。
Guest
まあ、そうですね、それもそれであんまりメンテナンス性が良くないんで、超一端な感じはありますね。
Guest
それ、それを全然ありだとは思うんですけど、結構割と
Guest
なんて言うんですかね。思想的な問題もありそうだなっていう、なんか、ほんとにその見た目だけのテストなら、ここに僕のボタンがあるはずだっていうことは
Guest
わかっているはずですので、うん、そのことも座標で指定してあげるみたいな戦略もわりなのかも。
Guest
うん、
Guest
うん、うん、
Guest
そうですね、一応なんかそういうアプローチも一応ペパチアは提供して、はいはいようですね。はい
Guest
で、あとあれですね、少し調べたんですけれども、まあ、そういう私がやってたそのクラスへというか、まあ、
Guest
ドムを指定する方式で、こううまいことを外から指定してあげられないかなっていうのを調べていたんですけど、も
Guest
ま、例えば、サイプレスっていうライブラリがありまして、うん、サイプレスもすごい優秀なそのいいテストのライブラリなんですけども、そこも
Guest
結構そのベストプラクティスっていうページ
Guest
がありまして、そこで、ドムをこううまい具合に指定する方法みたいなのを紹介されていまして。え、あそこを見ると、やっぱりその名前をつけてあげてくださいっていう
Guest
うん、感じになってますね。うん。ただ、そのクラス名ではなくて、サイプレスの場合だと、
Guest
データcyっていうプロパティをこう与えやってあげるみたいなのが、まあ良いですよ。っていううんことが
Guest
指定されてますね。
Guest
うん、
Guest
テストで使うためのものに、クラスの名前をつけてるっていうのも、まあ、確かに
Guest
そ。そのためだけにクラスが増えるっていうのもなんか
Guest
うん、そうですね。まあ、なんかそういうそういうところ、そういう現場もなんか今まで見たことあるんですけど、そうですね。確かに
Guest
うん、
Guest
まあ、確かにデータアトリミュートで指定してあげるっていうのが、なんか良さそうな感じは確かにありますね。うん、
Guest
まあ、あとはそうですね、結構なんかなんかidを管理するのとか、結構難しかったりしそうですけどね。なんか、その
Guest
あ、頭でると、そのいろんなところに振ってくと、そのからないようにしないといけないんで、あ、その辺どうやってるのかなって思いますけど、
Guest
それはかなり困難な。
Guest
うん、なんか、どういうルールでそういうアトリビトをつけていくのか、ちょっと気になりますね。
Guest
うん、それはまたあれですかね。デムに回避するデムみたいな、メムルールみたいな自動でつけてほしいですね。そ、
Guest
確かになんかちょっと大変そう。
Guest
あ、他に藤井さんはなんかこう問題点みたいなのってありました。
Guest
はい、まいくつか問題があってですね。
Guest
まあ、そのビジャリレーションテストを実施するにあたって、まあ、そのテストが難しかったuyっていうのがまありまして
Guest
ま、それは何かって言うと、お年玉のあのダッシュボードなんですけど、も
Guest
はい
Guest
となんで難しかったかっていうと、まあ、あのダッシュボードにはあのアニメーションを使っていて、
Guest
で、ああ、ハイションがそのま実行時に、そのスナップショットを取るタイミングで、そのま、アニメーションで、こう動いてる画像があると思うんですけど、あの画像が表示されている位置ってのが毎回微妙に異なってしまって、
Guest
で、それで、まあそこが差分になって、常にテストがフェールしてしまうっていう問題がありました。
Guest
なので、まあ結構その実行時にま、毎回その実行結果が変わってしまうような。uiはちょっと。ビジュアル、リュエーションテストには向いてないかなっていうのは、あの思いました。
Guest
もしかしたら、そのそうですね、そういうなんか、あの変化が必ず毎回変化が起きてしまうような部分だけこう。なんか、テスト対象から除外できるみたいな
Guest
ことができると、まあいいのかなと思うんですけど。ああ、多分今のところそういうことは多分多分できないと思います。うん、
Guest
はい、そうですね、まあ、確かにあのアニメーション
Guest
ああ、そっか。でも、アニメーションってあれですよね。そのトランジション的なアニメーションではなくて、常にこう。はい、キャラクターがあ、そうです。そうです、そうです、はいはいはいはい、そう
Guest
なんすよ、ディションだとそうですね、多分数秒待てばあの止まってくれるんで、それでなんとかなると思うんですけど、もうずっと動き続
Guest
ものですね、それは無理なんじゃないですか、
Guest
そうなんですよ、だから、なんかそういうなんて言うんですか。そういう動いてる部分だけ、こう除外してくれるみたいな。あ、はいはい、なんかそういうのがあるといいなと思うんです。
Guest
はい、で、もう1つ難しかったところがあって、あのはいま当初あれですね。
Guest
その正解のスナップショットを取る環境とま、実際に実行結果のスナップショットを取る環境っていうのが一致しなかったのはいですね。はいで、そういう環境で、テストを行うと、まあ何が起きたかっていうと、
Guest
ままず1つはos間のそのシステムフォンとの違いによって、その文字のところで微妙に差分が出てしまうっていう問題が1つはいありました。
Guest
で、もう1個はまそのブラウザの改造度の違いによって、まあ、テストがフェールしてしまうっていうものがあったんで、まあ、そのテストを実施するときは、できるだけその
Guest
あの実行環境とま正解の画像を取る環境っていうのは、揃えて取らないといけないなっていうのは、ま1つ気づき
Guest
ありましたね。はい、結構それはその知り合いの環境がバラバラだったっていう感じですか。それとも、あ、
Guest
そうですね、元々は自分のローカルpc。あ、あのmac使ってはいるんですけど、マック上で正解画像を取って
Guest
で、その正解画像と後は実行結果というのはci上で。実行した結果だったんですね。はいで、そこでそのosがま違ってるんで、あのま、システムフォントの違いでま差分が出てしま
Guest
あります。そうですね、ま、極力合わせるしかない。
Guest
うん、そうですね、なんで。まあ、途中からはその全部その正解画像を取るのもま試合上で、
Guest
正解画像を取るっていう風なフローを作ってま、そうやって運用するようにしましたね。
Guest
できるだけ、まあ、ユーザーの環境に合わせたっていうソースが求められる結構
Guest
で、試合所で用意するっていうのも、それはそれで、なんか本末店舗というか、なかなかそのうん、結構
Guest
大変かもですね。うん
6. E2Eテストの今後
Guest
ま結構ま色々とこうビジュアルエッションテスト記録と一位テストの
Guest
ま問題っていうか、ま、色々と課題はあって、なかなかこう。普通のユニットテストと比べて、あんまり大規模に採用されてるってことは、あんまりなかったり
Guest
するところだとは思うんですけれどもま、今後なんかもっとこう便利に活用していくみたいなのをやっていきたいなっていうのは、個人的には思っているんですよね。
Guest
で、結構割となんだかんだ言って、そのテストをこう用意して、環境を用意して、
Guest
で、このページのスナップショットっていうのを指定してあげてっていう一連の作業がすごくめんどくさいっていうのが、多分
Guest
正直なところなんじゃないかなと思っていて、結構パフィティアの登場によって、だいぶそこら辺とかは解消された感はあるんですけども。なんかもっとこう高レーヤーなスナップショットみたいなのがして、
Guest
してあげたらいいなっていうのは、
Guest
はいはい、
Guest
なんか私はそうですね、あの、まあ逆に結構なんかそのテスト書くのが大変っていう話だったと思うんですけど、なんか
Guest
あのまた分田村さんのケースだと結構そのナビゲーションがすごい多くてま、テストコードが結構大きかったのかなは思う。はいすけど、なんか私ぐらいのケースだと、まあ、あの、そのランディングページのスナップショットを取ってまその正解画像と比較するみたいな
Guest
ぐらいだとま、実際そのとブラウザを立ち上げて、まあ言われる。打ち込んでで、ページが表示されたら、そのスナップショットを撮影して、
Guest
正解画像と比較するみたいな。はいま、これぐらいの処理だとま。実際、その私が書いた行動量って、まあ10行以下ぐらいですよ。
Guest
だから、そうですよだから、すごいあの、まあコスパよくテストが書けるなっていう印象が。まあ、私は逆にあって、あ、はいありましたけどね。はい、
Guest
ま、ただた分たまさんみたいに結構複雑ななんてうんすか。なんか、その
Guest
ページの奥の奥の奥みたいな感じで行こうとすると、確かに結構大変なのかなっていう気はしますね。そのセレクターの問題もあるし、はい
Guest
いや。今回の例だと、多分、藤井さんのそのランディングページメインのまあ、プロジェクトだとかなりこう。
Guest
ピッタリと当てはまる
Guest
そうですね。そうですね、と思います。はいはい、
Guest
あとはうん、結構まテスト時間の問題にも根本的な問題かな
Guest
っていう、うん、ま、確かにって言ってま。それをやっぱり解決するためには、そういう並列化ですかね。
Guest
まただそうですね、あの、
Guest
なんていうか、最初のちょっとメリットを説明する部分で、あのちょっと漏れ漏れてたんですけど、結構ビジュアル、リグレーションテストの利点
Guest
てなんていうんですかね。通常のユニットテストだと、まあ、なんかそのページからそのドーム
Guest
を取得して、ま、そのドムのストリング取ってきて、で、その正解のストリングと比較するみたいなま、そういう結構部分的なテストになってしまうと思うんですけど、
Guest
あの、ビジュアルリグレーションテストって、そのページ全体をテスト対象にしてるんで、ま、結構幅広いことがテストできる
Guest
かなと思ってますね。ま、なんか、その通常のユニットテストだと、その見た目に関するテストとか、結構
Guest
書くの難しいと思う。はいすけど、ま、そういったところまでカバーできるんで、ま。1つのテストケースで、まかなりの多くのことが
Guest
テストできるんで、ま。テストケースの数自体も結構あのま、ユニットテストの数と比べると結構減るのかなっていう気はしてます。
Guest
あ、そうですよね、確かに
Guest
はい、あの、
Guest
なんかめんどくさいめんどくさいって僕、すごい言ってしまってましたけど、ユニットテストとかと比べると、確かにそう考えると
Guest
あれですよね。そのテスト実行時間の長大化よりも、断然そっちのメリットの方が
Guest
確かにそうですね。そうですね、なんか、そこが結構なんか、そのビジャビゲーションテストのいいところの1つかなって
Guest
ま。ちょっと最初にあの言うの忘れてたんですけど、はい、そうですね、その辺がメリットだと感じてますね。
Guest
あと、あれですよね、結構
Guest
テストってなんていうんですかね。なかなかこううん、理解をいづらいというか、結構開発者がこう把握していないと、難しいところとかもテストがあったりすると思うんですけど、そのユニットテストとかだと、
Guest
うん、
Guest
正直そのなんて言うんすかね。エンジニア以外でも、このページのま見た目を確認するみたいな、ある意味での分かりやすさみたいなのに、
Guest
そういう。なんか、そのテストでまそのページが出来上がったら、その自動的にテストが出来上がるみたいなのも、なんかその
Guest
割と利点というか、自動化できそうなところかもしれない。
Guest
なんか、そのページを作ったら、勝手にリフレッションテストのいます。テストスイートをポンと出してくれるみたいな。はいはい、はい、
Guest
確かになんかできそうですね、
Guest
なんかなんか誰か
Guest
そうですね、確かに結構理想的な感じですね。あの、ページを1個作るごとに、どんどんテストが自動的に書かれていくってや、
Guest
それは欲しいな。
Guest
そうなんか、そのページのスナップショットとって比較するみたいな。それぐらいのものだったら、全然自動的に作れそうですよね。そうですよね、
Guest
それぐらいてければ、何か他富士山とかもあったりしますか。
Guest
期待することで、
Guest
そうそうですね、なんかこう、今後はい、こうなってほしいみたいな。
Guest
そうですね、まあ、なんかさっきほどもあったんですけど、あの、まあ、クロスブラウザでこうテストができるようになると、まあ結構そのテスト範囲が広がって、まあいいかなと思いましたね。
Guest
あ、あ、そうですね、うん、はい、あ、これはあれですね。パベティアドプレイライトの今後に来たみたいな。
Guest
そうですね、はい、期待したいです
Guest
割とそのブラウザーだけではないかもしれないですね。結構この問題は、そのそれこそはそのiosかandroidかみたいな問題も
Guest
ありますし、そのフォントの問題とか、それを全部ですね。ひっくるめてやれると。
Guest
そうですね、
Guest
確かに、ほんとの問題はどうしても起きちゃいますよね。クロスブラウザーであると、微妙にこうほんとに違いが出て、フェイルしてしまうっていう問題が、多分、今今の今のものだと、多分そういう感じになってしまうんで、
Guest
その辺もちゃんと考慮できるようになってるといいですね。
Guest
は全てのユザ環境、windowsmacisandroid全部で
Guest
みたいな。そうですね、理想理想です。
Guest
ま、あとはなんかさっきも言ったんですけど、ま、そのアニメーションのあるところとか、結構あの現示典のビジアビゲーションテストはいて、どうしてもテストが難しいぶ
Guest
ありましたは、
Guest
なんか、その部分的にこうテスト対象から除外するみたいな。ま、そういうことができると結構いいなっていうのはありますかね。
Guest
そうですね、そこを機械的にできないかなとは思いますね。
Guest
まあ、なんか手でやってもいいかもしんないすけど、なんかこうわかんないですけど、座標ではいはい、なんか00からなんか何々まで
Guest
この部分。このエリアはアクセルの資格を行わないみたいな。なんか、そんな感じでもいいかなと思ってるんですけど、なんか、そんな感じの機能があれば、
Guest
そんななかなかアニメーション、マシマシみたいな。結構特集だとは思いますし、うん、この一部分だけみたいな感じ。
Guest
そうですね。
Guest
で、除外してあげれば十分加工。うん、確かにあ、はい、わかりました、ありがとうございます
7. クロージング
Guest
はい、というわけでえ。今回はビジュアルレエッションテストをテーマに
Guest
eテストのま、様々な課題や、今後の期待についてお送りしました。
Guest
私達UITのメンバーが所属するLINE株式会社では、このようなフロントエンドに関する議論を行っております。
Guest
今回のような、
Guest
まあ割と実務よりのテーマである他にも、社内勉強会での内容についてなどま、今後もテインサイトでどんどん発信していきたいと思います。
Guest
また、ポットキャストを通じて、ラインに興味を持たれましたら、カジュアル面談など
Guest
もお待ちしております。ぜひ、ページ、株のえ、リンクよりご連絡ください。それでは、また次回のエピソードでお会いしましょう。
Guest
それではゲストの藤井さん、ありがとうございました、
Guest
ありがとうございました。