$30 off During Our Annual Pro Sale. View Details »

Vueのテスト手法とVRTのススメ

unotovive
February 05, 2020

 Vueのテスト手法とVRTのススメ

Bonfire frontend#5の登壇資料です

unotovive

February 05, 2020
Tweet

More Decks by unotovive

Other Decks in Programming

Transcript

  1. Vueのテスト手法と

    VRTのすすめ
    Bonfire frontend#5
    おとべ(株式会社ゆめみ)

    View Slide

  2. 自己紹介させてください

    View Slide

  3. おとべです
    instagram
    twitter
    note
    github
    {

    ,

    ,

    ,

    ,

    } .com/unotovive

    View Slide

  4. おとべです
    ・フロントエンド

    ・デザイン

    ・ゆめみでバイトしてる大学

     生です。

    View Slide

  5. 本題

    View Slide

  6. テスト書いてますか?
    フロントエンドで

    View Slide

  7. テストについて初歩的な話
    今日は
    おすすめのVRテスト

    を話します

    View Slide

  8. そもそもテストいる?
    フロントエンドで

    View Slide

  9. 弊社のフロントエンドエンジニアSさん

    View Slide

  10. 場合による

    View Slide

  11. 重い
    案件が重い・実装が重い

    View Slide

  12. 案件の重さとテストの重さ
    ショボい案件
    単体

    テスト
    VR

    テスト
    E2E

    テスト

    View Slide

  13. 案件の重さとテストの重さ ショボい案件
    単体

    テスト
    VR

    テスト
    E2E

    テスト

    View Slide

  14. バランスが必要
    ショボい案件
    単体

    テスト

    View Slide

  15. バランスが必要
    デカくて

    ムズい

    案件
    単体

    テスト
    VR

    テスト
    E2E

    テスト

    View Slide

  16. バランスだけじゃ駄目
    でも

    View Slide

  17. どんなテストが必要か

    考えて取捨選択する

    View Slide

  18. どんなテストがあって

    どういう特徴で

    何に適しているのか

    View Slide

  19. Vueのテスト手法いろいろ
    テストを知る

    View Slide

  20. 単体テスト

    (コンポーネントテスト)

    View Slide

  21. どんなテスト?
    ・機能や関数、コンポーネントなどの小さい単位で行うテスト


    ・小さい単位なので軽く高速であるべき


    ・常に100%を目指すべき

    View Slide

  22. Vueでは?

    View Slide

  23. Vueの単体テスト
    ・内部の実装(関数など)にフォーカスしすぎない


    ・コンポーネントのインターフェースをテストする


    ・@vue/test-utilsを使ってコンポーネントをマウントする

    View Slide

  24. vue-test-utils

    View Slide

  25. ブラックボックス?
    Props Render
    Actions
    component
    computed filter
    methods

    View Slide

  26. ブラックボックス?
    Props Render
    Actions
    component
    computed filter
    methods
    入り口と出口だけを気にする

    View Slide

  27. https://www.youtube.com/watch?v=OIpfWTThrK8

    View Slide

  28. ブラックボックス内に

    子コンポーネントがある…

    View Slide

  29. 単体テストなので

    子コンポーネントを一緒に
    チェックとかはしたくない

    View Slide

  30. とか

    View Slide

  31. 子コンポーネントなので

    渡しているPropsを変えて

    テストしたい

    View Slide

  32. とか

    View Slide

  33. 子コンポーネントなので

    イベントが発行されている
    かをテストしたい

    View Slide

  34. とか

    View Slide

  35. 全部Vue Test Utilsで

    出来ます!!!

    View Slide

  36. 単体テストが適するところ
    ・ロジックが多い大型案件(自社サービスに多めな印象)


    ・権限周りとかで表示出し分けが複雑になってる所


    ・サイトと言うよりはアプリケーションと呼ばれるような物

    View Slide

  37. 単体テストが適さない所
    ・ペライチLP作ってください〜


    ・要るわけがない


    ・複雑でないミニマルなアプリケーション(バランスを見て)

    View Slide

  38. E2E Test

    (インテグレーションテスト)

    View Slide

  39. どんなテスト?
    ・実際にブラウザを通して一連の操作を行ってみるテスト


    ・ブラウザを通すしストーリーがあるので都度とても長い


    ・開発の終盤にQAチームとかが手動でやったりもする

    View Slide

  40. Vueでは?
    ・Vueと言うよりも出来てるアプリケーションで行うテスト


    ・そのためVue独自の何か、がある訳ではない


    ・正直なところ僕は大体QAチームに丸投げ

    View Slide

  41. ということで詳しいことは
    スキップ
    Seleniumとか使うみたい

    View Slide

  42. e2eテストが適するところ
    ・ 品質がとても大事な案件


    ・QAチームを通す予定が無いもの


    ・継続的に機能改良などを続けていく大型の案件
    ・ 品質がとても大事な案件


    ・QAチームを通す予定が無いもの


    ・継続的に機能改良などを続けていく大型の案件

    View Slide

  43. e2eテストが適さない所
    ・QAさんがいる   


    ・ある程度の信頼性が担保されてればまあ良い所

    View Slide

  44. Visual Regression Test

    (画像差分テスト)
    今日の推し

    View Slide

  45. Visual Regression Test

    (画像回帰テスト)
    みんな使って

    View Slide

  46. どんなテスト?
    ・今のスクショと前のスクショを比較してくれる 


    ・1pxのズレも見逃さない


    ・予期せぬスタイル崩れとかを予防できる!


    ・開いてスクショトルのでソコソコに重い+遅い

    View Slide

  47. こんなかんじ

    View Slide

  48. Vueでは?
    ・Storybookのストーリー単位で見れる(Reg-suit+storycap)


    ・PR時にCIで動作し、GitHubやSlackにレポートを送信


    ・僕の事を救ってくれたテストランキング第一位

    View Slide

  49. Storybook
    ・ コンポーネント単位でUIを確認できる


    ・デザイナーとの疎通などが楽になる


    ・コンポーネントカタログ的な使い方ができる

    View Slide

  50. Storybook

    View Slide

  51. View Slide

  52. Reg-suit
    ・「よしなに」VRTをやってくれる


    ・レポートをS3とかに上げて自動共有


    ・ドキュメントがとても充実してる

    View Slide

  53. View Slide

  54. VueでVRTを使ってみる
    超かんたん

    View Slide

  55. カンタン3STEP
    1.Storybookを入れて設定する


    2.Reg-suitとStorycapを入れて設定


    3.CIrcleCIの設定を書く(CIなら何でもいいけど)

    View Slide

  56. これだけ!

    View Slide

  57. せっかくなのでTips:
    ・CIで動かすDockerは公式のイメージを使うとイイ


    ・日本語の表示はDockerにフォントのインストールが必要

    View Slide

  58. ほかのテストと違って

    Storyさえ書いてれば良い

    View Slide

  59. VRTが適するところ
    ・中規模以上のアプリケーション


    ・大量にコンポーネント分けしてる場合


    ・新規Joinのメンバーが来たりする場合

    View Slide

  60. VRTが適さない所
    ・さっさと作って終わり!メンテも改善も無し!みたいなの


    ・単一画面とかコンポーネント分けがされてない所(無くても


    ・PRを眺めただで関係ない所のCSSの問題が見抜ける神がいる

    View Slide

  61. まとめ
    テストの種類が分かったので

    View Slide

  62. バランスが大事
    テストを実装するかどうかは

    View Slide

  63. 取捨選択をする
    テストの種類が分かったので

    View Slide

  64. Unit

    テスト
    VR

    テスト
    E2E

    テスト
    規模やアプリケーションの形態に
    応じて使い分ける
    高い信頼性が必要なときや

    工数に余裕があるときにプラス
    選択の指標

    View Slide

  65. Vue Test Utilsを使っとけば

    間違いないしカンタン
    Vueのテストは

    View Slide

  66. VRTはフロントエンドとして

    とても良い選択肢
    認知度低めの

    View Slide

  67. 平和なエンジニアライフを

    目指しましょう
    何が必要か考えて

    View Slide

  68. 最後に宣伝

    View Slide

  69. Yumemi.vue#6

    2/2 (木)


    Roppongi.vue#5

    2/25 (火)

    View Slide

  70. おわり
    まさかり歓迎です。優しく投げて下さい。

    View Slide