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
270
自動テストの信頼性を高めるミューテーションテストの活用に向けて
2024/10/18 iOS Test Night #13の登壇資料
tarappo
October 18, 2024
Tweet
Share
More Decks by tarappo
See All by tarappo
スケールアップ企業のQA組織のバリューを最大限に引き出すための取り組み
tarappo
4
860
組織全体で品質を担保するための品管メンバーとしてのさまざまな役割
tarappo
3
1.7k
チーム単位で保守性を高める:独自指標と向上にむけた実践
tarappo
0
1.1k
DartでMutation testingを してみよう
tarappo
1
690
組織の立ち上げと体制変更の1年
tarappo
2
1.9k
全員品質を目指して ドラゴン探し
tarappo
1
810
Xcode10から最新までのTestingをふりかえる
tarappo
0
3.4k
1人目SETとして入社して2ヶ月の間におこなったこと
tarappo
4
4.6k
治安維持のためにCI/CDサービスを活用しておこなったこと
tarappo
1
7k
Other Decks in Technology
See All in Technology
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
20k
問題解決に役立つ数理工学
recruitengineers
PRO
6
980
AWS CDK コントリビュート はじめの一歩
yendoooo
1
110
開発組織全体で意識するSLI/SLOを実装している話
zepprix
1
800
「エンジニアマネージャー」の役割を担っている / 担ってみたい方へのキャリアパスガイド
coconala_engineer
1
240
Cline、めっちゃ便利、お金が飛ぶ💸
iwamot
19
18k
Amazon EKS Auto ModeでKubernetesの運用をシンプルにする
sshota0809
0
110
ソフトウェア開発現代史: なぜ日本のソフトウェア開発は「滝」なのか?製造業の成功体験とのギャップ #jassttokyo
takabow
2
1.4k
Keynote - KCD Brazil - Platform Engineering on K8s (portuguese)
salaboy
0
120
SaaSプロダクト開発におけるバグの早期検出のためのAcceptance testの取り組み
kworkdev
PRO
0
370
頻繁リリース × 高品質 = 無理ゲー? いや、できます!/20250306 Shoki Hyo
shift_evolve
0
150
fukuoka.ts #3 社内でESLintの共通設定を配りたい2025年春版
pirosikick
1
290
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
50
2.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
Typedesign – Prime Four
hannesfritz
41
2.6k
Music & Morning Musume
bryan
46
6.4k
Gamification - CAS2011
davidbonilla
80
5.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.6k
BBQ
matthewcrist
88
9.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
12
1.4k
It's Worth the Effort
3n
184
28k
Mobile First: as difficult as doing things right
swwweet
223
9.5k
A better future with KSS
kneath
238
17k
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 ϛϡʔςʔγϣϯςετͬͯࣗಈςετΛͬͱ׆༻͍͖ͯ͠·͠ΐ͏