Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
60分で学ぶE2Eテスト(テスト設計編)
Search
YoshikiIto
March 17, 2023
Technology
0
550
60分で学ぶE2Eテスト(テスト設計編)
JaSST'22 Tokyoで発表した資料です。
YoshikiIto
March 17, 2023
Tweet
Share
More Decks by YoshikiIto
See All by YoshikiIto
アーキテクチャで理解する テスト自動化システム Developers Summit 2023 Summer
yoshikiito
6
7.2k
迷いながらも前に進むための テスト自動化ツールの選定ポイント
yoshikiito
2
810
ソフトウェアテスト自動化、一歩前へ
yoshikiito
7
3.1k
テストエンジニアのための初めてのプログラミング
yoshikiito
0
690
テスト自動化Learn&Unlearn
yoshikiito
0
3.9k
テスト自動化プロジェクトを支える技術と仕組み
yoshikiito
2
3.4k
テスト自動化チームでペアプロにトライした話 / trying to pair programming on test automation team
yoshikiito
0
1.1k
テスト自動化とお掃除ロボット
yoshikiito
0
4.7k
抜け出そう、テスト自動化あるある
yoshikiito
4
6.4k
Other Decks in Technology
See All in Technology
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.6k
OpenShiftでllm-dを動かそう!
jpishikawa
0
140
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
420
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
390
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
240
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
320
20260204_Midosuji_Tech
takuyay0ne
1
160
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.4k
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.4k
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
14k
A designer walks into a library…
pauljervisheath
210
24k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
920
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
280
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
150
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
58
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
Technical Leadership for Architectural Decision Making
baasie
2
250
Transcript
60分で学ぶ実践E2Eテスト 2022/3/10 JaSST'22 Tokyo 末村拓也(Autify)・伊藤由貴(ベリサーブ) 1
セッション概要 内容 Webアプリケーションを題材に、テスト設計からテストコード実装までの自動テスト 作成の流れを一気通貫で、実践的に解説していきます。 想定参加者 ソフトウェアテストの経験がある方 プログラミングの経験があり、簡単な環境構築くらいは出来るよ!という方 2
セッションの構成 大きく2部構成です 1. 設計編:どんなテストを自動化するのか、などを考える 2. 実践編:設計編で考えたテストを、ツールを使って実際に自動化する 3
自己紹介:伊藤由貴 テスト自動化エヴァンジェリスト @ベリサーブ テスト自動化の普及活動 コミュニティ活動 JaSST Tohoku実行委員 JSTQBテスト自動化エンジニアシ ラバス翻訳WG 4
設計編 5
はじめに:皆さんに質問 「E2Eテストを自動化しよう」と思った場合、何から始めますか? 思いつくままに自動化する 今ある手動テストを順番に自動化する なんとなく大事そうなテストケースから自動化する 6
アンチパターンです 7
設計編の目次 1. やみくもにE2Eテストを自動化するとなぜ危険なのか 2. テスト自動化にあたって考える・工夫するべき点 3. 具体例 8
やみくもにE2Eテストを自動化するとなぜ危険なのか テスト自動化を行うと、テストケースの追加や実行が(一見)簡単になるため、テス トを増やしてしまうことがある。 行っても効果がないテストが増えてしまうと、 メンテナンスの手間が大きくなる 実行時間(期間)が延びる など、不都合が生じる。(そして自動テストはお蔵入りへ・・・) 9
"手動でおこなって効果のないテストを自動化しても 無駄である" そもそも、テストプロセス(e.g.テスト分析、テスト設計、テスト実装、報 告)、特にテスト分析、テスト設計が適切に行われていないテストは、優秀なテ スターが手動でテストを実施したところで、テストに期待される動作の保証やバ グの検出といった効果を発揮しない。いわんや、自動テストにおいておや、であ る。 テスト自動化研究会 - テスト自動化の8原則 より。強調は伊藤。
10
自動化の前に考えるべきこと 「やみくもに」はダメ、つまり自動化の前に考えるべきことを考えましょう、という こと。 8原則にもあるように、「テスト分析」と「テスト設計」を適切に行う必要がある。 テスト分析:「何をテストするか」を決める テスト設計:「どのようにテストするか」を決める 参考:ソフトウェアテスト基礎講座 - 株式会社ベリサーブ 11
参考:「E2Eテスト」とは システムテスト?ユーザー受け入れテスト?UIテスト? 組織によって定義が異なる そして、業界統一の「正しい定義」もない 本セッションでは、システムをユーザーと同じように操作して行うテストで、か つユーザーストーリー単位で行うものをE2Eテストと呼ぶことにする ※組織でのE2Eテストの定義が本ページと異なっていても、実践編でテストを自動化す る際の技術要素は共通しているため、何らかお役には立つと思います 12
設計編の目次 1. やみくもにE2Eテストを自動化するとなぜ危険なのか 2. テスト自動化にあたって考える・工夫するべき点 3. 具体例 13
テスト自動化にあたって考える・工夫するべき点 何をテストするか どのようにテストするか 14
大前提:「E2Eテストの自動化」に閉じないこと E2Eテストをどう自動化するかという視点ではなく、開発・テストをどうしたいかを考 え、そのためにE2E自動テストがどうあるべきか、を検討しましょう。 単体テストや結合テストなど、自組織の各テストが担う役割 E2Eテストでは何を担保したいか、単体テスト・結合テスト・E2Eテストの棲 み分け 理想とする開発サイクル リリース頻度、CI/CDパイプライン、テストにかけられる時間、など 15
何をテストするか、を考えるポイント テストベースをもとに、どの機能(フィーチャ・シナリオ)をどこまでテストする か、を検討します。 E2Eテストで対象とする機能(フィーチャ・シナリオ) テスト対象のコアとなる機能 正常系の基本的なユーザシナリオ どこまでテストするか、の考え方 もし不具合が発生した場合にビジネス上の影響が大きい範囲 例)人数ベース:IE11を使っているのは3%だから対象外 例)金額ベース:ガラケーを使っているのは全体の5%だが、売上の30%
を占めているから対象 16
参考:一般的にE2Eテストとして自動化されるもの テスト対象のコアとなる機能 起動/終了、ログイン/ログアウト、課金・購入、など ビジネス上の影響が大きい機能やユーザシナリオ 会員登録、メルマガなど 17
どのようにテストするか、を考える際のポイント 各テストケース(シナリオ)で、どのように「テストしたいこと」を網羅するの か テスト技法の活用 自動で行う場合の効率 テストケース間の依存関係をなるべく減らす テストの実行単位を変える ※この検討の過程で「このテストは手動でやろう」などの判断も発生 18
設計編の目次 1. やみくもにE2Eテストを自動化するとなぜ危険なのか 2. テスト自動化にあたって考える・工夫するべき点 3. 具体例 19
具体例 ここからは具体的なサイトに対してE2Eテストを考えてみましょう 20
ホテル予約サイトのE2Eテストを考えよう テスト対象:HOTEL PLANISPHERE - テスト自動化練習サイト 条件設定 サイトは公開済み 機能追加やBugfix後のリリース前にリグレッションテストとしてE2Eテストを 行っているが、現在は手動 E2Eテストを自動化して効率化したい
21
ホテル予約サイトの機能を把握する ログイン ログアウト 新規会員登録 退会 アイコン変更 宿泊プラン予約 22
テストしたいこと、を検討する 基本的なユーザストーリーは最低限網羅したい 予約における金額計算が正しく行えていることを担保したい 各会員種別でプラン表示が適切にできているか、を確認したい 23
各テストレベルで行っていることを確認 単体テスト 金額計算ロジックのみ整備 hotel-example-site/billing_test.html 結合テスト なし 24
今回対象にする範囲 重要機能 ログイン・ログアウト、予約、会員登録 特に予約機能はサイトの主たる機能のため、会員種別ごとに予約可否を確認 E2Eでしかできないテスト 会員種別ごとのプラン表示確認 例)一般会員向けの画面にプレミアム会員専用のプランが表示されていない こと 25
ほんとにそれだけでいいの? テスト自動化はプロジェクトではない 「重要機能のテストを自動化できたら終わり」ではもちろんない 最初から「何をテストするか」のすべてを自動化しようと思うと失敗することも ある Spotify社のように、段階的に成熟していくという方法も 26
選定したユーザーシナリオ6つ 1. 非会員で予約 2. 会員登録→予約→ログアウト 3. プレミアム会員でログイン→予約→ログアウト 4. 一般会員でログイン→予約→ログアウト 5.
一般会員の画面にプレミアム会員限定プランが表示されないこと 6. 非会員の画面に一般・プレミアム会員限定プランが表示されないこと このうち、1番目の「非会員で予約」のシナリオを、具体的な手順として書き起こしま す 27
非会員で予約するシナリオの手順(1/2) 1. https://hotel.testplanisphere.dev/ja/ を開く 2. メニューから「宿泊予約」を選択 3. 宿泊プラン一覧から「お得な特典付きプラン」の「このプランで予約」を選択 4. 宿泊日を翌月1日に設定
5. 宿泊数を7泊に設定 6. 人数を2に設定 7. 朝食バイキング、昼からチェックインプラン、お得な観光プランを選択 8. 氏名に「テスト太郎」を入力 28
非会員で予約するシナリオの手順(2/2) 9. 確認のご連絡をメールに設定 10. メールアドレスに
[email protected]
を設定 11. ご要望・ご連絡事項に「テスト」と入力 12. 予約内容を確認するボタンを選択 13.
宿泊予約確認画面で、以下を確認 i. 合計金額が123,000円であること ii. 期間、人数、追加プラン、お名前、確認のご連絡、ご要望・ご連絡が入力通 りになっていること 14. この内容で予約するボタンを選択し、以下を確認 i. 予約が完了しましたダイアログが表示されること 29
手順化にあたって考えたポイント(1/2) 実行のたびに結果が変わらないようにする 休日と平日とで料金が異なるため、単純に翌月1日から宿泊にしただけでは金 額が可変になってしまう。7泊に設定することで、いつ実行しても同じ金額に なる 「任意の~」は避ける 自動テストを実装する際に困る 30
手順化にあたって考えたポイント(2/2) どのプランを選択するか 今回は非会員で選択できるプランで、かつ画面上の場所等から最も人気のプ ラン=予約できないとビジネス上の影響が大きいプランであると仮定し選択 31
ここからは、選定&手順化したテストケースについて、実際にコードを書いて自動化 していきましょう 32