Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
アジャイル開発とE2Eテストの話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
SHIFT EVOLVE
PRO
July 01, 2021
Business
560
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アジャイル開発とE2Eテストの話
SHIFT EVOLVE
PRO
July 01, 2021
More Decks by SHIFT EVOLVE
See All by SHIFT EVOLVE
価値実現重視へとシフトした時代を生き抜くには / 20260713 Takeshi Watarai
shift_evolve
PRO
1
37
SHIFTのコミュニティ活動 / 20260828 Yumiko Ohata
shift_evolve
PRO
2
68
AI活用によるレガシーモダナイゼーションとプロジェクトマネジメント / 20260827 Tsukasa Takemura & Takashi Maekawa
shift_evolve
PRO
0
48
兼務の事務局から、組織へ SHIFTのAWSアライアンス立ち上げ記 / 20260807 Satoshi Torano
shift_evolve
PRO
1
66
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
1.2k
Issue設計から始める仕様駆動開発 / 20260731 Mizuki Hirata
shift_evolve
PRO
1
260
”そのまま移行”からの脱却へ ― AI解析で実現するSAP S/4HANA導入成功メソッド / 20260729 Akio Hane
shift_evolve
PRO
1
57
区民の問い合わせ、AIにどこまで任せる? 品川区×SHIFTが挑む自治体音声AI実証の現在地 / 20260626 Taku Nishizawa and Satoshi Torano
shift_evolve
PRO
1
99
コミュニティを、仕事にした。‐ 学びの場が会社の価値になるまで / 20260724 Ayana Chandler
shift_evolve
PRO
0
140
Other Decks in Business
See All in Business
個人的に感動した サクラエディタの機能2026822 ゆるweb
mikikosaka
6
6.3k
株式会社アシスト_会社紹介資料
ashisuto_career
3
190k
AI時代のプロダクトディスカバリー:名刺OCR機能β版開発の舞台裏 2026.02.17
kawashimayoshihisa
0
220
SaaS・クラウド版・ソフトウェア版…どれを選ぶ? 用途と課題で紐解く Movable Type シリーズ選定ガイド
masakah
0
170
エンジニアの示唆に溢れている漫画『HUNTER×HUNTER』
shinyasaita
0
170
より使われるサービスに。行政プロダクトのグロース戦略
middleokada
2
1.3k
株式会社TableCheck - 会社紹介 Company Profile
tablecheckac
0
9.6k
AIがなくてもつよいPM/PdM/ディレクターになるには?
iflection
0
890
TableCheck Inc. - Company Profile
tablecheckac
0
530
3DC Company Deck v2026
3dc_inc
0
550
キャンバスエッジ株式会社 会社説明資料
canvasedge
0
19k
ゲームにおけるメディアミックス展開との向き合い方 -ヘブンバーンズレッドのメディアミックス企画の立て方-
gree_tech
PRO
0
870
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Utilizing Notion as your number one productivity tool
mfonobong
4
580
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
KATA
mclloyd
PRO
35
15k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
320
Tell your own story through comics
letsgokoyo
1
1.1k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
710
From π to Pie charts
rasagy
0
360
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Transcript
ΞδϟΠϧ։ൃͱ E2Eςετͷ 2021/06/25 DevOps & QAΤϯδχΞLTେձ Vol.1 Yyoshitomi
ࣗݾհ • גࣜձࣾτϦΫτϥοΫ • QA୲ • ৽ଔࡾ • ٢ඦ߹ࡊ
ฐࣾͷ։ൃମ੍ • ΞδϟΠϧ։ൃΛ࠾༻ • εϓϦϯτ2िؒ͝ͱ • CircleCIͳͲͷܧଓతσϓϩΠ • ຖ3ճͷE2Eςετͷఆظ࣮ߦ
• ࢄாʢϒϩοΫνΣʔϯʣܕαʔϏε • औҾࢀՃاۀɹ1ࣾ͝ͱʹ1ϊʔυʢαʔόʔʣཱ͕ͭ • औҾ͝ͱʹೝఆೝূہͷλΠϜελϯϓΛԡ͢ • ϑϨʔϜϫʔΫɿCordaɺSpringɺRails • ϑϩϯτΤϯυɿReact
ݱϓϩδΣΫτʹ͍ͭͯ
ςελʔ͔ΒݟͨݱϓϩδΣΫτͷݫ͍͠ • औҾʹؔ͢Δૢ࡞͕·͍ͣ • ຖिಥવػೳՃ͕ੜ͑ͯ͘Δ • ը໘ϝʔϧͷจݴ͕ߴසͰมΘΔ • UIߴසͰมߋ͕ೖΔͷͰɺSPAͷߏෳࡶ •
ॏ͍ ͱʹ͔͘ςετ͕͍͔ͭͳ͍
E2EςετΛؤுΖ͏ͱࢥͬͨ • ܾ·ͬͨखॱͰςετͰ͖Δ • จݴͷมߋͷͨͼʹςετ͕མͪΔ͔Βݟམͱ͕͠ൃੜ͠ͳ͍ • ςελʔҎ֎ͷࢹͰςετͰ͖Δ
͜͏ͨ͠Λ ղফͰ͖Δʂ ୯ମςετRequest specͰΧόʔ Ͱ͖ͳ͍෦Λܾ·ͬͨखॱͰςετͰ͖Δ • ޡೖྗͳͲɺखಈͩͱੜ͡Δೖྗ༰ૢ࡞ͷΒ͖͕ͭൃੜ͠ͳ͍ • ͍͜͠ૢ࡞Λཏతʹ࣮ߦͰ͖Δ ೖྗཝʹʮ༗͏ʯͬͯ
ೖྗ͢ΔͭΓ͕ ʮٜࠈʯͬͯೖྗͯ͠ ͠·ͬͨʂ ͏͔Ε͜Ε4ճ͘Β͍ ҧ͏ϘλϯΛΫϦοΫͯ͠ ςετΓͯ͠Δʂ
ςετΛ ϝϯςφϯε͠ͳ͕Β ϦϑΝΫλϦϯά Ͱ͖Δʂ จݴͷมߋͷͨͼʹςετ͕མͪΔ͔Β ݟམͱ͕͠ൃੜ͠ͳ͍ • 1ͭͷ༻ޠ͕มߋʹͳΔͱը໘શମͷจݴ͕มߋʹͳΔ͜ͱ͠͠ ͕ͩɺe2eͳΒࣗಈతʹը໘্ͷจݴΛ֬ೝͯ͘͠ΕΔ ͜͜Α͘จݴ͕
มΘΔ͔Βe2eͰ ֬ೝ͠Α͏ʂ
ςελʔҎ֎ͷࢹͰςετͰ͖Δ • ςετγφϦΦΛQAҎ֎ͷϓϩάϥϚʹϨϏϡʔͯ͠Β͑ΔͷͰ ςελʔҎ֎ͷࢹͰςετͰ͖Δ ͜ͷςετ ୯ମςετͰ͚ෛͬͯ ͬ͜͜ͱ ςετέʔεΛ૿͠ ·͠ΐ͏ʂ ͳΔ΄Ͳʂ
E2Eςετͷߏ • Cucumber • Capybara • Selenium Chrome • CIͰͷςετheadlessϞʔυ
• CircleCI
• γφϦΦ • ࣗવݴޠͰॻ͚Δ • ຊޠͰ લఏɾ͠ɾ͔ͭɾͳΒ • Step •
rubyͰ࣮ Cucumber
ςετγφϦΦ γφϦΦ: ϢʔβʔϝʔϧΞυϨεͱύεϫʔυ ͰγεςϜʹϩάΠϯͰ͖Δ લఏ ϩάΠϯը໘Λද͍ࣔͯ͠Δ ͠ ϝʔϧΞυϨεೖྗཝʹ"
[email protected]
"ͱೖྗ͢Δ ͔ͭ ύεϫʔυೖྗཝʹ"password"ͱೖྗ͢Δ
͔ͭ "ϩάΠϯ"ΛΫϦοΫ͢Δ ͳΒ μογϡϘʔυΛද͍ࣔͯ͠Δ ͔ͭ ϔομʔࢯ໊ʹ"ࢁా Ֆࢠ"ͱදࣔ͞ΕΔ
γφϦΦͷॻ͖ํ • ̍γφϦΦͰςετ͢Δ͜ͱγϯϓϧʹ • ಉ͜͡ͱΛԿճςετ͠ͳ͍ • എܠલఏͳͲΛ͏·͔ͭ͘͏ ͍ͱ୭ ಡΜͰ͘Εͳ͍ʂ
γφϦΦͷ ॻ͖ํ γφϦΦΞτϥΠϯ: ޡͬͨύεϫʔυϝʔϧΞυ ϨεͰϩάΠϯͰ͖ͳ͍ લఏ ϩάΠϯը໘Λද͍ࣔͯ͠Δ ͠ ϝʔϧΞυϨεೖྗཝʹ"<ϝʔϧΞυϨε>"ͱೖྗ͢Δ ͔ͭ
ύεϫʔυೖྗཝʹ"<ύεϫʔυ>"ͱೖྗ͢Δ ͔ͭ "ϩάΠϯ"ΛΫϦοΫ͢Δ ͳΒ "ϝʔϧΞυϨε·ͨύεϫʔυʹޡΓ͕͋Γ·͢ɻ࠶͝ೖྗ ͍ͩ͘͞ɻ"ͱදࣔ͞ΕΔ ྫ: | ϝʔϧΞυϨε | ύεϫʔυ | |
[email protected]
| passpass | |
[email protected]
| password | • ExampleʢྫʣΛ͏·͔ͭ͘͏ • ͨͩ͠ςʔϒϧ͕ڊେʹͳΓ ͗͢ͳ͍Α͏ʹ͢Δ • Scenario OutlineͰςετͨ͠ ͍͜ͱ̍γφϦΦͰͻͱͭʹ ߜΔ
γφϦΦͷ ॻ͖ํ γφϦΦΞτϥΠϯ: Ϣʔβʔඞਢ߲Λೖྗͯ͠هͷ৽ن࡞͕Ͱ͖Δ લఏ Ϣʔβʔ”<Ϣʔβʔ>"ͰϩάΠϯ͍ͯ͠Δ ͔ͭ هͷ࡞ը໘Λද͍ࣔͯ͠Δ ͔ͭ ໊݅ʹ"<໊݅>"ͱೖྗ͢Δ
͔ͭ ຊจʹ"<ຊจ>"ͱೖྗ͢Δ ͔ͭ ը૾ʹ”<ϑΝΠϧ>"ΛΞοϓϩʔυ͢Δ ͠ "ৄࡉ߲ʢҙʣ"ͱදࣔ͞ΕΔ ͔ͭ ߦͬͨॴʹ”<ॴ>”ͱೖྗ͢Δ ͔ͭ ༻ֹۚʹ”<ֹۚ>"ͱೖྗ͢Δ ͔ͭ "࡞"ΛΫϦοΫ͢Δ ͔ͭ "<ϝοηʔδ>"ͱදࣔ͞ΕΔ ͔ͭ ϝχϡʔ͔Β"<ϖʔδ>"ΛΫϦοΫ͢Δ ͳΒ “<ϖʔδ>”ʹ”<໊݅>”ͱ”<දࣔ݁Ռ>" ྫ: ɹ | Ϣʔβʔ | ໊݅ | ຊจ | ϑΝΠϧ | ॴ | ֹۚ | ϝοηʔδ | ϖʔδ | දࣔ݁Ռ | | Ϣʔβʔ1 | ɹ| | | | | ೖྗͯ͠Լ͍͞ | μογϡϘʔυ | දࣔ͞Εͳ͍ | | Ϣʔβʔ1 | ɹ| | | | | ೖྗͯ͠Լ͍͞ | هҰཡ | දࣔ͞Εͳ͍ | | Ϣʔβʔ1 | ͍͋͏ | | | | | ೖྗͯ͠Լ͍͞ | μογϡϘʔυ | දࣔ͞Εͳ͍ | | Ϣʔβʔ2 | ɹ| | | | | ೖྗͯ͠Լ͍͞ | μογϡϘʔυ | දࣔ͞Εͳ͍ | | Ϣʔβʔ2 | ɹ| | | | | ೖྗͯ͠Լ͍͞ | هҰཡ | දࣔ͞Εͳ͍ | | Ϣʔβʔ1 | ͍͋͏ | ͔͖͘ | | | | ೖྗͯ͠Լ͍͞ | μογϡϘʔυ | දࣔ͞Εͳ͍ | | Ϣʔβʔ1 | ͍͋͏ | ͔͖͘ | test.png | | | هΛ࡞͠·ͨ͠ | μογϡϘʔυ | දࣔ͞ΕΔ | | Ϣʔβʔ1 | ͍͋͏ | ͔͖͘ | test.png | | | هΛ࡞͠·ͨ͠ | هҰཡ | දࣔ͞ΕΔ | | Ϣʔβʔ1 | ͍͋͏ | ͔͖͘ | test.jpeg | | | هΛ࡞͠·ͨ͠ | μογϡϘʔυ | දࣔ͞ΕΔ | | Ϣʔβʔ1 | ͍͋͏ | ͔͖͘ | test.jpeg | | | هΛ࡞͠·ͨ͠ | هҰཡ | දࣔ͞ΕΔ | • γφϦΦλΠτϧͱ༰߹͍ͬͯΔ͔ʁ • ಉ͡ૢ࡞Λϖϧιφͷ͚ͩ֬ೝ͢Δҙຯ͋ Δͷ͔? • γφϦΦΞτϥΠϯʹཔΓ͗ͯ͢҉߸ͷΑ͏ ͳγφϦΦʹͳ͍ͬͯͳ͍͔? • ͦͷςετຖճࣗಈͰ࣮ߦ͢Δඞཁ͋Δͷ ͔? • ςετέʔεͷਫ਼ࠪΛͤͣɺطଘͷγφϦΦΛ ίϐϖͯ͠গ͠ม͚͑ͨͩʹͳ͍ͬͯͳ͍͔ʁ • ςετ͕ಈ͚ྑ͍ͱࢥ͍ͬͯͳ͍͔ʁ • ԿͷͨΊͷςετͳͷ͔ʁ
Stepͷॻ͖ํ • ؾΛ͚ͭΔ͜ͱ • ΫϥεXPathͳΔ͘Θͳ͍ E2Eςετʹϝϯςφϯε͖ͭͷ͕ͩɺ ɹ ΫϥεͳͲSPAͷมߋʹΑͬͯมΘͬͯ͠·͏͜ͱ͋ΔͷͰɺ ϝϯςφϯεසΛ͑ΔͨΊʹ༻͢Δlocatorߟྀ͢Δ
Stepͷॻ͖ํ • ςετ͍ͨ͠จݴϕλॻ͖͢Δ • i18nͳͲͰߏԽ͠ͳ͍ when ‘ OKϘλϯΛΫϦοΫ͢Δ’ find(‘<“data-test=“submit-button”>’).click end
t(‘test_string’) ͳͲආ͚Δ
Stepͷॻ͖ํ MPDBUPSͱςΩετΛࢦఆͯ͠จݴΛ֬ೝ͢Δ when ‘ OKϘλϯΛΫϦοΫ͢Δ’ find(‘<“data-test=“submit-button”>’, text: “OK”).click end
Stepͷॻ͖ํ ςετͷత ʮػೳUI͕༷௨Γʹͳ͍ͬͯΔ͜ͱΛ อূ͢ΔͨΊʯͰ͋Δ͜ͱΛΕͳ͍Α͏ʹ͍ͨ͠ ςετͷత͕ʮϝϯςφϯεΛ͠ͳ͍Α͏ʹςετΛճ͢͜ͱʯʹ ͳͬͯ͠·͏ͱҙຯ͕ແ͍
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