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
テスト on Rails
Search
Amazyra
June 30, 2020
Technology
81
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テスト on Rails
新卒者向けにテストと触れ合ってみよう! という意味で作った資料。
Amazyra
June 30, 2020
Other Decks in Technology
See All in Technology
Refining Active Record
shugo
0
160
Browser Spec: Testing Hotwire with Ruby
takahashim
1
120
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
190
継続的なAIコスト最適化
bgpat
1
340
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
7
6k
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
190
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
590
CTO Night|NotionのAIエージェントとFDE
kzkhykw1991
0
110
go-sqletch
moznion
0
140
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
180
遠藤な_めぐろLT #38 「社内のAI活用推進」@麻布台_20261009
endonanana
0
130
Rust で関数型ドメインモデリング
takonda
0
140
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
The Invisible Side of Design
smashingmag
301
52k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Odyssey Design
rkendrick25
PRO
2
870
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
Deep Space Network (abreviated)
tonyrice
0
370
Joys of Absence: A Defence of Solitary Play
codingconduct
1
550
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
310
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Transcript
ςετ on Rails ςετͷ࠷ॳͷҰาΛࢦͯ͠ ͋·͡Β 2020/06/27
ຊࢿྉͷత • ৽ଔऀ͚ • ಡऀ͕ςετͷҙٛΛཧղ͢Δ • ಡऀ͕ςετͷఔΛཧղ͢Δ • ಡऀ͕ςετΛ࣮ࢪͰ͖ΔΑ͏ʹ͢Δ •
ʢετϨονΰʔϧʣςετΛଞऀʹࢦಋͰ͖ΔΑ͏ࢧԉ͢Δ
໔ • ͜ͷࢿྉ͕Λ࣋ͯΔ(=ΛՌͨͤΔ)ࢿྉʹͳΔΑ͏ɺ • ܦݧऀͷํποίϛΛ͓ئ͍͠·͢ • ॳ৺ऀͷํٙ೦͕༙͍ͨΒࢦఠ͍ͯͩ͘͠͞
ΞδΣϯμ • ςετͱ • ςετ͕Ռͨ͢͜ͱ • ςετͷΓํ • ςετۦಈ։ൃʢࣗशࢿྉʣ •
͞ΒͳΔൃలͷͨΊʹ
ςετͷҙٛ
࣭ • ιϑτΣΞͷܽؕ৫ސ٬ʹΛ༩͑ΔʢҎԼɺྫʣ • ܦࡁతͳଛࣦ • ࣌ؒͷ࿘අ • ৴༻ͷࣦ •
োࢮࣄނ • ςετιϑτΣΞͷ࣭ΛධՁ͠ɺ࣮ڥͰͷϦεΫΛݮ͢Δ खஈͷҰͭɻ ౬ຊ߶ ଞʢஶʣιϑτΣΞςετڭՊॻ JSTQB Foundation ୈࡾ൛ 2011/11/11
࣭ͷ߹ҙ • લఏ: 100%ܽؕͷͳ͍Λ࡞Δ͜ͱͰ͖ͳ͍ • डऀଆͱൃऀଆͰɺ࣭ͷᴥᴪൃੜ͢Δ • ։ൃ͍ͯ͘͠͏ͪʹɺ࣭͕มಈ͢Δ͜ͱ͋Δ • ࣭ΛܭଌՄೳͳܗʹͯ͠ɺ߹ҙ͢ΔʢҎԼɺྫʣ
• ࣭อূॻɺ໔ࣄ߲ɺSLAʢSerivce Level Agreementʣ ౬ຊ߶ ଞʢஶʣιϑτΣΞςετڭՊॻ JSTQB Foundation ୈࡾ൛ 2011/11/11
߹ҙͷͨΊʹ • ࣭Λอূ͢ΔͨΊʹҎԼͷ͜ͱΛߦ͏ඞཁ͕͋Δ • తͷ࣭Λୡ͍ͯ͠Δ͔ݕূΛߦ͏ • ࣭ΛؒతʹఆྔԽ͠ɺ݅Λຬͨ͢͜ͱΛ֬ೝ͢Δ ౬ຊ߶ ଞʢஶʣιϑτΣΞςετڭՊॻ JSTQB
Foundation ୈࡾ൛ 2011/11/11
ςετͷޮೳ
ςετͷޮೳ • ࣭ͷ֬อ͕Ͱ͖Δ • తͷ࣭Λୡ͍ͯ͠Δ͔ݕূΛߦ͏ • ࣭ͷܭଌ͕Ͱ͖Δ • ࣭ΛؒతʹఆྔԽ͢ΔʢΧόϨοδɺނোൃੜ݅ͷਪҠʣ •
ϓϩηεվળͷͨΊͷใఏڙ͕͞ΕΔ • ಉ͡ݪҼͷܽؕΛ࡞Γࠐ·ͳ͍ • ΑΓϝϯςφϯε͍͢͠ίʔυʹͳΔ • ςετ͕͍͢͠=ػೳ͕໌֬ʹ͔Ε͍ͯͯɺΓग़͞Ε͍ͯΔ ౬ຊ߶ ଞʢஶʣιϑτΣΞςετڭՊॻ JSTQB Foundation ୈࡾ൛ 2011/11/11
࣭ͷ֬อͷ໘Ͱ֬ೝ͢Δ • ༷௨Γ࡞ΕͯΔʁ • ސ٬ͱͷ߹ҙͷݩɺཁٻ͞Εͨͷ࡞Ε͍ͯΔ͔֬ೝ • ଥͳධՁͰ͖ͯΔʁ • ιϑτΣΞʹͱͬͯେࣄͳࢦඪຬ͍ͨͤͯΔ͔֬ೝ •
ਓ͕ؒ࣌ؒ࡞ۀ͢ΔιϑτΣΞɹˠ͍উखͷྑ͕͞伴 • ނো͕ڐ͞Εͳ͍ιϑτΣΞɹɹɹˠނো͕θϩ͕伴 • ༧ࢉ͕ݶΒΕ͍ͯΔιϑτΣΞɹɹˠ։ൃඅ༻ͷগͳ͕͞伴
࣭ͷܭଌ • Α͘߹ҙʹΘΕΔࢦඪΛҎԼʹఏࣔ͢Δ • Քಇʢۀ, ΠϯϑϥܥͳͲৗ࣌Քಇ͕جຊͷ߹Α͘ΘΕ Δʣ • ΧόϨοδʢͲͷൣғͷίʔυ͕ݕূରʹͳ͍ͬͯΔ͔ʣ •
ςετใࠂॻʢडଆ͕ใࠂॻΛݕऩ͢Δʣ
ςετͷϫʔΫϑϩʔ
ςετͷ࣮ߦϓϩηε • ςετͷ࣮ߦ͚͕ͩςετͰͳ͍ 1. ܭը 2. ࣮ 3. ࣮ߦ 4.
ใࠂʢࠓճઆ໌͠ͳ͍ʣ 5. ίϯτϩʔϧʢࠓճઆ໌͠ͳ͍ʣ • ܽؕमਖ਼ʢࠓճઆ໌͠ͳ͍ʣ ౬ຊ߶ ଞʢஶʣιϑτΣΞςετڭՊॻ JSTQB Foundation ୈࡾ൛ 2011/11/11
ςετใࠂʗίϯτϩʔϧʗܽؕमਖ਼ • ςετ࣮ࢪྃΛใࠂʗݟ͔ͭͬͨܽؕΛใࠂ͢Δ • ςετͷਐḿΛ֬ೝ͠ɺจॻԽͯ͠ސ٬ͱڞ༗͢Δ • औΓܾΊͨج४Λຬ͍ͨͯ͠ͳ͍ͳΒରࡦΛߦ͏ • ܽؕΛमਖ਼͢Δ ౬ຊ߶
ଞʢஶʣιϑτΣΞςετڭՊॻ JSTQB Foundation ୈࡾ൛ 2011/11/11
ςετͷछྨ
ςετ͕֬ೝ͢Δ͜ͱͷϚτϦΫε ౬ຊ߶ ଞʢஶʣιϑτΣΞςετڭՊॻ JSTQB Foundation ୈࡾ൛ 2011/11/11 ςετϑΣʔζʢରͷେ͖͞ʣ Ϣχοτςετ ౷߹ςετ
γεςϜςετ डೖςετ ςετ λΠϓ ػೳ ςετ ֤ؔϞδϡʔϧ͕ظ௨ Γʹಈ࡞͢Δ ϞδϡʔϧΛΈ߹Θ ͤͯظ௨Γಈ࡞͢Δ ΠϯϑϥؚΊͯ ظ௨Γಈ࡞͢Δ γεςϜશମͱͯ͠ ظ௨Γಈ࡞͢Δ ඇػೳ ςετ ྫมߋ͍͢͠ίʔυʹͳ ͍ͬͯΔ ྫॲཧ͕࣌ؒنఆ ΛԼճΔ ྫෛՙݶք ෛՙΛ͑ͨ࣌ͷಈ࡞ ྫଞγεςϜͱͷ ࿈ܞ ߏ ςετ ςετΛ࣮ߦͨ݁͠Ռɺ ιϑτΣΞͷߏͷશͯΛΧόʔ͍ͯ͠Δ มߋ෦ͷς ετ मਖ਼ͨܽؕ͠ʹΑΔނো͕࠶ݱ͠ͳ͍ มߋ͕ରൣғҎ֎ʹӨڹΛ༩͑ͳ͍ ผΠϯϑϥͰಈ࡞͢Δ
։ൃϥΠϑαΠΫϧʹԊͬͨςετϑΣʔζ Ҿ༻ݩ: ౬ຊ߶ ଞʢஶʣιϑτΣΞςετڭՊॻ JSTQB Foundation ୈࡾ൛ 2011/11/11 ։ൃʢʹςετϑΣʔζʣ͕ਐΉ΄Ͳ ςετͷରൣғ͕͕Δ͜ͱ͕
͜ͷਤ͔ΒΘ͔Δ
ඇػೳςετ • ඇػೳςετଟذʹΘͨΔʢҎԼɺྫʣ • ੑೳςετ……ॲཧ͕࣌ؒنఆҎԼ • ϩʔυςετ……ෛՙΛ૿Ճͤͨ࣌͞γεςϜ͕͑ΒΕΔ͔ • ετϨεςετ……ݶքΛ͑ͨෛՙ࣌ʹͲ͏ͳΔ͔ •
ϢʔβʔϏϦςΟςετ……Ϣʔβʔʹͱ͔ͬͯΓ͍͢UI͔ • อकੑςετ…….มߋ͕༰қ͔ʢܽؕͷमਖ਼ָ͕ʣ
ςετͷܭը
ςετܭը • ςετͷతΛܾΊΔʢରൣғɺԿΛ͍͔͗ͨʣ • ςετͷجຊํΛܾΊΔʢͲ͜·Ͱ֬ೝ͢Δ͔ʣ • ςετϦιʔεΛܭը͢ΔʢڭҭΛࢪ͢ɺਓΛ֬อ͢ΔɺΛ֬ อ͢Δʣ • ςετέʔεΛܾΊΔʢରͷϦετɺԿΛ࣋ͬͯऴྃͱ͢Δ͔ʣ
౬ຊ߶ ଞʢஶʣιϑτΣΞςετڭՊॻ JSTQB Foundation ୈࡾ൛ 2011/11/11 લͬͯܭը͢Δ ։ൃ߲͝ͱʹఆΊΔʢΞδϟΠϧͰʣ
ҙࣄ߲ • Ͳ͜·Ͱ֬ೝ͢Δ͔͑ΔϦιʔεͱ૬ஊʹͳΔ͜ͱ͕ଟ͍ • Ζ͏ͱ͢ΕͲ͜·ͰͰ͖Δ • ࣭ʹର͢ΔγϏΞ͞ʹΑܾͬͯΊΔʢʹͲΜͳج४Λෑ͔͘ʣ • ྫ: ͜ͷߴॴ࡞ۀ༻ͷ҆શϕϧτམԼ࣌ʹ50%ͷ֬Ͱ໋Λकͬ
ͯ͘ΕΔ
ςετٕ๏
ςετٕ๏ • લఏ: Ұͭͷػೳʹରͯ͠ɺෳͷςετ͕ଘࡏ͢Δ • લఏ: ͑Δ࣌ؒʹର࣮ͯ͠ߦͰ͖Δςετͷेʹେ͖͍ • ͍͔ʹςετΛߏԽͯ͠ɺཁ͚ͩΛςετ͢Δ͔͕؊
ߏԽͷදྫ: ਖ਼ৗܥͱҟৗܥ • ೖྗʹணͯ͠ɺͦΕͧΕͷ߹ʹ͚ͯߟ͑Δ • ਖ਼ৗܥ……ఆ͢Δೖྗ͕ಘΒΕͨ࣌ʹظ͢Δग़ྗ͕ग़Δܥ౷ • ҟৗܥ……ఆ֎ͷೖྗ͕ಘΒΕͨ࣌ʹΤϥʔΛ௨͢Δܥ౷ • :
Τϥʔ͕ى͖ΔͱγεςϜ͕ࢭ·ΔͷͰɺͦΕΛϋϯυϦϯάͯ͠Ͳ ͏͢Εɺఆ͢ΔೖྗʹͳΔ͔௨͢Δඞཁ͕͋Δ (Rails͋ΔఔΑ͠ͳ͠ʹͬͯ͘ΕΔͷͰɺΤϥʔ͕ى͖ͯγες Ϝ͕ࢭ·Βͳ͍ɻͰɺຊྑ͘ͳ͍ʣ
ࣅͨߏԽͷྫ • தʹifจ͕͋ΔͳΒɺifͷ݅Ͱ͚ͯͦΕͧΕݕূ͢Δ • ͷਖ਼ෛͰ͕݅ҧ͏ͳΒɺͦ͜Ͱ͚ͯͦΕͧΕݕূ͢Δ • ঢ়ଶʹΑͬͯॲཧ͕ҧ͏ͳΒɺͦ͜Ͱ͚ͯͦΕͧΕݕূ͢Δ • ෆਖ਼߈ܸΛड͚ΔՄೳੑ͕͋ΔͳΒɺෆਖ਼߈ܸ͝ͱʹ͚ͯݕূ͢Δ •
͍Ζ͍Ζ͋ΔͷͰɺৄ͘͠ຊΛಡΜͰ͍ͩ͘͞
ॏཁͷߴ͍ॱʹݕূ͢Δ • Ϣʔβʔ͕Α͘Δૢ࡞ॱʹݕূ͢Δ • Ϣʔβʔ͕Α͘ΔҰ࿈ͷखଓ͖Λ·ͱΊͯɺؔ࿈͢ΔϢχοτͰ ݁߹ςετΛߦ͏ • Τϥʔͷڐ͞Εͳ͍ॲཧʢߪങखଓ͖ʣॱʹݕূ͢Δ
ςετΛࢧ͑ΔΈ
ςετϑϨʔϜϫʔΫ • ςετΛޮΑ࣮͘ߦ͢ΔϑϨʔϜϫʔΫ͕ଘࡏ͢Δ • Rails • RSpecʢࣗಈςετπʔϧ: ࣗಈςετΛهड़/࣮ߦͰ͖Δʣ • FactoryBotʢϞοΫ:
ςετ༻ͷσʔλΛ࡞͢Δʣ • Javascript • JestʢࣗಈςετπʔϧʴϞοΫʣ
ԋश: RspecΛ͍͜ͳ͢
࣮ࡍʹͬͯΈΔ • ςετ༻ͷϦϙδτϦΛ༻ҙͨ͠ • URL • ReadmeΛಡΜͰڥΛཱ͍ͯͯͩ͘͞ • ࠓճRspecΛͬͯRailsͷϢχοτςετͷػೳςετΛ࡞͠· ͢
جຊతͳςετ߲ʢϞσϧฤʣ • ֤Ϟσϧͷػೳςετ • validationʢਖ਼ৗͳํͱɺҟৗͳํʣ • DBϧʔϧʢNOT NULL, UNIQUEʣ •
֤ؔͷςετ ʢظ͢ΔҾͷͱ͖ɺਖ਼ৗʹಈ͔͘ɺͦ͏Ͱͳ͍ͱ͖ɺਖ਼͘͠Τ ϥʔʹରॲͰ͖Δ͔ʣ ࢀߟจݙ: https://passingloop.hatenadiary.org/entry/20111125/how_to_write_rails_activerecord_model_tests
جຊతͳςετ߲ʢίϯτϩʔϥʔฤʣ • ֤ίϯτϩʔϥʔͷػೳςετ • ਖ਼ৗͳΞΫηε or ҟৗͳΞΫηεʢhttp statusʣ • ਖ਼ৗʹදࣔͰ͖͍ͯΔ͔ʢrender
templateʣ • Πϯελϯεมʢྫ: @userʣ͕ଘࡏ͢Δor͠ͳ͍࣌ͷڍಈ • Ϟσϧͷ૿ݮ͕ͳ͞ΕΔ͔ʢՃɺআɺมߋ͕͋Δ߹ͷΈʣ • ϦμΠϨΫτ͞ΕΔ͔ ࢀߟจݙ: https://qiita.com/geshi/items/a930461f36bae880657d
جຊతͳςετ߲ʢhelperฤʣ • ֤ϖϧύʔͷςετ • ֤ؔͷςετ ʢظ͢ΔҾͷͱ͖ɺਖ਼ৗʹಈ͔͘ɺͦ͏Ͱͳ͍ͱ͖ɺਖ਼͘͠Τ ϥʔʹରॲͰ͖Δ͔ʣ
جຊతͳςετ߲ʢhelperฤʣ • ֤ϖϧύʔͷςετ • ֤ؔͷςετ ʢظ͢ΔҾͷͱ͖ɺਖ਼ৗʹಈ͔͘ɺͦ͏Ͱͳ͍ͱ͖ɺਖ਼͘͠Τ ϥʔʹରॲͰ͖Δ͔ʣ
࣮ࡍʹͬͯΈͨ • ࢲ͕ͬͨ݁ՌͷϦϙδτϦΛ༻ҙͨ͠ • URL • ͕ࣗ࡞ͬͯΈͨͷͱൺͯΈΑ͏ ʢҙ: ࢲ͕࡞ͬͨͷ͕શͯਖ਼͍͠Θ͚Ͱͳ͍ɻ৭ΜͳίʔυΛ ݟͯɺͬͱྑ͍ίʔυͷॻ͖ํʹ͍ͭͯݟΛͨΊͯཉ͍͠ɻ͜͏
͍͏ॻ͖ํ͋ΔΜͩɺ͜Ε͜͏͍͏ϦεΫ͕͋ΔͷͰόοτϓϥ ΫςΟεͰ͋Δɺͱ͔ɻʣ
ൃల: ςετۦಈ։ൃ
࣮ࡍʹͬͯΈΔ • ઌʹςετΛ༻ҙ্ͨ͠Ͱ࣮ͯ͠ΈΑ͏ • ࣮͍ͨ͠ػೳɺRspecΛ͍͜ͳͦ͏ͱಉ͡ • ϕʔεͱͳΔϦϙδτϦΛgitlabʹՃ͍ͯ͠Δ • URL •
ReadmeΛಡΜͰڥΛཱ͍ͯͯͩ͘͞
͋ͳ͕ͨΔ͜ͱ 1. ͋ΔҰͭͷػೳʹରͯ͠ɺςετΛॻ͍ͯɺςετ͕ࣦഊ͢Δ͜ͱΛ ֬ೝ͢Δʢҙ: ௨ৗҰͭͷػೳʹରͯ͠ෳͷςετ͕ଘࡏ͢Δʣ 2. ରͷػೳΛ࣮͢Δ 3. ςετ͕ޭ͢Δ͜ͱΛ֬ೝ͢Δ 4.
ରͷػೳΛͬͱ͏·͘ॻ͘ํ๏͕ͳ͍͔֬ೝ͢ΔʢϦϑΝΫλϦ ϯάʣ 5. मਖ਼͕ऴΘͬͨΒɺ࠶ͼςετ͕ޭ͢Δ͜ͱΛ֬ೝ͢Δ
ண 1. ͕ࣗ࡞Γ͍ͨػೳͲͷΑ͏ʹςετ͞ΕΔ͖͔ʁʢʹͲͷΑ ͏ʹෳͷʹׂͰ͖Δ͔ʣ →ྑ͍ઃܭͰ࣮͢ΔͨΊͷୈҰา 2. Ͳ͜·Ͱςετ͢Δ͜ͱʹ͢Δ͔ʁʢͲ͕͜ରॲ͠ʹ͍͔͘ʣ →ίʔυΛಡΜͰύοͱΘ͔Βͳ͍ͱ͜Ζςετ͖͢