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
360
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
6.4k
迷いながらも前に進むための テスト自動化ツールの選定ポイント
yoshikiito
2
650
ソフトウェアテスト自動化、一歩前へ
yoshikiito
7
2.7k
テストエンジニアのための初めてのプログラミング
yoshikiito
0
520
テスト自動化Learn&Unlearn
yoshikiito
0
3.6k
テスト自動化プロジェクトを支える技術と仕組み
yoshikiito
2
3.2k
テスト自動化チームでペアプロにトライした話 / trying to pair programming on test automation team
yoshikiito
0
880
テスト自動化とお掃除ロボット
yoshikiito
0
4.1k
抜け出そう、テスト自動化あるある
yoshikiito
4
6k
Other Decks in Technology
See All in Technology
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
150
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
140
AIチャットボット開発への生成AI活用
ryomrt
0
170
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
0
170
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
230
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
アジャイルチームがらしさを発揮するための目標づくり / Making the goal and enabling the team
kakehashi
3
140
OTelCol_TailSampling_and_SpanMetrics
gumamon
1
190
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
200
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
1k
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
31
6.3k
A better future with KSS
kneath
238
17k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Docker and Python
trallard
40
3.1k
4 Signs Your Business is Dying
shpigford
180
21k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
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