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
読みやすいテストコードへの一歩、適切なAssertionを使う
Search
asumikam
March 09, 2024
4
2.1k
読みやすいテストコードへの一歩、適切なAssertionを使う
PHPerKaigi 2024
https://fortee.jp/phperkaigi-2024/proposal/1be00d06-afa8-4ba9-a49b-9118c782f8e3
asumikam
March 09, 2024
Tweet
Share
More Decks by asumikam
See All by asumikam
ちいさくPHPUnitをつくり、仕組みと拡張ポイントを探る
asumikam
2
300
プロダクトコードとOSSに学ぶ例外処理の選択肢 — キャッチするのか、投げっぱなしにするのか
asumikam
4
2k
うまくいかないスプリントレビューと、うまくいくスプリントレビュー
asumikam
16
4.6k
わたしの"コミュニティへの還元"リレーション #devsumi
asumikam
2
3.2k
東京Ruby会議12 vs PHPカンファレンス小田原〜オーガナイザーが語る見所と裏側〜
asumikam
0
85
PHPUnitでモックとスタブを使いこなす / PHP Conference Japan 2024
asumikam
4
1.8k
紅白ぺぱ合戦 asumikam LT #cohackpp
asumikam
0
220
『こわい』を 『こわくない』に変える ~OSS貢献編~
asumikam
2
340
「PHPカンファレンス小田原」がつくる世界
asumikam
4
360
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
A Tale of Four Properties
chriscoyier
160
23k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Agile that works and the tools we love
rasmusluckow
329
21k
How to train your dragon (web standard)
notwaldorf
94
6.1k
BBQ
matthewcrist
89
9.7k
Speed Design
sergeychernyshev
32
1k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
24k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
500
Being A Developer After 40
akosma
90
590k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Transcript
ಡΈ͍͢ςετίʔυͷҰาɺ దͳ"TTFSUJPOΛ͏ BTVNJLBN
͜Μʹͪʂ w͋͢Έ͔Μ͏·Εͦͩͪ͗͢ͳΈ͘ w 𝕏 !BTVNJLBNখాݪ͔Β͖·ͨ͠
QSJWBUFϝιουͷςετͬͯ ॻ͔ͳ͍ํ͕͍͍Μ͚ͩͬʁ 1)1FS,BJHJ BTVNJLBN ͖ͬ͞ ൃද͖ͯͨ͠ż‼
͖ͬ͞ͷൃද IUUQTTIPVMEJUFTUQSJWBUFNFUIPETDPN
ʮ୯ମςετͷߟ͑ํ͍ํʯ ୯ମςετʹ͓͍ͯɺ֤ςετɾέʔε͕ ͖͢͜ͱͦͷςετʹؔΘΔਓͨͪʹ ςετରͷίʔυ͕ղܾ͠Α͏ͱ͍ͯ͠ ΔޠʢTUPSZʣΛ͑Δ͜ͱͳͷͰ͢ɻ ͖ͬ͞ͷൃද
ετʔϦʔ͕͏·͘ΘΔͱ ༷ ͕ςετέʔεʹΑͬͯ දݱ͞Ε͍ͯΔ͜ͱ͕େࣄͳͷͰͳ͍͔ ͖ͬ͞ͷൃද
ʮ༷ʯΛςετίʔυʹදݱ͢Δ w Βͳ͍ίʔυΛಡΉ࣌ʹςετίʔυ͕͋Δͱ ʮͳʹΛΧόʔ͍ͯ͠Δ͔ʯ͕͙͢ʹΘ͔ͬͯྑ͍ w ͭ·ΓɺʮͳʹΛΧόʔ͍ͯ͠Δ͔ʯΛ త֬ʹࣔ͢ΞαʔγϣϯΛॻ͘͜ͱ͕େࣄ
දݱํ๏ʹʮ͍ۙʯͱʮԕ͍ʯ͕͋Δ w ۙ͗͢ΔͱzِཅੑzͬΆ͘ͳΔ͠ ԕ͗͢ΔͱzِӄੑzͬΆ͘ͳΔ🧐 w ৄ͘͠ˠ
༷Λදݱͨ͠ྑ͍ڑײͷ ςετίʔυΛॻͨ͘Ίʹʜ ͲΜͳ"TTFSUJPO͕͋Δ͔Λ ͓ͬͯ͘ͷ͕େࣄ🙌
༷Λදݱͨ͠ྑ͍ڑײͷ ςετίʔυΛॻͨ͘Ίʹʜ ͲΜͳ"TTFSUJPO͕͋Δ͔Λ ͓ͬͯ͘ͷ͕େࣄ🙌
͍ͬͯ͘ʂ ͋͢ΈΊ ͜͜·ͰͰ
͓͠ͳ͕͖ ʮదʹʯۙ͘͢Δ ʮͪΐͬͱԕΊʹʯྻΛΈΔ BTTFSU&RVBMT
ʮదʹʯۙ͘͢Δ
ʮదʹʯۙ͘͢Δ w ʮͦΕBTTFSU4BNFΑΓదͳͷ͋Δ͔ʂ🧐ʯ w ࢥߟͷखΛݮΒͯ͠ʮదʹʯ͍ۙͯ͘͘͠
ʮBTTFSU4BNFʯΛ͏ͱʜ Կ͔͕ʮಉ͡ʯͩͳʙ ͱԿ͔͕ಉͩ͡ͳʙ ͳʹ͔ΛDPVOUͯ͠Δͧ BDUVBM͔ʂ
ʮBTTFSU$PVOUʯΛ͏ͱ‼ Կ͔͕ʮಉ͡ʯͩͳʙ ͱԿ͔͕ಉͩ͡ͳʙ BDUVBM͔ʂ
ʮࢥߟͷखʯ͕ݮΔײ͡ ՄಡੑŗşƄŗşƄ
ʮࢥߟͷखʯΛݮΒͧ͢ʂू
ʮࢥߟͷखʯΛݮΒͧ͢ʂू
ʮࢥߟͷखʯΛݮΒͧ͢ʂू BTTFSU4BNFΑΓ Ҿ͕ݮͬͨΓ͢Δ Ϩϐʔ😘
ʮࢥߟͷखʯΛݮΒ͢ڧྗͳڠྗऀ w 3FDUPS͕ஔ͖͑ͯ͘ΕͨΓ w IUUQTHJUIVCDPNSFDUPSQIQSFDUPSQIQVOJUCMPCNBJOSVMFT $PEF2VBMJUZ3FDUPS.FUIPE$BMM"TTFSU1SPQFSUZ&YJTUT3FDUPSQIQ w 1)14UPSN͕ࢦఠͯ͘͠ΕͨΓ w IUUQTXXXKFUCSBJOTDPNIFMQQIQTUPSNQIQBTTFSUJPODBOCF
SFQMBDFEXJUIBTTFSUFNQUZBTTFSUOPUFNQUZIUNM w 1)14UBO͕ࢦఠͯ͘͠ΕͨΓ w IUUQTHJUIVCDPNQIQTUBOQIQTUBOQIQVOJU
ʢ༨ஊʣ NFTTBHF͔͍ͯ·͔͢ʁʁ͔͖·͠ΐ͏ʂʂ खͬऔΓૣ͘ʮਖ਼͘͠ͳ͍ʯΛ ͑ΒΕͯՄಡੑŗşƄŗşƄɻ ͋͢ΈΊ ͜͜·ͰͰ
ʮͪΐͬͱԕΊʹʯ ྻΛΈΔ
BTTFSU4BNFͰશ෦ݟΔͱ ͪΐͬͱۙ͗͢Δ͕࣌͋Δ
BTTFSU4BNFͰશ෦ݟΔͱ ͪΐͬͱۙ͗͢Δ͕࣌͋Δ શ෦Λ͔֬Ί͍ͨ Θ͚͡Όͳ͍ Μ͚ͩͲͳ͊
BTTFSU4BNFͰશ෦ݟΔͱ ͪΐͬͱۙ͗͢Δ͕࣌͋Δ શ෦Λ͔֬Ί͍ͨ Θ͚͡Όͳ͍ Μ͚ͩͲͳ͊ BTTFSU4BNF͏ͱ ͔֬Ί͍ͨ͜ͱ͕ ϘϠ͚Δͳ͊
BTTFSU4BNFͰશ෦ݟΔͱ ͪΐͬͱۙ͗͢Δ͕࣌͋Δ શ෦Λ͔֬Ί͍ͨ Θ͚͡Όͳ͍ Μ͚ͩͲͳ͊ BTTFSU4BNF͏ͱ ͔֬Ί͍ͨ͜ͱ͕ ϘϠ͚Δͳ͊ େ͕খΛ ݉Ͷͳ͍
ʮͪΐͬͱԕΊʯ͔ΒΈͯ ͪΐ͏Ͳ͍͍࣌͋Δ
Έ͍ͨͱ͜Ζ͚ͩɺΈΔʂ
BTTFSU"SSBZ)BT,FZ ʮͪΐͬͱԕΊʯ͔ΒྻΛΈΔू *UFSBCMFʢྻʣʹࢦఆͷΩʔ͕͋Δ͔
BTTFSU$POUBJOT ʮͪΐͬͱԕΊʯ͔ΒྻΛΈΔू *UFSBCMFʢྻʣͷதʹࢦఆͷཁૉ͕͋Δ͔
BTTFSU$POUBJOT0OMZ ʮͪΐͬͱԕΊʯ͔ΒྻΛΈΔू *UFSBCMFʢྻʣͷཁૉ͕ࢦఆͷܕͷΈ͔
BTTFSU$POUBJOT 0OMZ*OTUBODF0G ʮͪΐͬͱԕΊʯ͔ΒྻΛΈΔू *UFSBCMFʢྻʣͷཁૉ͕ ͯ͢ࢦఆͷΦϒδΣΫτ͔
ਖ਼͍͠ڑײΛߟ͑ͯ ΞαʔγϣϯΛબ΅͏ ͋͢ΈΊ ͜͜·ͰͰ
BTTFSU&RVBMT
Α͘ฉ͖·͢ΑͶɺίϨɻ
Α͘ฉ͖·͢ΑͶɺίϨɻ
Α͘ฉ͖·͢ΑͶɺίϨɻ ཁʮΏΔ͍ൺֱʯͱʮ͖͍ͭൺֱʯ
͏Ұาઌ
ʮΏΔ͍ʯํ͕خ͍࣌ͬͯ͠ͳ͍Ͱ͔͢ʁ
ʮΏΔ͍ʯํ͕خ͍࣌ͬͯ͠ͳ͍Ͱ͔͢ʁ wΦϒδΣΫτ wྻ
BTTFSU&RVBMTͱΦϒδΣΫτ
BTTFSU&RVBMTͱΦϒδΣΫτ ˡམͪΔ
BTTFSU&RVBMTͱΦϒδΣΫτ ˡམͪΔ ˡམͪͳ͍
BTTFSU&RVBMTͱΦϒδΣΫτ wΦϒδΣΫτಉ࢜ͷൺֱ ͩͱBTTFSU&RVBMTͷํ͕ خ͍͠ w͜Μͳײ͡ͷʮخ͍͠ʯ ৭ʑ୳͍ͬͯ͘Ρʂʂʂ
BTTFSU&RVBMTͱ࿈ྻ
BTTFSU&RVBMTͱ࿈ྻ ˡམͪΔ
BTTFSU&RVBMTͱ࿈ྻ ˡམͪΔ ˡམͪͳ͍
BTTFSU&RVBMTͱ࿈ྻ
BTTFSU&RVBMTͱ࿈ྻ w ࿈ྻͷॱ൪ w Ωʔͷॱ൪Λؾʹͤͣʹ Ξαʔγϣϯ͍ͨ࣌͠ʹ͑Δ w ʮॱ൪ʹڵຯͳ͍Ͱ͢Αʯ
ͬͯ࣌ʹબ͢Δ
ఴࣈྻͷ߹
ఴࣈྻͷ߹ ˡམͪΔ
ఴࣈྻͷ߹ ˡམͪΔ ˡམͪΔ
ఴࣈྻͷ߹ ŪƄŖţſ
ఴࣈྻͷ߹ 🤩🤩🤩
ఴࣈྻͷ߹ BTTFSU&RVBMT $BOPOJDBMJ[JOH ྻͷཁૉ͕ಉ͡Ͱ͋Δ͔Ͳ͏͔Λݕূɺ ॱংΛແࢹͯ͠ൺֱ
ఴࣈྻͷ߹ BTTFSU&RVBMT $BOPOJDBMJ[JOH ྻͷཁૉ͕ಉ͡Ͱ͋Δ͔Ͳ͏͔Λݕূɺ ॱংΛແࢹͯ͠ൺֱ நग़ॲཧͰ ࣃൈ͚ʹͳͬͨྻ ͱ͔ʹศར
"QQFOEJY 1)16OJU͕͘Δ🚀
"QQFOEJY1)16OJU͕͘Δ🚀 w 5FTU%PVCMFT w 1)16OJUͰTPGUEFQSFDBUFEʹͳͬͨςετελϒͱϞοΫΦϒδΣΫτ ؔ࿈ͷϝιου͕IBSEEFQSFDBUFEʹʢ1)16OJUͰআʣ w .FUBEBUB w EPDίϝϯτͰॻ͍͍ͯͨςετΞ
ϊςʔγϣϯ͕EFQSFDBUFEʹ ʢ1)16OJUͰআʣ w "UUSJCVUFͰॻ͜͏ͳʂʂʂ w NPSFIUUQTQIQVOJUEFBOOPVODFNFOUTQIQVOJUIUNM
śŭŭŸ1)16OJU֓ʢ͞Μʣ ίϨͱ߹Θͤͯ 1)16OJUͷ DIBOHFMPHΛݟΔͱ ྲྀΕ͕Θ͔ͬͯ ໘ന͍👏
·ͱΊ·͢ʂ
wʮԕۙײ͕ŘŘײ͡ʯͷΞαʔγϣϯΛॻ͘ͱ ಡΈ͍͢ςετίʔυʹͳΔϤ wͬͯ͐ʙͷ͔Β৭ʑհ͖ͯ͠·ͨ͠
ʮదʹʯۙ͘͢Δ
wBTTFSU$PVOU wBTTFSU5SVF BTTFSU'BMTF wBTTFSU/VMM wBTTFSU&NQUZ ʮదʹʯۙ͘͢Δ
ʮԕۙײʯΛେࣄʹ͢Δ
wBTTFSU&RVBMTΛ͏બ wʮԕۙײʯͷදݱํ๏ ʮԕۙײʯΛେࣄʹ͢Δ ԕ͍ ͍ۙ BTTFSU&RVBMT $BOPOJDBMJ[JOH BTTFSU&RVBMT BTTFSU$POUBJOT
ܥ ˞Πϝʔδਤ
wBTTFSU&RVBMTΛ͏બ wʮԕۙײʯͷදݱํ๏ ʮԕۙײʯΛେࣄʹ͢Δ ԕ͍ ͍ۙ BTTFSU&RVBMT $BOPOJDBMJ[JOH BTTFSU&RVBMT BTTFSU$POUBJOT
ܥ ˞Πϝʔδਤ
wʮ*.0ʯͰ͢ʂ wͲͷબΛ͢Δ͔Έ͔ͳ🥺 wʮͦΕΛzબz͍ͯ͠Δཧ༝ʯ͕ νʔϜͷڞ௨ೝࣝͱͯ͠ங͚͍ͯͨΒśŖſśŖşŖ‼
Ҿ͖ग़͠Λ૿ͯ͠ ϝνϟɾΧΠςΩɾςετϥΠϑ ΛૹΖ͏ʂ
🍊͓ΘΓ🍊 Έͯ͘ΕͯŗžŜƄŪŤƃŝœŖ😘