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
アジャイル開発とE2Eテストの話
Search
SHIFT EVOLVE
PRO
July 01, 2021
Business
550
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
コミュニティを、仕事にした。‐ 学びの場が会社の価値になるまで / 20260724 Ayana Chandler
shift_evolve
PRO
0
51
越境QA 〜QA歴18年のキャリア~ / 20260724 Masakazu Yoshikawa
shift_evolve
PRO
0
40
fukabori.fm出張版:AI駆動開発でテストエンジニアは不要になるのか / 20260723 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
2
49
【実録】「なんちゃってアジャイル」によるプロジェクト崩壊とその教訓 / 20260723 Takeshi Watarai
shift_evolve
PRO
1
25
AIとハーネスで育てるトランスコンパイラ / 20260722 Yasushi Katayama
shift_evolve
PRO
3
790
AWS DevOps AgentでCDKメンテナンスは楽になるのか ~検証から見えた最適解~ / 20260718 Masaki Okuda
shift_evolve
PRO
0
590
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
540
AIが変えるDevSecOps―開発速度とセキュリティの両立へ / 20260714 Mitsutoshi Matsuo
shift_evolve
PRO
1
85
生成AI活用によるODC欠陥分析の分類高速化の実践と導入効果 / 20260703 Suguru Ishii
shift_evolve
PRO
2
170
Other Decks in Business
See All in Business
AI時代のリスク管理は どうあるべきか考えてみる
0air
0
270
Algomatic | 会社紹介資料
algomatic
PRO
2
150k
01_全社_FLUX採用ピッチ資料_Ver.5.4
flux
11
220k
川下り型キャリア感できのこってきた 35歳子育て世帯の葛藤
ikasumiwt
0
270
When do you feel a customer's trust?
tanaken0515
0
220
エムスリーキャリア Work Support採用資料 / M3C Work Support
m3c
0
14k
unname_会社概要資料 2026.06.25 update
unnameinc
2
5.2k
5年間コードを書かなかったVPoEが なぜ現場に戻ったのか?
gessy0129
1
280
SimpleForm 会社紹介資料
simpleform
2
57k
結果、生き残った_きのこカンファレンス2026
yurufuwahealer
0
160
エイターリンク株式会社 会社紹介資料
aeterelink
0
46k
成功を追わない起業と経営 〜環境や立場を活かす戦略(Homing 2026)
kuranuki
2
1.2k
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
2
1.8k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
How STYLIGHT went responsive
nonsquared
100
6.2k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Product Roadmaps are Hard
iamctodd
55
12k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
510
Docker and Python
trallard
47
4k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
A Modern Web Designer's Workflow
chriscoyier
698
190k
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͕༷௨Γʹͳ͍ͬͯΔ͜ͱΛ อূ͢ΔͨΊʯͰ͋Δ͜ͱΛΕͳ͍Α͏ʹ͍ͨ͠ ςετͷత͕ʮϝϯςφϯεΛ͠ͳ͍Α͏ʹςετΛճ͢͜ͱʯʹ ͳͬͯ͠·͏ͱҙຯ͕ແ͍
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