Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

仕様(ふるまい)= テストケース 「E2E自動テストの自然言語記述が仕様書である」という扱い 仕様が古いまま自動テストを流すとエラーになる ↓ 修正する ↓ 常に更新され最新の状態の仕様書となる 17 2019/11/15 第14回Ques

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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