非プログラマーも自動テストが書けた #magicpod #devsap /non_programmer_could_write_ui_test

249b3122eee454c0a818bfe7851418e4?s=47 fromkk
July 27, 2019

非プログラマーも自動テストが書けた #magicpod #devsap /non_programmer_could_write_ui_test

https://devsap.connpass.com/event/132844/ で発表した社内でMagic Podを利用する様になった経緯を発表しました。
Demoは動画をアップロードしています。
https://youtu.be/BgzJnAiTTy8

参考リンク
・Espresso テスト レコーダーでの UI テスト作成
https://developer.android.com/studio/test/espresso-test-recorder?hl=ja
・Recording UI Tests
https://developer.apple.com/library/archive/documentation/ToolsLanguages/Conceptual/Xcode_Overview/RecordingUITests.html
・BitriseとMagic PodでiOSアプリのCI & 自動テスト | 品質向上ブログ
https://blog.trident-qa.com/2019/03/bitrise-magic-pod/
・Famm iOSにおけるBitriseのワークフローを大公開 #bitrise
https://techblog.timers-inc.com/entry/famm_loves_bitrise
https://gist.github.com/timers-ios/2bb1ab08f520ba96014d2c65bbfd5933

249b3122eee454c0a818bfe7851418e4?s=128

fromkk

July 27, 2019
Tweet

