Slide 1

Slide 1 text

[完全版]あなたが⾃動テストを⾏ う⽬的は何ですか? 2020/04/16 Ozono Hiroaki てすらぼ #1

Slide 2

Slide 2 text

30秒で⾃⼰紹介

Slide 3

Slide 3 text

なぜこんなことを話そうと思ったか

Slide 4

Slide 4 text

なぜこんなことを話そうと思ったか https://qiita.com/ozhiro/items/5aa95c6360a8930df325

Slide 5

Slide 5 text

どんな⼈に向けての話なのか - これから自動テストや りたい人 - 今自動テストやって て悩んでいる人 - 部下に自動テストや らせたい偉い人

Slide 6

Slide 6 text

どんな⼈に向けての話なのか 上司から「⾃動テストやってみてよ」って丸投 げされたあなた、無⾔でこのスライド(Qiita)の リンクぶん投げてあげてください

Slide 7

Slide 7 text

注意点 - 自動テスト == E2EのUIテスト。ブラウザやエミュ レーター、実機などをプログラムで操作して行うテ スト として定義しています - こうやって失敗した、という経験のシェアを趣旨とし ています - 私の所属する組織は開発組織とQA組織が独 立しています - ちゃんと関係者の許可もらってるよ!

Slide 8

Slide 8 text

導⼊編 自動テストを実装し始 める前に考えておいた 方がいいこと

Slide 9

Slide 9 text

それは… あなたが⾃動テストを⾏う⽬的はなんですか?

Slide 10

Slide 10 text

実際に周りで聞いたことがある例 - プログラミングを仕事にしたいから - テスト自動化エンジニアになりたいから - 他ではやってるから - 手動テストのコストを減らしたいから - 手動テスターの負担を減らしたいから

Slide 11

Slide 11 text

実際に周りで聞いたことがある例 - プログラミングを仕事にしたいから - テスト自動化エンジニアになりたいから - 他ではやってるから - 手動テストのコストを減らしたいから - 手動テスターの負担を減らしたいから キャリア コスト

Slide 12

Slide 12 text

わたしの場合 当時の上司 キャリア 当時のわたし コスト

Slide 13

Slide 13 text

共通すること ⾃動テストをすることで プロジェクト・サービスをどう良くしたいのか という観点がない

Slide 14

Slide 14 text

⼿段の⽬的化 - キャリアに関する観 点は手段の目的化 になっている - 動機としては悪くな いと思う - プロジェクトが利益 を得られるよう、上 司が誘導してあげる べき

Slide 15

Slide 15 text

⼿段の⽬的化 - 実装を担当する部 下はプログラムを書 くこと自体が楽しくて 楽しくてしょうがない 状態になるかも - 自動化ハイなんてよ く言われます

Slide 16

Slide 16 text

⼿段の⽬的化 - あなたたちの目的は 自動テストを書くこと ですか?サービスを よくすることでしょ う? - 当時のわたしと当時 の上司に1000回くら い言ってあげたいで す

Slide 17

Slide 17 text

コストの削減 ⾃動テストで⼈的コストを削減することは⾄難 のわざです

Slide 18

Slide 18 text

コストの削減 - 局所的に切り取れ ばいくらでも良く見せ ることは可能 - わたし自身丸4年で 人的コスト減らせ た!という実績はな い - むしろ増えてる場合 も多い

Slide 19

Slide 19 text

コストの削減 - コストは増えても別 にいいんです。自動 テストをやる目的が 別であれば - ただし、コスト削減 が目的になっている と…茨の道を通る可 能性が

Slide 20

Slide 20 text

コストの削減 - UIの自動テスト自 体が一般的にコスト が高いと言われてい る - コストが高いもの(自 動テスト)でコストが 高いもの(手動テス ト)のコストを削減す る…ハードな匂いが

Slide 21

Slide 21 text

結果的にどうなったか 見事に燃え尽きた

Slide 22

Slide 22 text

どうするべきだったのか - 手動テストでカバーできていない部分を自動テストで カバーして、ユーザー体験をよりよくしたい。 - 本番環境で起きるサービスの障害を自動テストでひと つでも減らし、機会損失を減らしたい。 - 開発のライフサイクルを改善するために自動テストを 活用して、エンジニアがもっと仕事しやすい環境を作り たい。 こんな目的持ってたらどうだったでしょうか?

Slide 23

Slide 23 text

⾃動テストの守備範囲 開発のため ビジネスのため

Slide 24

Slide 24 text

ちなみに - 同僚からどうやってコス ト意識から抜け出せた のか?と質問をもらいま した - 外の世界を知った、とい うのが一番大きかったと 思います - おすすめはこれ https://www.amazon.co.jp/dp/B00IE3B522

Slide 25

Slide 25 text

