Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ソフトウェアエンジニアと共にテストを作るチームでの、テストエンジニアの関わり方/ques14

i_echiuyan
November 15, 2019

 ソフトウェアエンジニアと共にテストを作るチームでの、テストエンジニアの関わり方/ques14

当日の発表資料です!

i_echiuyan

November 15, 2019
Tweet

More Decks by i_echiuyan

Other Decks in Technology

Transcript

  1. ソフトウェアエンジニアと共に
    テストを作るチームでの、
    テストエンジニアの関わり方
    2019/11/15 第14回Ques
    Agile Testの今
    株式会社ユーザベース 越中谷 郁美

    View full-size slide

  2. もくじ
    • 自己紹介
    • 開発チームの体制
    • プロジェクトチーム内での、テストエンジニアの役割
    • Product Teamでの、テストエンジニアの役割
    • 苦労したこと
    • 今後やっていきたいこと
    2
    2019/11/15 第14回Ques

    View full-size slide

  3. 自己紹介
    3
    2019/11/15 第14回Ques

    View full-size slide

  4. 名前 越中谷 郁美(@i_echiuyan)
    所属 株式会社ユーザベース
    SPEEDA事業
    ProductTeam/ProductDevelopmentUnit
    テストエンジニア
    コミュニティ活動 JaSST Tokyo実行委員
    WACATE実行委員
    Web Service QA Meeting運営
    4
    2019/11/15 第14回Ques

    View full-size slide

  5. 開発チームの体制
    5
    2019/11/15 第14回Ques

    View full-size slide

  6. ユーザベースは、
    「経済情報で、世界を変える」をミッションに、
    企業・業界情報プラットフォーム「SPEEDA」と、
    ソーシャル経済メディア「NewsPicks」などの
    サービスを運営しています。
    6
    私はここに所属
    2019/11/15 第14回Ques

    View full-size slide

  7. SPEEDAの開発組織
    ProductTeam
    PD Unit SRE Unit DS Unit Design Unit
    7
    QAやテストで独立した組織はない
    2019/11/15 第14回Ques

    View full-size slide

  8. SPEEDAの開発組織
    ProductTeam
    PD Unit SRE Unit DS Unit Design Unit
    8
    では、私(テストエンジニア)はどこに???
    2019/11/15 第14回Ques

    View full-size slide

  9. SPEEDAの開発組織
    ProductTeam
    PD Unit SRE Unit DS Unit Design Unit
    9
    2019/11/15 第14回Ques
    新規開発のUnitに所属

    View full-size slide

  10. プロジェクトチーム内
    での、
    テストエンジニアの
    役割
    10
    2019/11/15 第14回Ques

    View full-size slide

  11. テストエンジニアは、
    プロジェクトのどのタイミングから関わりはじめるのか?
    11
    2019/11/15 第14回Ques

    View full-size slide

  12. 12
    新規プロジェクトが立ち上がり、
    チームが動き始める時から参加していく
    (少人数スタートの場合には入らないことも)
    チームが発足した直後から
    インセプション
    デッキ作成
    ストーリ出し
    見積もり
    &
    計画
    開発
    ローンチ
    (公開)
    2019/11/15 第14回Ques

    View full-size slide

  13. プロジェクトは所属に閉じず、
    必要な人(役割)でチームが構成される
    13
    テストエンジニア
    SREエンジニア
    Sales&Marketing
    ソフトウェアエンジニア
    CustomerSuccess
    デザイナー
    2019/11/15 第14回Ques

    View full-size slide

  14. プロジェクトは所属に閉じず、
    必要な人(役割)でチームが構成される
    14
    テストエンジニア
    SREエンジニア
    Sales&Marketing
    ソフトウェアエンジニア
    CustomerSuccess
    デザイナー
    2019/11/15 第14回Ques
    ここは日々の業務を共に行う

    View full-size slide

  15. 開発チームの体制
    • チームにリーダーは存在しない
    • 自律的に動くチーム
    • 日々の業務や打合せの進行は全員が行う
    ローテーションにするなど特定の人に偏らない工夫
    • 5分悩むならわかる人にすぐ聞く
    15
    2019/11/15 第14回Ques

    View full-size slide

  16. プロジェクト初期から関ることで
    • 実装前にバグや抜け漏れを減らせ、仕様を充実させることができる
    • ストーリー出し(仕様決め)や計画段階で脳内テストする
    怪しい所、仕様が足りていない所を洗い出す
    • 細かいこと言うのでソフトウェアエンジニアには鬱陶しいかもしれない
    でも気になることは言う
    • ただし瞬発力が要るのがちょっとツライ
    • 一つ一つにかける時間が短く、長考はできない
    正直、後から思い出すことも多い
    2019/11/15 第14回Ques
    16

    View full-size slide

  17. 仕様(ふるまい)= テストケース
    「E2E自動テストの自然言語記述が仕様書である」という扱い
    仕様が古いまま自動テストを流すとエラーになる

    修正する

    常に更新され最新の状態の仕様書となる
    17
    2019/11/15 第14回Ques

    View full-size slide

  18. テストエンジニアも、ソフトウェアエンジニアも
    テストには関心を持つ
    18
    2019/11/15 第14回Ques

    View full-size slide

  19. 開発
    •1イテレーション1週間ごとのサイクル
    • プランニング
    • ストーリーごとの開発
    • リリース
    • 振り返り
    19
    2019/11/15 第14回Ques

    View full-size slide

  20. ストーリーごとの開発
    1. 着手するストーリーの仕様
    (ふるまい)を考える
    2. 自動テストを書く
    3. 自動テストを実行
    4. 実装
    5. リリース
    20
    2019/11/15 第14回Ques

    View full-size slide

  21. ストーリーごとの開発
    1. 着手するストーリーの仕様
    (ふるまい)を考える
    2. 自動テストを書く
    3. 自動テストを実行
    4. 実装
    5. リリース
    21
    ソフトウェアエンジニアと
    ペアまたはモブになって進める
    ここで実装するストーリーに対する
    仕様の認識が合っているか再確認する
    エラーになるケースはないか?
    見落としている条件はないか?
    想定したテストケースで本当に充分か?
    このテストケースでどこまでやるのか?
    2019/11/15 第14回Ques

    View full-size slide

  22. ストーリーごとの開発
    1. 着手するストーリーの仕様
    (ふるまい)を考える
    2. 自動テストを書く
    3. 自動テストを実行
    4. 実装
    5. リリース
    22
    実装する前にまずはテストケースを書く
    まずは自然言語で書き、
    その後対になるコードを書く
    自動テストの自然言語記述が仕様書とい
    う扱いになるため、
    見やすく、かつ的確な内容で書く
    2019/11/15 第14回Ques

    View full-size slide

  23. ストーリーごとの開発
    1. 着手するストーリーの仕様
    (ふるまい)を考える
    2. 自動テストを書く
    3. 自動テストを実行
    4. 実装
    5. リリース
    23
    作成したテストケースを実行する
    ここでは、
    「期待通りに失敗する」事を確認する
    2019/11/15 第14回Ques

    View full-size slide

  24. ストーリーごとの開発
    1. 着手するストーリーの仕様
    (ふるまい)を考える
    2. 自動テストを書く
    3. 自動テストを実行
    4. 実装
    5. リリース
    24
    ソフトウェアエンジニアに託す。。。
    (と言いつつ、たまーに傍らで見ているときも)
    2019/11/15 第14回Ques

    View full-size slide

  25. ストーリーごとの開発
    1. 着手するストーリーの仕様
    (ふるまい)を考える
    2. 自動テストを書く
    3. 自動テストを実行
    4. 実装
    5. リリース
    25
    リリースする直前に機能周辺や影響
    がありそうな範囲を手動で確認する
    探索的にテストする
    現状自動テストはブラウザ1種類のみ実装
    のため、クロスブラウザでの確認も行う
    2019/11/15 第14回Ques

    View full-size slide

  26. 実装より先に自動テストを書けるの???
    たとえば・・・
    「Webサイトのトップ画面で
    お知らせ情報のタイトルから、
    詳細情報が見える機能を作ろう」
    となった場合
    2019/11/15 第14回Ques
    26

    View full-size slide

  27. 実装より先に自動テストを書けるの???
    たとえば・・・
    プロジェクトチームで相談した結果、
    「見たいお知らせ情報をクリックすると
    ポップアップが表示され、
    詳細の情報が表示される」ように
    に実装しようと決めました
    2019/11/15 第14回Ques
    27

    View full-size slide

  28. 実装より先に自動テストを書けるの???
    たとえば・・・
    まずは、必要な仕様を考え
    日本語で書いていく
    (Gaugeというツールを
    Seleniumに連携させて使っている)
    2019/11/15 第14回Ques
    28

    View full-size slide

  29. 実装より先に自動テストを書けるの???
    たとえば・・・
    ・トップ画面から
    ・お知らせ「リリース情報」をクリックすると
    ・ポップアップが表示される
    2019/11/15 第14回Ques
    29

    View full-size slide

  30. 実装より先に自動テストを書けるの???
    たとえば・・・
    日本語で書いた仕様に対応させて
    E2Eの自動テストを書いていく
    (先ほどの例では、
    箇条書きごとにStepになる)
    「判定する要素を~~の様に実装する」と仮
    定してテストケースを実装する
    2019/11/15 第14回Ques
    30

    View full-size slide

  31. 実装より先に自動テストを書けるの???
    たとえば・・・
    実装したテストケースを実行してみて、
    エラーが正しく発生する(判定したいと思って
    いる箇所でエラーが起きる)ことを確認
    2019/11/15 第14回Ques
    31

    View full-size slide

  32. 自動テストをペアプロ/モブプロで書くこと
    • レビューが同時に行えている実感がある
    • 話しているときに抜けに気付くこともある
    • 意見を聞いてもらえることが嬉しい
    2019/11/15 第14回Ques
    32

    View full-size slide

  33. プロジェクトチーム内でのテストエンジニアの役割
    ソフトウェアエンジニアが
    見えていないところ/把握できていないところを減らすこと、
    視界を広げることでサービスの質向上に貢献する事が
    一つの役割だと思っている
    33
    2019/11/15 第14回Ques

    View full-size slide

  34. Product Teamでの
    テストエンジニアの
    役割
    34
    2019/11/15 第14回Ques

    View full-size slide

  35. 2つのリリースサイクル
    従来機能
    • リリースタイミングが週に1回
    • ProductTeam全体でリリース
    内容を統合して実行する
    • リリース前のチェックに
    およそ1.5日
    新規機能
    • リリースタイミングはいつでも
    • 各チームごと、自分たちの開発
    範囲で1ストーリーごとに実行す
    ることができる
    • リリース前チェックは数分から1時
    間の間。ストーリーの規模や複
    雑性による
    35
    2019/11/15 第14回Ques

    View full-size slide

  36. 既存機能のリリース
    • リリースのためのブランチ作成やデプロイはテストエンジニアが実施
    • 各チームのリリース内容の把握
    36
    2019/11/15 第14回Ques

    View full-size slide

  37. Product チームでのテストエンジニアの役割
    • プロジェクトチームを横断した視点を持つ
    • 他チームの開発に影響しないか?
    • 他チームの開発が自チームに影響しないか?
    • テストエンジニアと元QAチーム(新規機能開発以外の第三者検証)
    の人達とで情報共有と連携
    37
    2019/11/15 第14回Ques

    View full-size slide

  38. 苦労したこと
    38
    2019/11/15 第14回Ques

    View full-size slide

  39. ロールの掛け持ち
    テストエンジニアと元QAチーム(新規機能開発以外の第三者検証)の
    ロールを掛け持ちしていたが、うまくバランスが取れなかった
    • 直接コミュニケーションを大切にするが故に、その場にいなかった場合に
    認知できない・共有されてないという状況があった
    • 開発チームの業務に集中すると第三者検証のメンバーへのフォローが疎かに
    • 両方を常に気にしてしまい、集中できない
    39
    第三者検証をしているメンバーが自己完結できるようになってきたことや
    テストエンジニアが増えてきているため、一人で抱える必要がなくなった。
    現時点ではプロジェクトチームの役割に重点を置き、ある程度集中させて
    もらう形をとっている。
    2019/11/15 第14回Ques

    View full-size slide

  40. スピード感に追いつけない自分
    • 開発経験もなく、プログラミングもほとんど経験なかった自分
    • 説明してもらうも、分からない単語多い
    • ペアプロ・モブプロ時の作業スピード
    • コード書くペースが違いすぎる。待たせてる…かも…という不安
    • 日本語はブラインドタッチで書けるけれど、英語はまだできない
    40
    分からないことはその場で聞く。
    練習&学習
    チャレンジする意識を保つ。遠慮しすぎない気持ち。
    2019/11/15 第14回Ques

    View full-size slide

  41. 今後
    やっていきたいこと
    41
    2019/11/15 第14回Ques

    View full-size slide

  42. 今後やっていきたいこと
    • プロジェクトチーム内での関われる範囲をふやす
    • 今はE2EメインたがAPIの自動テストも理解度を上げる
    • テスト/実装以外のところ。データの分析など
    • E2Eテストの拡充
    • クロスブラウザ
    • 既存機能がまだまだ
    42
    2019/11/15 第14回Ques

    View full-size slide

  43. ご清聴ありがとうございましたm(__)m
    43
    2019/11/15 第14回Ques

    View full-size slide