Slide 1

Slide 1 text

舘石光寛(@mt3_set) 2年間自動テストを作り続けて分かったこと - 失敗談から学ぶテスト自動化 -

Slide 2

Slide 2 text

| Copyright(C) TechVan Co,Ltd 2 1. 自己紹介 2. テスト自動化失敗物語 3. 失敗の原因の整理 4. 失敗の原因に対する解決策 5. まとめ アジェンダ

Slide 3

Slide 3 text

| Copyright(C) TechVan Co,Ltd 3 舘石 光寛(たていし みつひろ) Twitter:MT(@mt3_set) ・テクバン株式会社 ・新卒で入社 → テスター → TE → QA / TAE ・現在:テスト自動化の導入/運用支援、推進活動 経歴 趣味 キャンプ / 筋トレ 社外活動 ・社外向けテスト自動化研修の実施 ・各種イベント / セミナーでの発表

Slide 4

Slide 4 text

| Copyright(C) TechVan Co,Ltd 4 ◆ 今日話すこと 過去の経験からの失敗の数々と「そこからどうしたか」「こうすべきだった」を共有 ◆ 対象者 ・まだテスト自動化を始めていない方 ・テスト自動化で悩んでいる方 ◆ その他 ・資料、動画は後日公開されます ・質問、感想等はDiscordにてお待ちしています 発表について

Slide 5

Slide 5 text

| Copyright(C) TechVan Co,Ltd 5 テスト自動化失敗物語の概要

Slide 6

Slide 6 text

| Copyright(C) TechVan Co,Ltd 6 ◆ 登場人物 ◆ PJの概要 ・QAチーム体制:2人(どちらもテスト自動化&開発経験なし) ・テスト内容:システムテスト ・テスト対象システム - とあるWebサービス - リリース頻度:Q~半年に1回 テスト自動化失敗物語の概要 開発者さん MT(QA) 上司さん

Slide 7

Slide 7 text

| Copyright(C) TechVan Co,Ltd 7 それでは テスト自動化失敗物語 始まります

Slide 8

Slide 8 text

| Copyright(C) TechVan Co,Ltd 8 テスト自動化失敗物語(1/7) ある日の定例会 今度のリリースは○○月××日の予定だけど、 最後のリグレッションテストって いつもどれくらいかかってるっけ? いつも○○日くらいを見込んでますね なるほどーその辺もうちょっと効率的にやりたいよね~ 例えば...自動化するとか (そうきたか...)確かにうちでも導入した方が 良いかもしれないですね ちょっとどんなツールが良いか調べてみます MT(QA) 上司さん

Slide 9

Slide 9 text

| Copyright(C) TechVan Co,Ltd 9 テスト自動化失敗物語(2/7) 翌日 取り合えず無料で使える自動化ツールを調べてみよう(ググる) なるほど、名前は知ってたけどやっぱりこの「Selenium」っていうのが今は主流っぽいな IDEだと出来ること限られてきそうだしWebDriverかな 言語は...お、pythonであれば記述もわりと簡単みたい (クイックリファレンス見ながら)開発経験ないけど、要素取得してクリックとかするだけ みたいだし出来るんじゃないかな 自動化するテストは...取り合えずお客さんから言われているリグレッションテストだな 早速作ってみよう

Slide 10

Slide 10 text

| Copyright(C) TechVan Co,Ltd 10 テスト自動化失敗物語(3/7) 数日後 うーん何か上手くいかないところが多いなあ 取り合えず出来るところだけ作っていくか... インポートした 証明書が上手く 動作しないなあ... 右クリック メニューが上手く 取得できない... IEではファイルの ダウンロードが 出来ないのか!? IDもnameも 割り振られていない... class名も同じだし Xpathしかないか...

Slide 11

Slide 11 text

| Copyright(C) TechVan Co,Ltd 11 テスト自動化失敗物語(4/7) 数か月後 取り合えず半分くらいは出来てきたし1回通しで動かしてみよう そう言えば通しで動かすのは初めてだな あれ、単体で動かしたときは通ってたのに何か落ちちゃったな... そうか、ここのデータ登録がこっちに干渉してたのか、直したいけど通常業務もあるし時間がないなあ あ、ここも失敗してる...うーん、ここの期待値チェックはここまで出来ていればOKにするか ここはさっき通ってたのに今度は落ちてるぞ?もう一回実行するか... 通った。何かタイミングとかの問題だったのかな、取り合えずOKと。