次に運⽤編 ⽬的の次に⼤事だと思っていること →いかに⾃動テストを運⽤していくかということ →使⽤する⾔語やソフトウェアはその次でいい

Slide 26

Slide 26 text

失敗したときどうなるか考えていますか? - 初めての試み、挑戦的 な取り組みに失敗はつ きもの - 大事なのは失敗しない ことではなく、失敗して も大丈夫なように準備 しておくこと(自動テスト に限った話ではない)

Slide 27

Slide 27 text

失敗したときどうなるか考えていますか? - 早く成果を出したいから と焦っていませんか? - 精査せずにいきなり自 動テスト書き始めてま せんか? - これが初めてのチャレン ジなら要注意

Slide 28

Slide 28 text

失敗したときどうなるか考えていますか? - もしなにも考えずに始 めて失敗してしまった場 合、逆にコストがかかっ たりプロジェクトがうまく 回らなくなったり、といっ た弊害が出ることもあり ます。

Slide 29

Slide 29 text

失敗したときどうなるか考えていますか? - 逆に言えば、ある程度 リスクを考慮しておけば いいだけの話です。 - 私と同じ失敗をみなさ まがしませんように…

Slide 30

Slide 30 text

周りの⼈たちを巻き込めていますか? 閉じた場所で、限られた⼈だけで議論をしてい ませんか?

Slide 31

Slide 31 text

周りの⼈たちを巻き込めていますか? - テスト自動化を組織立 ててやることは、ひとつの サービスを作ることと同 様の大変さがあります。 - 開発チーム or QAチー ムなどに議論が閉じて しまってはいませんか?

Slide 32

Slide 32 text

周りの⼈たちを巻き込めていますか? - それなりの実装コストと メンテナンスコストがか かることをプロジェクト全 員から理解を得ましょう - とりあえずやってみたい、 勉強タスクとしてやらせ たい、の結果、儚く消え ていく例を何度も見て きました…

Slide 33

Slide 33 text

それ、本当にやる必要ありますか? - 開発エンジニア未経験 から自動テストに取り 組む場合で特に見てき た例 - プログラム勉強したいか らという理由でスクリプト をスクラッチから書こうと する例をよく見てきまし た。

Slide 34

Slide 34 text

それ、本当にやる必要ありますか? - それってすでにOSSでな いですか? - それってすでにベンダー さんがサービスとして提 供してないですか? - もちろん様々な理由か ら自分で作らないとい けないことはあると思い ます

Slide 35

Slide 35 text

まとめ ⽬的って⼤事

Slide 36

Slide 36 text

最後に じゃあ今の私の⽬標は?

Slide 37

Slide 37 text

最後に DX(Developer eXperience)の向上

Slide 38

Slide 38 text

最後に テスト⾃動化エンジニアがE2Eのテストスクリ プトを書いて、メンテするだけの時代はもう終 わる →それって本当にテスト⾃動化エンジニアみた いな専⾨職必要? →プログラム書かなくてもE2Eのテストできる ツールいっぱいあるんじゃないの?

Slide 39

Slide 39 text

最後に じゃあテストに関わる部分で、⾃動テストのス クリプトを書くだけじゃなくて、サービス開発 がもっとしやすくなるお⼿伝いしたらどうか な?

Slide 40

Slide 40 text

最後に Making testable-infrastructure - Motivation - Develop branchにおいて⾃動テストがバグを⾒つけたとしても、 サービス開発者へのフィードバックは早くない - もうすでにDevelop branchへたくさんのPull requestが取り込まれたあとかも しれない - その場合、どれが影響したのか⾒つけるのが⾟い - そもそもPull request取り込まれたの先週だし内容覚えてない。。 - E2Eテストは環境に依存してしまうケースが多い - 開発環境、QA環境で⾃動テストを⾏なっていると、予期せぬデータの操作・変 更が⾃動テストに影響してしまい、結果⾃動テストが不安定になってしまう

Slide 41

Slide 41 text

最後に Making testable-infrastructure - Motivation - Develop branchにおいて⾃動テストがバグを⾒つけたとしても、 サービス開発者へのフィードバックは早くない - もうすでにDevelop branchへたくさんのPull requestが取り込まれたあとかも しれない - その場合、どれが影響したのか⾒つけるのが⾟い - そもそもPull request取り込まれたの先週だし内容覚えてない。。 - E2Eテストは環境に依存してしまうケースが多い - 開発環境、QA環境で⾃動テストを⾏なっていると、予期せぬデータの操作・変 更が⾃動テストに影響してしまい、結果⾃動テストが不安定になってしまう Pull request-drivenでテストできる環境を Kubernetesにでも⾃動で作っちゃおう

Slide 42

Slide 42 text

最後に

Slide 43

Slide 43 text

ご清聴ありがとうございました!