Transcript

  1. ඇϓϩάϥϚʔ΋ࣗಈςετ͕ॻ͚ͨ J1IPOF%FW4BQQPSPษڧձ+VM 

  2. 1SPpMF struct Profile { let name = "Kazuya Ueoka" let

    twitter = "@fromkk" let github = "fromkk" let qiita = "fromkk" let company = "Timers Inc." } •
  3. None
  4. None
  5. ։ൃମ੍ $50 10 %JSFDUPS 4FSWFS ໊ J04 ໊ "OESPJE ໊

    2" ໊ύʔτλΠϜ
  6. ػೳ਺ͷมભ       ػೳ਺ ϦϦʔε ϑΥτετϨʔδ

    ΧϨϯμʔ ҹ࡮ ϦχϡʔΞϧ 0CKFDUJWF$ (SPXUI ਌ੰট଴ %7% 7JSBM ঎඼௥Ճ ετΞԽ Ұ෦ػೳ ϦχϡʔΞϧ
  7. 2"νʔϜ͕ߦ͏ओͳςετͷछྨ શͯϚχϡΞϧ w 'FBUVSF2"։ൃதͷϢʔβʔετʔϦʔ͕׬ྃ͢Δ౓ʹߦ͏ ςετ w %FW2" ݁߹ςετ ։ൃதͷػೳશମ͕࢓্͕͔ͬͯΒߦ͏ ςετ

    w 3FMFBTFલ2"ϦϦʔε༻ͷϏϧυ͕ग़དྷ͔ͯΒߦ͏ςετ !7
  8. 2"νʔϜ͔Βͷཁ੥ w ೔ʑ'FBUVSF2"ͱ%FW2"ۀ຿͕͋Γɺͦͷ߹ؒʹϦϦʔεલ 2"Λ࣮ࢪ͢Δ w ࠩ͠ࠐΈλεΫ͕ਏ͍ ‎༵೔ΛݻఆԽ͢Δ͜ͱͰεέδϡʔϦϯά͠΍͘͢ w ϦϦʔεલ2"ͷ߲໨͕ͲΜͲΜ૿͑ͯɺ͕࣌ؒͱͯ΋ֻ͔Δ༷ ʹͳͬͨ

    !8
  9. ʊਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹϦϦʔεલ2"ͷ߲໨ΛݮΒ͍ͨ͠ɹʻ ʉ:?:?:?:?:?:?:?:?:?:?:?:?:?:?:ʉ

  10.  ๻ ͑ɺ߲໨ݮΒͨ͠Β ඼࣭Լ͕ΔΜ͡Όʁ

  11. ͦΕͰ΋࡟ΒΕΔςετ߲໨ॻ w ϏδωεϦεΫͷϔοδΛѲͬͯඞཁ࠷௿ݶ͜Ε͕ಈ͔ͳ͍ͱ ࢮ͵ͱ͍͏Ϩϕϧͷ෦෼͚ͩςετʹߜΔ w ௥Ճػೳʹؔͯ͠΋ͦͷ࣌͸ςετʢ͔࣍Β͸ݟͳ͍ʣ w ػೳΛૣ͘ग़ͯ͠ϢʔβʔʹՁ஋Λಧ͚Δ͜ͱΛ༏ઌ w ໰୊͕͋ͬͨΒ͙͢ʹमਖ਼

    !11
  12. ͱ͸͍͑ w ΤϯδχΞ͸λεΫσʔͳͲΛར༻ͯ͠طଘػೳͷϦϑΝΫλ ΍όάमਖ਼Λ࣮ࢪ w 2"ͷਓ͕஌Βͳ͍಺ʹӨڹ͕ग़ͳ͍ͱ͸ݶΒͳ͍ ໪࿦౎౓ใ ࠂͯ͠ಈ࡞֬ೝ͸ͯ͠΋Β͍ͬͯΔ  w

    ࡉ͔͍ෆ۩߹Λݟಀͯ͠͠·͏ࣄ͕ൃੜ !12
  13. ͜ͷ··͡Ό͍͚ͳ͍

  14. ඼࣭؅ཧҕһձൃ଍

  15. ඼࣭؅ཧҕһձͱ͸ w ೚ҙࢀՃͷఆྫ.5( w ֤͕ࣗ඼࣭ʹؔͯ͠໰୊ͩͱ ࢥ͏ࣄΛ෇ᝦʹॻ͖ɺࣅͨ΋ ͷΛάϧʔϐϯά͠ɺάϧʔ ϓຖʹ༏ઌ౓Λܾఆ w ຖि༏ઌ౓ͷߴ͍΋ͷ͔Β࿩

    ͠߹͍ΞΫγϣϯʹམͱͯ͠ ͍͘ !15
  16. 2"νʔϜͰࣗಈςετ͕ग़དྷͳ͍͔ w ΤϯδχΞ΋Ϣχοτςετ΍ը໘୯Ґͷ6*ςετ͸ॻ͍͍ͯ Δ w ໢ཏతͳγφϦΦςετ͸ٻΊ͍͕ͯͨखΛ෇͚ΒΕ͍ͯͳ ͔ͬͨ !16

  17. USZ5FTUSFDPSEJOH w "OESPJE&TQSFTTPςετϨίʔμʔΛར༻ w IUUQTEFWFMPQFSBOESPJEDPNTUVEJPUFTUFTQSFTTP UFTUSFDPSEFS IMKB w ར༻ࣗମ͸໰୊ແ͔͕ͬͨࢥ༷ͬͨʹਐ·ͳ͍ w

    ࣸਅΞοϓϩʔυͳͲςετࣗମ͕೉͍͠ w 04͕ग़͢μΠΞϩάͷϋϯυϦϯά͕೉͍͠ !17
  18. USZ5FTUSFDPSEJOH w J049$5FTU6*3FDPSEJOHΛར༻ w IUUQTEFWFMPQFSBQQMFDPNMJCSBSZBSDIJWF EPDVNFOUBUJPO5PPMT-BOHVBHFT$PODFQUVBM 9DPEF@0WFSWJFX3FDPSEJOH6*5FTUTIUNM w 2"νʔϜ͕ར༻͍ͯͨ͠ .BDCPPL"JSͩͱ஗͗͢

    w ࣗಈه࿥ͷςετͷ࠶ݱੑ͕௿͍ !18
  19. ඇϓϩάϥϚʔʹ͸೉͔ͬͨ͠

  20. w ΢Σϒϒϥ΢βʔ $ISPNF ্Ͱ6*ςετͷ࡞੒ɾ࣮ߦ͕Մೳ w ػցֶशΛར༻͍ͯ͠Δ Β͍͠  w "QQJVNΛϥοϐϯά͍ͯ͠Δ

    w (6*Ͱཁૉͷݕࡧɺૢ࡞ɺΞαʔτͷઃఆ͕Մೳ !20 Magic Pod
  21. w ΢Σϒϒϥ΢βʔ $ISPNF ্Ͱ6*ςετͷ࡞੒ɾ࣮ߦ͕Մೳ w ػցֶशΛར༻͍ͯ͠Δ Β͍͠  w "QQJVNΛϥοϐϯά͍ͯ͠Δ

    w (6*Ͱཁૉͷݕࡧɺૢ࡞ɺΞαʔτͷઃఆ͕Մೳ !21 Magic Pod w ΄΅શ͕ͯ೔ຊޠͰૢ࡞ՄೳඇϓϩάϥϚʔʹ͸େࣄʂ
  22. !22 Magic Pod

  23. %FNP IUUQTZPVUVCF#H[+O"J55Z

  24. None
  25. ஫ҙ఺ w 9$5FTU 6* ͱಉ༷ʹBDDFTTJCJMJUZ*EFOUJpFSͷઃఆ͸େࣄ w ϩʔΧϧϦϞʔτͷ୺຤͕બ୒ग़དྷΔ͕ϦϞʔτ͸ॏ͍ͷͰ ςετέʔεͷ࡞੒͸ϩʔΧϧ͕Φεεϝ !25

  26. ϝϦοτ w ೔ຊޠͰςετέʔε͕࡞ΕΔ w 4MBDLάϧʔϓͰෆ۩߹ใࠂ΍ཁ๬Λ఻͑Δͱ ෺ʹΑͬͯ͸ ͙͢ʹ࣮૷͠ ͯ΋Β͑Δ w IUUQTNBHJDQPEVTFSTKQTMBDLDPN

    w #JUSJTFܦ༝ͰϦϞʔτ࣮ߦ͢Δࣄ͕Մೳ !26 ࢀߟ #JUSJTFͱ.BHJD1PEͰJ04ΞϓϦͷ$*ࣗಈςετc඼࣭޲্ϒϩά IUUQTCMPHUSJEFOURBDPNCJUSJTFNBHJDQPE 'BNNJ04ʹ͓͚Δ#JUSJTFͷϫʔΫϑϩʔΛେެ։CJUSJTF
 IUUQTUFDICMPHUJNFSTJODDPNFOUSZGBNN@MPWFT@CJUSJTF IUUQTHJTUHJUIVCDPNUJNFSTJPTCCBCGCBEDCCGE
  27. σϝϦοτ w ϩʔΧϧͰͷϏϧυ؀ڥΛ੔͑ΔҝʹɺΤϯδχΞ͕ۀ຿ͷ࣌ؒ Λ࢖ͬͯ੔උºਓ෼ w 5FTU1MBOͷ༷ʹෳ਺ͷ؀ڥΛҰؾʹςετͨ͠Γ͸·ͩग़དྷͳ͍ w ෳࡶͳςετέʔεΛ࡞੒͢Δͱͭͷςετͷ࣮ߦ੍࣌ؒݶͷ ෼Λ͙͢ӽ͑ͯ͠·͏ w

    ීஈͷϚχϡΞϧςετΛ࣮ࢪ͠ͳ͕Β߹ؒͰςετέʔεΛ ࡞͍ͬͯΔͷͰͲ͏ͯ͠΋͕͔͔࣌ؒΔ !27
  28. ໨ඪ w 3FMFBTFલ2"ͷҰ෦Λ׬શࣗಈԽ w ਓؒ͡Όͳ͍ͱग़དྷͳ͍ɾؾ෇͚ͳ͍༷ɾମݧʹؔ͢ΔՕॴ ΛϚχϡΞϧςετ͍ͨ͠ w ࠓޙ௥Ճ͞ΕΔػೳʹ͍ͭͯ͸ࣗಈςετ΋Ұॹʹ࡞੒ w ࣗಈςετͷΧόϨοδΛ্͍͛ͯ͘⤴

    !28
  29. ·ͱΊ w ·ͩ࢝·ͬͨ͹͔Γ͚ͩͲ2"ͱΤϯδχΞͰڠྗɾࢼߦࡨޡ ͠ͳ͕Β2"νʔϜɾ඼࣭Λվળத& w ਓ͔ؒͩΒग़དྷΔλεΫʹϑΥʔΧε w .BHJD1PE͸ΤϯδχΞͳΒ؆୯ʹ৮ΕΔͷͰὃ͞Εͨͱࢥͬ ͯࢼͯ͠ཉ͍͠ !29

  30. 13

  31. • αʔόʔαΠυΤϯδχΞ (PHP, Golang, AWS) • AndroidΤϯδχΞ (Kotlin) • iOSΤϯδχΞ

    (Swift) TimersͰ͸ݱࡏΤϯδχΞશ৬छ࠾༻தʂ
 ৄ͘͠͸”Timers”Ͱݕࡧ
  32. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠)