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
テストケースの名前はどうつけるべきか?
Search
Kuniwak
PRO
December 14, 2024
Programming
1
440
テストケースの名前はどうつけるべきか?
Kuniwak
PRO
December 14, 2024
Tweet
Share
More Decks by Kuniwak
See All by Kuniwak
欠陥を早期に発見するための Software Engineer in Test とその重要性 / What is Software Engineer in Test and How they works
orgachem
PRO
21
4.2k
住宅を WebXR で評価しよう / Evaluating My Home by WebXR
orgachem
PRO
0
110
HOME VR
orgachem
PRO
1
800
uGUI の自動操作の考え方と操作方法
orgachem
PRO
1
1.4k
Swift Macro に備えて構文木を 10min で学ぶ / Learn Syntax Tree for Swift Macro in 10 minutes
orgachem
PRO
1
1.3k
SoftWare Engineer in Test のおしごと / What is SWET
orgachem
PRO
1
1.1k
私と Nature Remo E / Nature Remo E
orgachem
PRO
0
26k
存在しないアセットへの参照と 未公開アセットでのネタバレに どう立ち向かうか / How to prevent missing assets and spoilers by assets
orgachem
PRO
1
1.1k
睡眠する技術 / Technology to Sleep
orgachem
PRO
15
14k
Other Decks in Programming
See All in Programming
Ruby's Line Breaks
yui_knk
2
1.3k
ComposeでのPicture in Picture
takathemax
0
120
実践Webフロントパフォーマンスチューニング
cp20
10
1.9k
Orleans + Sekiban + SignalR でリアルタイムWeb作ってみた
tomohisa
0
110
Qiita Bash
mercury_dev0517
2
210
KANNA Android の技術的課題と取り組み
watabee
0
110
Lambda(Python)の リファクタリングが好きなんです
komakichi
3
220
Unlock the Potential of Swift Code Generation
rockname
0
270
エンジニア向けCursor勉強会 @ SmartHR
yukisnow1823
0
100
国漢文混用体からHolloまで
minhee
1
200
状態と共に暮らす:ステートフルへの挑戦
ypresto
2
780
Optimizing JRuby 10
headius
0
430
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
336
57k
Writing Fast Ruby
sferik
628
61k
Embracing the Ebb and Flow
colly
85
4.7k
Into the Great Unknown - MozCon
thekraken
37
1.7k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Speed Design
sergeychernyshev
29
900
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
The World Runs on Bad Software
bkeepers
PRO
67
11k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
178
53k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Designing for Performance
lara
608
69k
Transcript
ςετέʔεͷ໊લ Ͳ͏͚ͭΔ͖͔ʁ ,VOJXBL 48&5( %F/"$P -UE
ࠓ͍͑ͨ͜ͱ 2 ςετέʔεʹಉύʔςΟγϣϯͷ໊લΛ͚ͭΔ
࠷ॳʹςετέʔεΫΠζ 3
ͲͪΒͷςετέʔε໊͕ϨϏϡʔ͍͢͠ʁ 4 " # ʮͷͱ͖ʯ ʮͷͱ͖'J[[ʯ ʮͷͱ͖#V[[ʯ ʮͷͱ͖'J[[#V[[ʯ ʮͰͰׂΓΕͳ͍ ͱ͖ਐจࣈྻʯ
ʮͰׂΓΕͯͰ ׂΓΕͳ͍ͱ͖'J[[ʯ ʮͰׂΓΕͯͰ ׂΓΕͳ͍ͱ͖#V[[ʯ ʮͰͰׂΓΕΔ ͱ͖'J[[#V[[ʯ
ͲͪΒͷςετέʔε໊͕ϨϏϡʔ͍͢͠ʁ 5 " # ʮͷͱ͖ʯ ʮͷͱ͖'J[[ʯ ʮͷͱ͖#V[[ʯ ʮͷͱ͖'J[[#V[[ʯ ʮͰͰׂΓΕͳ͍ ͱ͖ਐจࣈྻʯ
ʮͰׂΓΕͯͰ ׂΓΕͳ͍ͱ͖'J[[ʯ ʮͰׂΓΕͯͰ ׂΓΕͳ͍ͱ͖#V[[ʯ ʮͰͰׂΓΕΔ ͱ͖'J[[#V[[ʯ Ͳ͏ͯ͠ΛબΜͰ ͍Δ͔Θ͔Βͳ͍ ͷͱ͖Ͳ͏ͳΔΜͩΖ͏ʁ ࢼ͞ͳ͍͍ͯ͘ͷ͔ͳʁ ͕࣌ؒͳ͍ͱΑ͘Θ͔Μͳ͍͠ -(5.ͬͯͳΔʢࣄނΔʣ
ͲͪΒͷςετέʔε໊͕ϨϏϡʔ͍͢͠ʁ 6 " # ʮͷͱ͖ʯ ʮͷͱ͖'J[[ʯ ʮͷͱ͖#V[[ʯ ʮͷͱ͖'J[[#V[[ʯ ʮͰͰׂΓΕͳ͍ ͱ͖ਐจࣈྻʯ
ʮͰׂΓΕͯͰ ׂΓΕͳ͍ͱ͖'J[[ʯ ʮͰׂΓΕͯͰ ׂΓΕͳ͍ͱ͖#V[[ʯ ʮͰͰׂΓΕΔ ͱ͖'J[[#V[[ʯ ͬͨΒ͍͚͠ͲɺͲͷ ύλʔϯߟྀ͞Ε͍ͯͯ ͔ͭඃΓͳ͍ɺͭ·Γ աෆ͕ͳ͍ͱΘ͔Δ
ͭ·ΓɺςετέʔεͷաෆΛѲ͍͢͠ ςετέʔε໊͕͍͍ςετέʔε໊ͱ͍͏͜ͱɻ աෆͳ͘ςετέʔεΛબͿ࡞ۀ͕ςετٕ๏ͷ ֩৺Ͱ͋Δɻ্खʹςετέʔεΛબΕɺ ςετέʔεΛબΜͩཧ༝Λઆ໌Ͱ͖ΔΑ͏ʹͳΔɻ 7
ςετέʔεΛબΜͩཧ༝Λ આ໌Ͱ͖ΔΑ͏ʹͳΖ͏ 8
ςετέʔεͷදతͳબͼํͱͯ࣍͠ͷͭͷํ๏͕ Α͘ΒΕ͍ͯΔɿ w ಉׂ๏ʢ&RVJWBMFODF$MBTT1BSUJUJPOJOH&$1ʣ w ڥքੳ๏ʢ#PVOEBSZ7BMVF"OBMZTJT#7"ʣ 9
ςετέʔεͷදతͳબͼํͱͯ࣍͠ͷͭͷํ๏͕ Α͘ΒΕ͍ͯΔɿ w ಉׂ๏ʢ&RVJWBMFODF$MBTT1BSUJUJPOJOH&$1ʣ w ڥքੳ๏ʢ#PVOEBSZ7BMVF"OBMZTJT#7"ʣ 10
ࣄલ݅Λຬͨ͢ೖྗ͔ͯ͢Β ͳΔू߹Λ9ͱ͢Δɻ 11 ೖྗͷू߹ 9 ࣄલ݅ͱؔͷ࣮ߦલͷঢ়ଶ͕ຬ͖ͨ݅͢ɻ ͜ͷ݅Λक͍ͬͯͳ͍ঢ়ଶͰ͕࣮ؔߦ͞Εͨ߹ɺؔ ͲͷΑ͏ʹৼΔͬͯΑ͍ͷͰςετ͠ͳ͍ɻ
12 ೖྗͷू߹ 9 9 9/ 9Λ࣍ͷ݅Λຬͨ͢ 9 9
9/ͱׂ͢Δɿ
9Λ࣍ͷ݅Λຬͨ͢ 9 9 9/ͱׂ͢Δɿ ༷͔Βఆ͞ΕΔͲΜͳ ࣮Ͱɺ9Oͷதͷೖྗͷςετ ݁Ռ9OͷதͰͯ͢Ұக͢Δɻ 13 9
9 9/˲QSPHQSPH˥QPTTJCMF*NQMTQFD⟶ ˲O˥< /> ˲F˥9OUFTUTQFDQSPHF ˮ ˲F˥9OUFTUTQFDQSPHF Λຬͨ͢9ͷׂɻ 9 9 9/ ςετޭ ςετޭ ςετࣦഊ 9 9 9/ ςετޭ ςετࣦഊ ࣮# ࣮" ςετޭ
͜ͷΑ͏ͳׂΛಉׂͱ ͍͍ɺ9 9 9/ͷ͜ͱΛ ಉύʔςΟγϣϯͱ͍͏ɻ ಉׂͷఆٛࠞཚ͍ͯͯ͠ɺେ͖͚͘Δͱͭͷൊ͕͋Δ ʢৄࡉIUUQTCMPHLVOJXBLDPNFOUSZʣɻ ࠓճͷఆٛදݩͷͱΓ͔ͨʹΑΒͣશਖ਼ੑ͕อূ͞ΕΔ Α͏ʹઃܭͨ͠ܗࣜతͳఆٛΛ࠾༻͍ͯ͠Δɻ
14 ೖྗͷू߹ 9 9 9/
'J[[#V[[Λಉׂͯ͠ΈΑ͏ɻ ࣄલ݅Jͩͬͨɻ͜ΕΛ ࣮Λఆ͠ͳ͕Βׂ͍ͯ͘͠ɻ 15 *OUͷू߹ J
ग़ྗͷ'J[[ͱ#V[[ΛऔΓҧ͑ ͍ͯΔͱ͢Δͱɺ͔ͰׂΓΕΔ ೖྗͷू߹ͷςετ͕ࣦഊ͠ɺ ͦΕҎ֎ͷू߹ςετ͕ޭ͢Δɻ 16 ͔ͷΈͰ ׂΓΕΔ ͦΕҎ֎ *OUͷू߹
'J[[͕UZQP͍ͯ͠Δͱఆ͢Δͱɺ ͰׂΓΕͯͰׂΓΕͳ͍ ೖྗͷू߹ͷςετ͕ࣦഊ͠ɺଞͷ ू߹ͷςετޭ͢Δɻ ͭ·Γ͔ͰׂΓΕΔ෦ ͚ͩͰׂΓΕΔ෦ͱͦΕҎ֎ʹ ׂ͞ΕΔɻ 17 ͚ͩͰ ׂΓΕΔ
ͦΕҎ֎ ͚ͩͰ ׂΓΕΔ *OUͷू߹
ͷਐจࣈྻԽ͕ࣦഊ͍ͯ͠Δͱ͢Δͱɺ ͰͰׂΓΕͳ͍ೖྗͷू߹ͷ ςετ͕ࣦഊ͠ɺଞͷू߹ͷςετޭ͢Δɻ ͭ·ΓͰͰׂΓΕͳ͍ೖྗͱ ͦ͏Ͱͳ͍ೖྗͷू߹ʹׂ͞ΕΔɻ 18 ͚ͩͰ ׂΓΕΔ ͦΕҎ֎ ͚ͩͰ
ׂΓΕΔ ͰͰ ׂΓΕͳ͍ *OUͷू߹
݁Ռͱͯͭ͠ͷಉύʔςΟγϣϯʹ ׂ͞Εͨɻ େࡶʹઆ໌͢Δͱɺ͜͜ʹόά͕͋ͬͨΒ ͜ͷೖྗͷ͋ͨΓ͕શ໓͢Δͳɺͱ͍͏ ՕॴΛΓग़͍ͯ͘͠ͱಉׂʹͳΔɻ 19 ͚ͩͰ ׂΓΕΔ ͦΕҎ֎ ͚ͩͰ
ׂΓΕΔ ͰͰ ׂΓΕͳ͍ *OUͷू߹
͜ͷΑ͏ʹͯ͠ಘΒΕͨಉύʔςΟγϣϯʹ͓͍ͯɺ ͦΕͧΕͭͣͭҙͷදΛςετ͠ɺͦΕ͕ͯ͢ ޭ͢ΔͳΒ࣮༷Λຬ͍ͨͯ͠Δ͜ͱ͕อূ͞ΕΔɻ ͭ·ΓɺಉύʔςΟγϣϯ͝ͱʹҙͷೖྗΛͭ બΜͰςετ͢Δ͚ͩͰ͍͍ʂ 20 IUUQTHJTUHJUIVCDPN,VOJXBLBEEBFEECEBGD
མͱ͕݀͋͠Γ·͢
͜Ε·ͰͷಉׂͰɺ࣮Λఆ͍ͯ͠Δͱ͜Ζ ʹམͱ͕݀͋͠Δɻ ࣮ࡍͷ࣮͕͔͜͜Β֎Ε͍ͯΔͱɺύʔςΟγϣϯ ͷதʹςετΛޭͤ͞Δೖྗͱͦ͏Ͱͳ͍ೖྗ͕ࠞ ͬͯ͟͠·͏ɻ͢ΔͱͲ͏ͳΔ͔ɻ 22
ӡѱ͘ςετΛޭͤ͞ΔೖྗΛදʹબͿͱɺ ͦͷύʔςΟγϣϯͷଞͷςετ͠ͳ͍͔Β ࣦഊ͢Δೖྗɺ͢ͳΘͪόάΛݟಀͯ͠͠·͏ʂ 23
͜ͷམͱ݀͠Λճආ͢ΔͨΊʹࣗͷ࣮ʹ Ͳ͏͍͏όά͕ଟ͍͔ఆͰ͖ΕΑ͍ɻ Α͋͘Δόάͱͯ͠Λͱؒҧ͏Α͏ͳ όάͰ͋Δڥքόά͕ΒΕ͍ͯΔɻ 24
ڥքόάΛఆͯ͠ಉׂ͢Δͱɺࣄޙ݅ͷ ذͷڥք͚ͩΛؚΉಉύʔςΟγϣϯ͕Ͱ͖Δɻ 25
ྫ͑ɺྸΛೖྗͱͯ͠ɺ ͳΒਅɺະͳΒِΛฦ͢ ؔJT"EVMU BHF ͷ༷Λߟ͑Δɻ ࣄલ݅ʽBHFɺࣄޙ݅ ग़ྗͱʽBHFͷਅِͷҰகɻ 26 *OUͷू߹ ʽBHF
ਖ਼ղͷ࣮ͷܗΛSFUVSO BHF ͱͯ͠ɺ ΛͱͰؒҧ͑ͯ ͠·͏ఆΛ͢ΔͱɺBHF͕ͷ ͱ͖ͷςετ͕ࣦഊ͠ɺͦΕҎ֎ ͷςετޭ͢Δɻ 27 *OUͷू߹ BHF
ͦΕҎ֎
͢ΔͱɺBHFͱ͍͏ ࣄޙ݅ͷڥքͷ͚͔ͩΒͳΔ ಉύʔςΟγϣϯ͕Ͱ͖Δɻ ͜ͷΑ͏ʹڥքόάΛߟྀͨ͠ ಉύʔςΟγϣϯ͔ΒදΛ બͿํ๏Λڥքੳ๏ͱ͍͏ɻ 28 *OUͷू߹ BHF ͦΕҎ֎
ʢڥքʣ
ςετέʔεͷදతͳબͼํͱͯ࣍͠ͷͭͷํ๏͕ Α͘ΒΕ͍ͯΔɿ w ಉׂ๏ʢ&RVJWBMFODF$MBTT1BSUJUJPOJOH&$1ʣ w ڥքੳ๏ʢ#PVOEBSZ7BMVF"OBMZTJT#7"ʣ 29
͜͜·Ͱͷ·ͱΊ 30 w ಉׂ๏ʢ&RVJWBMFODF$MBTT1BSUJUJPOJOH&$1ʣ όά͕͋ͬͨΒ͜ͷೖྗ͕ࣦͯ͢ഊ͢Δͱ͍͏ՕॴΛ Γग़͍͖ͯ͠ɺͦͷද͚ͩΛςετ͢Δํ๏ɻ w ڥքੳ๏ʢ#PVOEBSZ7BMVF"OBMZTJT#7"ʣ ࣄޙ݅ͷڥքʹόά͕͋Δ͜ͱΛఆͯ͠ڥք্͔Β දΛબͿํ๏ɻ
ຊɿςετέʔεͷ໊લ 31
ςετέʔεͷաෆΛѲ͍͢͠ςετέʔε໊ ͕͍͍ςετέʔε໊ͩͬͨɻ ಉׂ๏ ڥքੳ๏ʹͱͮ͘ςετέʔεͷ ໊લʹɺಉύʔςΟγϣϯ͕Θ͔Δ໊લΛॻ͘ͱ ςετέʔεͷաෆΛѲ͘͢͠Ͱ͖Δɻ 32
ઌ΄Ͳͷఆ࣮Ͱͷ'J[[#V[[ͷ ಉύʔςΟγϣϯ͜͏ͩͬͨɿ w ͰͰׂΓΕͳ͍ೖྗͷू߹ w ͰׂΓΕͯͰׂΓΕͳ͍ೖྗͷू߹ w ͰׂΓΕͯͰׂΓΕͳ͍ೖྗͷू߹ w ͰͰׂΓΕΔೖྗͷू߹
33
ͳͷͰςετέʔε໊͜͏͢ΔͱΑ͍ɿ w ʮͰͰׂΓΕͳ͍߹ʯ w ʮͰׂΓΕͯͰׂΓΕͳ͍߹ʯ w ʮͰׂΓΕͯͰׂΓΕͳ͍߹ʯ w ʮͰͰׂΓΕΔ߹ʯ 34
͍ͭͰʹࣄޙ݅Λఴ͑ΔͱςετϨϙʔτ͕ ͦͷ··༷ͷจॻʹͳΔͷͰศརɿ w ʮͰͰׂΓΕͳ͍߹ਐจࣈྻʯ w ʮͰׂΓΕͯͰׂΓΕͳ͍߹'J[[ʯ w ʮͰׂΓΕͯͰׂΓΕͳ͍߹#V[[ʯ w ʮͰͰׂΓΕΔ߹'J[[#V[[ʯ
35
ઌ΄Ͳͷఆ࣮ͷJT"EVMUͷಉύʔςΟγϣϯ ͜͏ͩͬͨɿ w BHF w ͦΕҎ֎ 36
͜ͷͱ͖ͷςετέʔε໊ࣄޙ݅Λఴ͑ͯɿ w ʮBHFʢڥքʣͷͱ͖ग़ྗਅʯ w ʮͦΕҎ֎ͷͱ͖ग़ྗBHFʽͷਅِͱҰகʯ ڥք͔ΒͳΔಉύʔςΟγϣϯڥքͰ͋Δ ͜ͱΛΘ͔Γ͘͢͢ΔͱϨϏϡʔ͍͢͠ɻ 37
·ͱΊ 38 ςετέʔεʹಉύʔςΟγϣϯͷ໊લΛ͚ͭΔ
39
͓͞Β͍ɿ༷ͱ 40 w ࣄલ݅ ͕࣮ؔߦ͞ΕΔલʹͲ͏͍͏ঢ়ଶͰ͋Δ͖͔ɻ 'J[[#V[[Ͱ͍͏ͱɺJ w ࣄޙ݅ ࣄલ݅Λຬͨͨ͠ঢ়ଶͰɺؔΛ࣮ߦͨ͠ޙʹ Ͳ͏͍͏ঢ়ଶʹͳΔ͖͔ɻ
'J[[#V[[Ͱ͍͏ͱɺʢଓ͘ʣ
41 ೖྗͷ ग़ྗͷ 'J[[
#V[[ 'J[[ 'J[[#V[[ͷࣄޙ݅ɿ w ͰͰׂΓΕͳ͍ͱ͖ਐจࣈྻ w ͰׂΓΕͯͰׂΓΕͳ͍ͱ͖'J[[ w ͰׂΓΕͯͰׂΓΕͳ͍ͱ͖#V[[ w ͰͰׂΓΕΔͱ͖'J[[#V[[ ͓͞Β͍ɿ༷ͱ
࣮͕༷Λຬͨ͢ͱ 42 ೖྗͷ ༷ͷग़ྗ ࣮ͷग़ྗ
'J[[ #V[[ #V[[ 'J[[ ࣄલ݅Λຬͨͯ͢͢ͷঢ়ଶʹରͯ͠ɺ ͦͷ࣮ߦޙͷঢ়ଶ͕ࣄޙ݅Λຬͨ͢ͳΒɺ ࣮༷Λຬ͍ͨͯ͠Δɻ ͦΕҎ֎࣮༷Λຬ͍ͨͯ͠ͳ͍ ʢݴ͍͑Δͱ࣮ʹόά͕͋Δʣɻ όά όά