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
tarappo
October 18, 2024
Technology
3
190
自動テストの信頼性を高めるミューテーションテストの活用に向けて
2024/10/18 iOS Test Night #13の登壇資料
tarappo
October 18, 2024
Tweet
Share
More Decks by tarappo
See All by tarappo
組織全体で品質を担保するための品管メンバーとしてのさまざまな役割
tarappo
3
1.6k
チーム単位で保守性を高める:独自指標と向上にむけた実践
tarappo
0
930
DartでMutation testingを してみよう
tarappo
1
570
組織の立ち上げと体制変更の1年
tarappo
2
1.8k
全員品質を目指して ドラゴン探し
tarappo
1
760
Xcode10から最新までのTestingをふりかえる
tarappo
0
3.1k
1人目SETとして入社して2ヶ月の間におこなったこと
tarappo
4
4.3k
治安維持のためにCI/CDサービスを活用しておこなったこと
tarappo
1
6.7k
開発における治安指数の可視化のためにおこなったこと
tarappo
4
950
Other Decks in Technology
See All in Technology
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.2k
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
170
複雑なState管理からの脱却
sansantech
PRO
1
150
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
150
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
180
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
180
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.4k
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
OS 標準のデザインシステムを超えて - より柔軟な Flutter テーマ管理 | FlutterKaigi 2024
ronnnnn
0
170
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
480
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
360
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
120
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
KATA
mclloyd
29
14k
Agile that works and the tools we love
rasmusluckow
327
21k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Code Review Best Practice
trishagee
64
17k
A better future with KSS
kneath
238
17k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Adopting Sorbet at Scale
ufuk
73
9.1k
Happy Clients
brianwarren
98
6.7k
4 Signs Your Business is Dying
shpigford
180
21k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Transcript
UBSBQQP ࣗಈςετͷ৴པੑΛߴΊΔ ϛϡʔςʔγϣϯςετͷ׆༻ʹ͚ͯ J045FTU/JHIU
ࣗݾհ ฏాහ೭ʢUBSBQQPʣ ͔ΜͨΜͳܦྺ w %F/"48&5ˠ9ˠ4NBSU)3 ୲ྖҬ ɾʮ։ൃੜ࢈ੑͷ্ʯʮ࣭ͷ୲อʯΛϛογϣϯ
͡Ίʹ ͜ΕͰɺࣗಈςετΛͬͱ࣮Ͱ͖ΔΑ͏ʹͳΓ·͢Ͷ w Έͳ͞Μɺࣗಈςετ࣮͍ͯ͠·͔͢ʁ w ͜͜ͰϞόΠϧք۾ʹ͓͍ͯࣗಈςετΛ࣮͢Δػձ૿͖͍͑ͯͯΔ͔ ͱࢥ͍·͢ ͞Βʹ w 9DPEF͔Βͷʮ4XJGU5FTUJOHʯ͕ར༻Ͱ͖ΔΑ͏ʹͳΓ·ͨ͠
͡Ίʹ ͦ͜ͰϛϡʔςʔγϣϯςετΛࢼͯ͠Έ·͠ΐ͏ ͦ͜Ͱ࣭Ͱ͢ w ࣗಈςετͪΌΜͱඞཁͳςετέʔεΛߟ͑ͯ࡞͍ͬͯ·͔͢ʁ w ࠓ͋ΔࣗಈςετͰ w ͳʹ͔͋ͬͨͱ͖ʹΛݟ͚ͭΒΕΔࣗ৴͕͋Γ·͔͢ʁ w
ίʔυΧόϨοδͷͰͳ͍ͱஅͨ͠Γ͍ͯ͠·ͤΜ͔ʁ
ϛϡʔςʔγϣϯςετͱʁ w ςετίʔυͷे͞Λଌఆ͢ΔͨΊͷख๏ w ϓϩμΫτίʔυʹมҟΛೖΕͨͱ͖ʹͦΕΛςετίʔυͰݕͰ͖Δ͔Ͳ͏͔ w มҟʹϛϡʔλϯτ w มҟΛೖΕΔͱʁ Λʹมߋ
͜ͷΑ͏ʹมߋ͞Εͨͱ͖ʹʮςετίʔυʯͰݕͰ͖·͔͢ʁ
ϛϡʔςʔγϣϯςετͱʁ w มҟΛೖΕͨίʔυʹରͯ͠ςετ࣮ߦ w ςετ͕མͪΔʢʹ,JMMFEʣ w ςετ͕མͪͳ͍ʢʹ4VSWJWFEʣ w 4VSWJWFEͷ͕ଟ͍΄Ͳ՝͕͋Δͱ͍͑Δ w
,JMMFEͱ4VSWJWFEͷׂ߹ΛΈͯ.VUBUJPO4DPSF͕ܾ·Δ w ,JMMFEͨ͠มҟΛೖΕͨ.VUBUJPO4DPSF
ϛϡʔςʔγϣϯςετʹ͓͚Δมҟͷύλʔϯ w ύλʔϯྫ w "03ɿBSJUINFUJDPQFSBUPSSFQMBDFNFOU w ࢉज़ԋࢉࢠஔ͖͑ w B CˠBCɺBCͳͲʹม
w -$3ɿMPHJDBMDPOOFDUPSSFQMBDFNFOU w ཧ݁߹ࢠஔ͖͑ w BCˠBccCͳͲʹม w 303ɿSFMBUJPOBMPQFSBUPSSFQMBDFNFOU w ؔԋࢉࢠஔ͖͑ w BCˠBCɺBCͳͲʹม
ϛϡʔςʔγϣϯςετͷͨΊͷϥΠϒϥϦ w 4USZLFSʢIUUQTTUSZLFSNVUBUPSJPʣ w +BWB4DSJQUɺ$ɺ4DBMB w 1*5FTUʢIUUQTQJUFTUPSHʣ w +BWBBOE+7. w
.VMMʢIUUQTHJUIVCDPNNVMMQSPKFDUNVMMʣ w $ɺ$ w NVUBUJPO@UFTUʢIUUQTQVCEFWQBDLBHFTNVUBUJPO@UFTUʣ w %BSU
J04ʹ͓͚Δϛϡʔςʔγϣϯςετ w ϥΠϒϥϦ w IUUQTHJUIVCDPNNVUFSNVUBUJPOUFTUJOHNVUFS w ηοτΞοϓͱ࣮ߦ·ͰͷྲྀΕ w Πϯετʔϧ w
ઃఆϑΝΠϧͷ༻ҙʢNVUFSDPOGZNMʣ w ࣮ߦίϚϯυͷࢦఆ w ର֎ϑΝΠϧͷࢦఆ w ࣮ߦ w NVUFSGPSNBUIUNMPVUQVUSFTVMUIUNM
αϯϓϧίʔυ w ݱ࣌Ͱͷ༷ w ԁͰϙΠϯτ͕खʹೖΔ w ϙΠϯτ্ݶϙΠϯτ w ԁΛ͑͜ΔߪೖऀϙΠϯτ w
࣍ͷ͍ͣΕ͔ͷ݅ΛຬͨͤϙΠϯτഒ w ྸ͕ࡀҎ্ w ϥϯΫ͕Λ͍͑ͯΔ
ςετΛߟ͑ͯΈΑ͏ w ʮ୯७ʹʯΧόϨοδʹͯ͠ΈΔ w DBTFʣԁͷͱ͖ϙΠϯτ w DBTFʣࡀҎ্ͷͱ͖͔ϥϯΫ͕Ҏ্ͷͱ͖ʹϙΠϯτ ഒ w DBTFʣԁΛ͑͜Δͱ͖ϙΠϯτ
w DBTFʣԁҎ্ͰԁҎԼͷߪೖֹۚϙΠϯτ DBTF DBTF DBTF DBTF DBTF DBTF DBTF DBTF
ςετͷ࣮ߦ݁Ռ DBTF DBTF DBTF DBTF ςετͷ࣮ߦ݁Ռ ΧόϨοδ݁Ռʢˋʣ ͜ΕͰςετέʔεΓ͍ͯ·͔͢ʁ
ςετέʔεΓͯ·͔͢ʁ w DBTFʣԁͷͱ͖ϙΠϯτ w DBTFʣࡀҎ্ͷͱ͖͔ϥϯΫ͕Ҏ্ͷͱ͖ʹϙΠϯτ ഒ w DBTFʣԁΛ͑͜Δͱ͖ϙΠϯτ w DBTFʣԁҎ্ͰԁҎԼͷߪೖֹۚϙΠϯτ
DBTF DBTF DBTF DBTF ͜͜Ͱ ϛϡʔςʔγϣϯςετΛͬͯΈ·͠ΐ͏
NVUFSͷ࣮ߦ݁ՌʢϨϙʔτʣ w ࣍ͷมҟΛೖΕͨࡍʹςετ͕ࣦഊ͍ͯ͠ ͳ͍ w VTFSBHFʹม͑ͨͱ͖ w VTFSSBOLʹม͑ͨͱ͖
ςετίʔυΛݟͯ͠ΈΑ͏ w ࣍ͷมҟΛೖΕͨࡍʹςετ͕ࣦഊ͍ͯ͠ ͳ͍ w DBTFɿVTFSBHFʹม͑ͨͱ͖ w DBTFɿVTFSSBOLʹม͑ͨͱ͖ w ྸͷڥքΛݟ͍ͯΔΑ͏Ͱݟ͍ͯͳ͍
w ࡀͱࡀΛ͍ͬͯΔ͕ยํ্ֹۚݶΛݟ͍ͯΔ͚ͩ w ϥϯΫʹ͍ͭͯಛʹͳʹݟ͍ͯͳ͍ w SBOLΛ͑͜Δςετέʔε͕ͭͳ͍
ςετίʔυͷՃ w ࣍ͷมҟΛೖΕͨࡍʹςετ͕ࣦഊ͍ͯ͠ ͳ͍ w DBTFɿVTFSBHFʹม͑ͨͱ͖ w DBTFɿVTFSSBOLʹม͑ͨͱ͖ w ϙΠϯτ্ݶΛݟΔςετέʔεͱ্ݶΛݟͳ͍
έʔεͰςετΛΘ͚ͯՃ w ϥϯΫʹ͍ͭͯͷςετέʔεՃ
ʢ࠶ʣNVUFSͷ࣮ߦ݁ՌʢϨϙʔτʣ
NVUFSʹ͓͚Δมҟύλʔϯ w NVUFSͰ࣍ͷύλʔϯΛ༻ҙ͍ͯ͠·͢ʢҰ෦ͷΈهࡌʣ w ࢀߟɿIUUQTHJUIVCDPNNVUFSNVUBUJPOUFTUJOHNVUFSCMPCNBTUFS%PDTNVUBUJPO@PQFSBUPSTNE w /FHBUF$POEJUJPOBMT w $IBOHF-PHJDBM$POOFDUPS
ϛϡʔςʔγϣϯςετʹ͓͚Δ՝ʢͷҰͭʣ w ϛϡʔςʔγϣϯςετࣗମͷߟ͑ྺ࢙͕ઙ͍Θ͚Ͱͳ͍ ͳͥɺͦ͜·Ͱར༻͞Εͯͳ͔ͬͨͷ͔ w ʮมҟʯΛϓϩμΫτίʔυʹೖΕͯɺςετίʔυΛ࣮ߦ͢Δ w ˠมҟΛೖΕ͚࣮ͨͩߦ࣌ؒ૿͍͑ͯ͘ w ˠ͓͜ͳ͏ͷʹʮ࣮ߦ࣌ؒʯ͕՝ʹͳΔέʔε͕ଟ͍
͔͠͠ w ࡢࠓͷʮϚγϯύϫʔʯʢͳͲʣʹΑΓ࣮ݱՄೳʹͳ͖͍ͬͯͯΔʢͱ͍͑Δʣ J04ͷςετͰͲ͏ͳͷ͔ʁ
J04ͷࣗಈςετͷ՝ w ࣗಈςετͷ࣮ߦͷྲྀΕ w ୯७ʹʮมҟʯΛೖΕͨ߹ͷྲྀΕ ʮมҟʯ͕छྨͰ࣮ߦ࣌ؒͷ૿Ճ͕ܹ͍͠ Ͳ͏͢ΔͱΑ͍ͷ͔ʁ
࣮ߦ࣌ؒʹର͢ΔΞϓϩʔν w ՝ w ຖճɺมҟΛೖΕͯςετͷ࣮ߦΛ͍͕͔͔ͯͯ࣌ؒ͠Γ͗ͯ͢͠·͏ w NVUFSͰͲͷΑ͏ͳ͜ͱΛ͓͜ͳ࣮ͬͯߦ࣌ؒͷॖΛ͓͜ͳ͍ͬͯΔͷ͔ w ɹϏϧυͱςετ࣮ߦͷ
w ɹىಈ࣌ڥมͷར༻
࣮ߦ࣌ؒʹର͢ΔΞϓϩʔν w Ϗϧυͱςετ࣮ߦͷʢ9DPEF͔Βʣ w CVJMEGPSUFTUJOHɿϏϧυ w UFTUXJUIPVUCVJMEJOHɿϏϧυ͞ΕͨͷΛςετ࣮ߦ ɹϏϧυͱςετ࣮ߦͷ
࣮ߦ࣌ؒʹର͢ΔΞϓϩʔν w มҟΛ࠷ॳʹ༻ҙ w ىಈ࣌ڥมͰ࣮ߦ͢ΔίʔυΛذ w ʢ" ɺʢ#ʣͷͱ͜Ζ ɹىಈ࣌ڥมͷར༻
࣮ߦ࣌ؒʹର͢ΔΞϓϩʔν w NVUFSͷมҟͷೖΕํ w ϓϩμΫτίʔυʹશͯͷมҟΛೖΕΔ w ىಈ࣌ڥมͰݺͼग़͢ίʔυΛ੍ޚ͢Δ ɹىಈ࣌ڥมͷར༻ มҟΛೖΕͨ͋ͱͷϓϩμΫτίʔυ
YDUFTUSVOϑΝΠϧ ىಈ࣌ڥม
࣮ߦ࣌ؒʹର͢ΔΞϓϩʔν w มҟʹରԠ͢Δʮىಈ࣌ڥมʯ͕ࢦఆ͞ΕΔ w ࣮ߦέʔε̍ɿʢ"ʣʹରԠ͢Δىಈ࣌ڥมΛYDUFTUSVOʹઃఆ w ࣮ߦέʔε̎ɿʢ#ʣʹରԠ͢Δىಈ࣌ڥมΛYDUFTUSVOʹઃఆ ɹىಈ࣌ڥมͷར༻
࣮ߦ࣌ؒͷॖޮՌ ॖ࣌ؒ ͜͜ΛฒྻԽͰ͖Ε͞ΒʹॖՄೳ
ϛϡʔςʔγϣϯςετͷޮՌ w ϝϦοτ w ςετ࿙Εʹؾ͚ͮΔ͜ͱ͕͋Δ w ςετઃܭ͕ʮෆेʯʮۤखʯͳͱ͖ʹޮՌେ w ίʔυΧόϨοδͱҧͬͨࣗಈςετͷ'# w
˞ίʔυΧόϨοδͱซͤͯ͏ͱྑ͍
ϛϡʔςʔγϣϯςετͰͷҙ w ѻ͏ࡍͷҙ w ࣗಈςετ͕Ұఆ͋Δ͜ͱ͕લఏ w ΧόϨοδͱซͤͯར༻͢Δͱྑ͍ w Ͳ͏͍ͬͨมҟύλʔϯ͕͋Δ͔ϥΠϒϥϦͷ࣮࣍ୈ w
ϛϡʔςʔγϣϯείΞ͕ˋͰ͋Εͳ͍ͱ͍͏Θ͚Ͱͳ͍ w ࣮ߦ࣌ؒͷ͞ w ࣮ߦରߜΔඞཁ͕͋Δ w ݕͨ͠ͷ͕શ͖ͯ͢ରͱݶΒͳ͍ʹνΣοΫ͢Δίετ͕͔͔Δ w Ձϛϡʔλϯτͷέʔε͋Δ
ϛϡʔςʔγϣϯςετͰͷҙ NVUFSଆͰͷରԠ͋ͬͯͲ͏࣮ͯ͠ߦ͔͔࣌ؒΓ·͢ w ࣮ߦ࣌ؒɿʢ̍ʣ࣮ߦରͷϑΝΠϧʷʢ̎ʣมҟύλʔϯʷʢ̏ʣςετ έʔε w ʢ̍ʣʹରͯ͠ͷΞΫγϣϯ w ࣮ߦର֎ͷϑΝΠϧΛઃఆ w
NVUFSͰઃఆϑΝΠϧͰࢦఆ w ࣮ߦ͢ΔରϑΝΠϧΛࢦఆ w pMFTUPNVUBUFΦϓγϣϯͰࢦఆ w ʢ̎ʣʹରͯ͠ͷΞΫγϣϯ w มҟύλʔϯΛߜΔ w PQFSBUPSTͰࢦఆ ࣮ߦ࣌ؒͷ ࣮ߦରΛߜͬͯ$*Ͱͷ࣮ߦ࣌ؒҰఆ͔͔Δ ʮ͍ͭʯʮͲ͜Ͱʯ࣮ߦ͢Δ͖͔ߟ͑Δඞཁ͕͋Δ
ϛϡʔςʔγϣϯςετͰͷҙ w ʮ4VSWJWFEʯʹͳ͍ͬͯΔέʔε͕ςετίʔυΛՃ͢Δ͖ͷ͔ΛௐΔඞ ཁ͕͋Δ w ରԠΛͯ͠ˋʹͳΒͳ͍έʔεҰఆ͋Δ w ྫʣՁϛϡʔςʔγϣϯɿมҟͤͯ݁͞Ռ͕มΘΒͳ͍έʔε͋Δ ݕͨ͠ͷ͕ʮՁʯ͕͋Δ͔ͷ֬ೝ ͜ΕΛՃຯ্ͨ͠ͰͲ͏͍ͬͨ;͏ʹར༻͢Δ͔Λߟ͑Δඞཁ͕͋Δ
͓ΘΓʹ w ࣗಈςετ͋ͨΓ·͑ͷ࣌ʹͳΓͭͭ͋Γ·͢ w ࠓ·ͰҎ্ʹʮςετઃܭʯॏཁͰ͋Γʮςετٕ๏ʯॏཁͰ͢ w ϛϡʔςʔγϣϯςετͬͯࣗಈςετΛͬͱ׆༻͍͖ͯ͠·͠ΐ͏