Slide 12

Slide 12 text

| Copyright(C) TechVan Co,Ltd 12 テスト自動化失敗物語(5/7) さらに数か月後 よし、良い感じで自動テストが出来てきたぞ 通しで実行してもたまに数件落ちる程度だし、実運用もそろそろできそうだ 次のリリースでUIを思いっきり変えます ○○(サービス名)Ver2.0です !? スクリプト修正しなきゃ... 開発者さん

Slide 13

Slide 13 text

| Copyright(C) TechVan Co,Ltd 13 テスト自動化失敗物語(6/7) そのまた数か月後 はあはあ...新しいUI用のテストスクリプトの修正が何とか終わったぞ しかし変更箇所が多くて大変だったなあ、もう少し変更しやすい作りに変えないと... 何か良い方法はないかな(ググる) なるほど、pythonにはpytestっていうテスト用のフレームワークがあるのか、これを使ってみようかな あれ、これ結構書き換えが大変だぞ。というか半分くらい書き直さないといけないのでは...? しかもこれ実行させるときにclassとかメソッドごとで呼び出してるから、命名規則も統一させなきゃでは... ...ああ、また修正しなおしか...

Slide 14

Slide 14 text

| Copyright(C) TechVan Co,Ltd 14 テスト自動化失敗物語(7/7) 時は過ぎ... や、やっと修正が終わった... これでやっと実稼働にのせて... あ、MTくんそろそろ現場異動だから 自動化も次のメンバーに引き継いでおいてね !!!??? ...手順書作ろう... 続く...

Slide 15

Slide 15 text

| Copyright(C) TechVan Co,Ltd 15 どれほど失敗していたのか? 洗い出してみます

Slide 16

Slide 16 text

| Copyright(C) TechVan Co,Ltd 16 ・コスト削減のみを主要な目的とする ・「無料だから」という理由だけで選ぶ ・作業担当者を決めずに始める ・スケジュールを決めずに始める ・通常業務と並行して片手間で行う ・自動テストスクリプト全体の構成やコーディング規約など、 最初にルール化できていない ・マニュアルテストをすべて自動化する ・システムが自動化に適した設計になっていない ・作業メンバーのリソース不足でテストの実装ができない ・作業メンバーのスキル不足でテストの実装ができない ・自動テストが全て完成してから実行する ・自動テストを日常的に実行していない ・期待値チェックの判定条件が曖昧・行っていない テスト自動化失敗の原因 ・マニュアル化できていない ・担当者が1人しかいない・少ない ・ナレッジが溜められていない ・自動テストが失敗したときにすぐにメンテナンスをしない ・不安定な自動テストを改修せず放置してしまう ・作業メンバーのリソース不足でメンテナンスができない ・コードの保守性・可読性が低くてメンテナンスがしづらい ・テストのスピードがあまり求められていない ・テスト対象システムが既にほぼ完成されたシステムで、 その後のリリース頻度が少ない ・開発プロセスの最後にだけテストをしている etc.

Slide 17

Slide 17 text

| Copyright(C) TechVan Co,Ltd 17 ・コスト削減のみを主要な目的とする ・「無料だから」という理由だけで選ぶ ・作業担当者を決めずに始める ・スケジュールを決めずに始める ・通常業務と並行して片手間で行う ・自動テストスクリプト全体の構成やコーディング規約など、 最初にルール化できていない ・マニュアルテストをすべて自動化する ・システムが自動化に適した設計になっていない ・作業メンバーのリソース不足でテストの実装ができない ・作業メンバーのスキル不足でテストの実装ができない ・自動テストが全て完成してから実行する ・自動テストを日常的に実行していない ・期待値チェックの判定条件が曖昧・行っていない テスト自動化失敗の原因 ・マニュアル化できていない ・担当者が1人しかいない・少ない ・ナレッジが溜められていない ・自動テストが失敗したときにすぐにメンテナンスをしない ・不安定な自動テストを改修せず放置してしまう ・作業メンバーのリソース不足でメンテナンスができない ・コードの保守性・可読性が低くてメンテナンスがしづらい ・テストのスピードがあまり求められていない ・テスト対象システムが既にほぼ完成されたシステムで、 その後のリリース頻度が少ない ・開発プロセスの最後にだけテストをしている etc. 失敗の原因が多すぎる...

Slide 18

Slide 18 text

| Copyright(C) TechVan Co,Ltd 18 整理してみました

Slide 19

Slide 19 text

| Copyright(C) TechVan Co,Ltd 19 テスト自動化失敗の原因(実体験以外含む)の整理

Slide 20

Slide 20 text

| Copyright(C) TechVan Co,Ltd 20 テスト自動化失敗の原因(実体験以外含む)の整理 導入時の話 運用時の話 そもそもの話 実装時の話

Slide 21

Slide 21 text

| Copyright(C) TechVan Co,Ltd 21 テスト自動化失敗の原因(整理後) 導入時の話 ・コスト削減のみを主要な目的とする ・「無料だから」という理由だけで選ぶ ・作業担当者を決めずに始める ・スケジュールを決めずに始める ・自動テストスクリプト全体の構成やコーディング規約など、 最初にルール化できていない ・マニュアルテストをすべて自動化する 運用時の話 ・マニュアル化できていない ・担当者が1人しかいない・少ない ・ナレッジが溜められていない ・自動テストが失敗したときにすぐにメンテナンスをしない ・不安定な自動テストを改修せず放置してしまう ・作業メンバーのリソース不足でメンテナンスができない ・コードの保守性・可読性が低くてメンテナンスがしづらい そもそもの話 ・テストのスピードがあまり求められていない ・テスト対象システムが既にほぼ完成されたシステムで、 その後のリリース頻度が少ない ・開発プロセスの最後にだけテストをしている 実装時の話 ・通常業務と並行して片手間で行う ・システムが自動化に適した設計になっていない ・作業メンバーのリソース不足でテストの実装ができない ・作業メンバーのスキル不足でテストの実装ができない

Slide 22

Slide 22 text

| Copyright(C) TechVan Co,Ltd 22 テスト自動化失敗の原因に対する解決策 導入時の話 テストの目的を決め、 計画・設計を行う 運用時の話 メンテナンスが命 そもそもの話 今、本当に「自動テストを作ること」が 必要なのかを考える 実装時の話 片手間でやらない

Slide 23

Slide 23 text

| Copyright(C) TechVan Co,Ltd 23 テストの目的を決め、計画・設計を行う 導入時の話 テストの目的を決め、 計画・設計を行う ・まずは目的があって、それをもとに - どのツールを使うか - どの部分の自動テストを作るか - どのようなスケジュール感で進めていくか を決めていく。 ・テスト実行コスト削減のみのテスト自動化は アンチパターンになりやすい印象

Slide 24

Slide 24 text

| Copyright(C) TechVan Co,Ltd 24 実装時の話 片手間でやらない 片手間でやらない ・専任者を1人以上立ててやるのがベスト ・「1スプリントごとに5シナリオ」など ルールを決めて小さく積み上げる ・有償ツールの力を借りるのもあり

Slide 25

Slide 25 text

| Copyright(C) TechVan Co,Ltd 25 運用時の話 メンテナンスが命 メンテナンスが命 ・とにかく「失敗したら即メンテナンス」が鉄則 ・どうしてもすぐに対応するのが難しい時は 一定の期間の中でルールを決めて作業時間を確保 ・メンテナンスがしやすい作りにすることも重要 - 全体の構成、関数化、コメント - 有償ツールの力を借りるのもあり

Slide 26

Slide 26 text

| Copyright(C) TechVan Co,Ltd 26 そもそもの話 今、本当に「自動テストを作ること」が 必要なのかを考える 今、本当に「自動テストを作ること」が必要なのかを考える ・今抱えている悩み・課題を 「自動テストを作ること」で解決できる? ・今必要なのは別のことかもしれない - UT、APIなど別レイヤーのテストでカバー - 既存テストの妥当性・必要性を見直す

Slide 27

Slide 27 text

| Copyright(C) TechVan Co,Ltd 27 ・テスト自動化が失敗に陥る原因は非常にたくさんある ・とはいえ、やってみるのも大事。失敗の原因を知り、挑戦しやすい知識の土台を作る →失敗の原因を知っていれば、大きな失敗をする可能性は低くなるはず まとめ これからテスト自動化を始めようと思っている人に 「テスト自動化の取り組み方」「考えるきっかけ」 みたいなものが与えられれば幸いです

Slide 28

Slide 28 text

Thank you | Copyright(C) TechVan Co,Ltd ↑公式Youtube チャンネルはこちら