Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「Magic Pod」で モバイルアプリのUIテストをもっと簡単に

6f8c7b050e551df51ac90c013eee164f?s=47 Nozomi Ito
February 18, 2021

「Magic Pod」で モバイルアプリのUIテストをもっと簡単に

6f8c7b050e551df51ac90c013eee164f?s=128

Nozomi Ito

February 18, 2021
Tweet

Transcript

  1. ʮ.BHJD1PEʯͰ ϞόΠϧΞϓϦͷ6*ςετΛ΋ͬͱ؆୯ʹ 53*%&/5 ҏ౻ ๬

  2. "CPVUNF • ҏ౻ ๬ !JUP@OP[PNJ • גࣜձࣾ53*%&/5$&0 • ࣗಈςετπʔϧ։ൃྺ೥Ҏ্ •

    ʮ೔ຊ4FMFOJVNϢʔβʔίϛϡχςΟʯӡӦ • ஶॻ
  3. ΞδΣϯμ ϞόΠϧΞϓϦ6*ςετͷ՝୊ .BHJD1PEͷ঺հ "*ͷ׆༻ ػೳ঺հ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ࢖͍ํ

  4. .BHJD1PEͷ঺հ "*ͷ׆༻ ػೳ঺հ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ࢖͍ํ ϞόΠϧΞϓϦ6*ςετͷ՝୊

  5. खಈ6*ςετͷ՝୊ ϦϦʔεͷͨͼʹ ಉ͡ςετ࡞ۀͷ܁Γฦ͠ ϞόΠϧΞϓϦ6*ςετͷ՝୊ ༷ʑͳ04όʔδϣϯɾ ػछͰͷಈ࡞֬ೝ テスト リリース 開発 テスト

    リリース 開発 テスト リリース 開発
  6. ղܾࡦ ‎ 6*ςετͷࣗಈԽ ϦϦʔεͷͨͼʹ ಉ͡ςετ࡞ۀͷ܁Γฦ͠ ϞόΠϧΞϓϦ6*ςετͷ՝୊ ༷ʑͳ04όʔδϣϯ ɾػछͰͷಈ࡞֬ೝ Ұ౓ςετΛ࡞੒͢Ε͹ɺ ௿ίετͰԿճ΋࣮ࢪͰ͖Δ

    Ұ౓ςετΛ࡞੒͢Ε͹ɺ ৭ʑͳ؀ڥͰ࣮ߦͰ͖Δ
  7. ༷ʑͳςετࣗಈԽ ϞόΠϧΞϓϦ6*ςετͷ՝୊ システム全体を通しでテスト UIテストツールなどを活用 複数の部品を結合してテスト APIテストツールなどを活用 個々の関数やクラスのテスト ユニットテストツールなどを活用 E2E Test

    Integration Test Unit Test
  8. ϞόΠϧΞϓϦ6*ࣗಈςετͷ՝୊ ༷ʑͳٕज़τϥϒϧ ϞόΠϧΞϓϦ6*ςετͷ՝୊ ςετίʔυͷཧղ "QQJVN9DPEFͷఆظߋ৽ 6*มߋ࣌ͷεΫϦϓτमਖ਼

  9. ղܾࡦ ‎ .BHJD1PE ϞόΠϧΞϓϦ6*ςετͷ՝୊ ෼͔Γ΍͍͢εΫϦϓτ ΤΩεύʔτʹΑΔ҆ఆԽ౒ྗ ϝϯςφϯεෆཁͷΫϥ΢υ "*ʹΑΔࣗಈम෮

  10. ϞόΠϧΞϓϦ6*ςετͷ՝୊ .BHJD1PEͷ঺հ "*ͷ׆༻ ػೳ঺հ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ࢖͍ํ

  11. .BHJD1PE !53*%&/5*OD • 6*ςετࣗಈԽΫϥ΢υαʔϏε • ϞόΠϧΞϓϦ 8FCαΠτͷςετʹରԠ • ແྉϓϥϯ ༗ྉϓϥϯ

    • ར༻ऀ΋ॱௐʹ૿Ճத .BHJD1PEͷ঺հ
  12. ͝ར༻اۀ͞· .BHJD1PEͷ঺հ NBHJDQPEDPN

  13. ϒϩά౳Ͱ΋औΓ্͍͍͛ͯͨͩͯ·͢ .BHJD1PEͷ঺հ • 6*ςετͷࣗಈԽʹ.BHJD1PEΛಋೖͨ͠࿩ • "*ࣗಈςετπʔϧ.BHJD 1PEͰɺະܦݧऀ͕ ࣗಈςετͷຽओԽʹ௅ઓͯ͠Έͨɻ • .BHJD

    1PEϞόΠϧΞϓϦςετ࣮૷ͷٯҾ͖ • .BHJD 1PEΛ࢖ͬͯΈ·ͨ͠ • OPUFࣾͰͷ.BHJD 1PE׆༻ࣄྫ • .BHJD 1PE ׆༻ࣄྫ • ଓɾϊϋφͷςετࣗಈԽ • ඇϓϩάϥϚʔͰ΋ࣗಈςετ
  14. ରԠ؀ڥ ςετσʔλอଘઌ .BHJD1PEͷ঺հ ςετ࣮ߦ؀ڥ Ϋϥ΢υ ϩʔΧϧ .BHJD1PE Ϋϥ΢υ ֎෦ Ϋϥ΢υ

  15. σϞ .BHJD1PEͷ঺հ ςετฤूը໘ .BHJD1PE Ϋϥ΢υ୺຤

  16. .BHJD1PEͷ঺հ σϞ https://www.youtube.com/watch/IrK3g-0_Ypc

  17. ϞόΠϧΞϓϦ6*ςετͷ՝୊ .BHJD1PEͷ঺հ "*ͷ׆༻ ػೳ঺հ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ࢖͍ํ

  18. "*ͷ׆༻  ೔ຊޠͷཁૉઆ໌จΛܭࢉ  ςετεΫϦϓτࣗಈम෮

  19. ೔ຊޠͷཁૉઆ໌จ "*ͷ׆༻ r ೔ຊޠͷཁૉઆ໌จΛܭࢉ 要素説明⽂: AIロジックで計算 ⾃由に書き換え可能 システム(Appium)ロケータ: 要素ツリーから計算

  20. ཁૉઆ໌จͷܭࢉʹ࢖͍ͬͯΔ৘ใ "*ͷ׆༻ r ೔ຊޠͷཁૉઆ໌จΛܭࢉ • 6*πϦʔ৘ใଐੑɺςΩετɺλά໊ɺ౳ʑ • 0$3 ը૾͔Βͷจࣈೝࣝ •

    σΟʔϓϥʔχϯάʹΑΔ෺ମछྨೝࣝ
  21. ࣗಈम෮ ηϧϑώʔϦϯά ͱ͸ "*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮ ςετର৅ը໘ͷόʔδϣϯΞοϓʹ߹Θ ͤɺ "*͕ςετεΫϦϓτΛࣗಈमਖ਼

  22. .BHJD 1PEͷࣗಈम෮  σϞ "*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮ • ͱ͋ΔσϞΞϓϦͷςετέʔε •

    JE͕ͳ͍ͨΊɺ಺෦γεςϜ໊ʹ͸จࣈྻʮొ࿥ʯΛ࢖༻
  23. .BHJD1PEͷࣗಈम෮  σϞ • ͋Δ೔ɺʮొ࿥ʯ͕ʮ͜ͷ಺༰Ͱొ࿥ʯʹมߋ͞Εͨ • ͜ͷΞϓϦͰςετΛ࣮ߦ͢Δͱɺςετࣦഊͯ͠͠·͏͕ "*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮

  24. "*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮ .BHJD1PEͷࣗಈम෮ σϞ https://www.youtube.com/watch/WcQ9lBatJpg

  25. • ςετ࡞੒࣌ͱ࣮ߦ࣌ͷ6*πϦʔΛൺֱͯ͠ɺྨࣅ౓͕ߴ͍ ཁૉ͕͋Ε͹ར༻ ࣗಈम෮ͷ࢓૊Έ "*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮ テスト作成時ロケータ テスト実⾏時UI テスト作成時UI

    修復後の新ロケータ
  26. • ཁૉͷ֤छଐੑɺҐஔɺଞͷཁૉͱͷ਌ࢠؔ܎ɺ౳ʑ • 0$3݁Ռ • σΟʔϓϥʔχϯάʹΑΔ෺ମछྨೝࣝ ྨࣅ౓ൺֱͷج४ "*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮

  27. ϞόΠϧΞϓϦ6*ςετͷ՝୊ .BHJD1PEͷ঺հ "*ͷ׆༻ ػೳ঺հ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ࢖͍ํ

  28. Ϋϥ΢υγϛϡϨʔλ ػೳ঺հ • ϩʔΧϧ؀ڥΑΓ҆ఆɾߴ଎ • J04ɺ"OESPJEʹରԠ

  29. Ϋϥ΢υ࣮ػ • #SPXTFS4UBDL 4BVDF-BCT 3FNPUF5FTU,JU )FBE4QJO ͱ࿈ܞՄೳ ֎෦αʔϏεͷܖ໿͕ඞཁ • աڈػछ͔Β࠷৽ػछ·Ͱ๛෋ͳ඼ἧ͑

    ػೳ঺հ SauceLabs Remote TestKit
  30. Ϋϩε୺຤ςετ • ৭ʑͳόʔδϣϯػछͷ૊Έ߹ΘͤͰฒྻ௚ྻ࣮ߦ ػೳ঺հ

  31. Ϋϩε୺຤ςετ • ςετϑϩʔΛ෼ׂͯ͠ฒྻ࣮ߦ͠ɺߴ଎Խ͢Δ͜ͱ΋Մೳ ػೳ঺հ

  32. ֤छ୺຤ૢ࡞ • ͞·͟·ͳίϚϯυΛ༻ҙ ػೳ঺հ

  33. ֤छ୺຤ૢ࡞ ػೳ঺հ 画像アップロード ピッカー操作 端末回転 スワイプ

  34. 8FC7JFXαϙʔτ • $PSEPWBΞϓϦ .POBDBΞϓϦʹ΋ରԠ ػೳ঺հ

  35. ஋νΣοΫ ػೳ঺հ • ༷ʑͳ৚݅Ͱظ଴஋νΣοΫ

  36. ৚݅෼ذ ػೳ঺հ • ʮμΠΞϩά͕ग़ͨͱ͖͚ͩλοϓ͢ΔʯͳͲͷ༻్ʹ

  37. ڞ༗εςοϓ ػೳ঺հ • ܁Γฦ͠ར༻͢Δॲཧ͸ڞ௨Խ

  38. σʔλۦಈςετ ػೳ঺հ • ύϥϝʔλΛม͑ͯɺಉ͡ςετΛԿ౓΋࣮ߦ

  39. ϖʔδը૾Λෳ਺ςετͰڞ༗ ػೳ঺հ • 6*ϨϙδτϦɺ6*ϚοϓͷΑ͏ʹ࢖͑Δ

  40. ϩέʔλมߋ ػೳ঺հ • ༷ʑͳީิ͔Β޷͖ͳ΋ͷΛબ୒Մೳ

  41. ม਺ ػೳ঺հ • ը໘্ͷ஋ͳͲΛอଘͯ͠ޙଓॲཧʹར༻Մೳ

  42. ڞ༗ม਺ ػೳ঺հ • શςετͰڞ༗͞ΕΔύϥϝʔλ

  43. γʔΫϨοτม਺ ػೳ঺հ • ϩάʹग़ͨ͘͠ͳ͍஋͸ϚεΩϯά

  44. ೔෇ม਺ ػೳ঺հ • ʮ໌೔ͷ೔෇ΛೖྗʯͳͲͷ༻్ʹ

  45. γεςϜม਺ ػೳ঺հ • ಛఆͷ04Ͱ͚ͩߦ͍͍ͨॲཧͳͲʹ

  46. )551ϦΫΤετૹ৴ ػೳ঺հ • %#ͷ஋νΣοΫ΍σʔλΫϦΞͳͲʹ

  47. &NBJMͷςετ ػೳ঺հ • ʮ)551ϦΫΤετૹ৴ʯͱʮਖ਼نදݱϚονʯͷ૊Έ߹Θͤ - (NBJMʹૹ৴͞Εͨ಺༰ͷνΣοΫ - (NBJMʹૹ৴͞ΕͨϦϯΫΛΫϦοΫ • IUUQTXXXUSJEFOURBDPNNBHJDQPEFNBJMUFTUJOH

  48. ςετέʔεϥϕϧ ػೳ঺հ • ςετʹϥϕϧΛ෇༩Մೳ • ϥϕϧΛࢦఆ PSআ֎ ͯ͠ςετҰׅ࣮ߦՄೳ

  49. εέδϡʔϧ࣮ߦ ػೳ঺հ • ຊ൪؀ڥͷ؂ࢹͳͲʹ

  50. ίϝϯτ ػೳ঺հ

  51. ίϐʔɾషΓ෇͚ ػೳ঺հ

  52. ฤूΛݩʹ໭͢ɾ΍Γ௚͢ ػೳ঺հ

  53. ෦෼ςετ࣮ߦ ػೳ঺հ

  54. ςετ݁Ռը໘Ωϟϓνϟμ΢ϯϩʔυ ػೳ঺հ • ΤϏσϯεऔಘ΍ը૾ൺֱʹ

  55. ը૾ࠩ෼ൺֱϨϙʔτ ػೳ঺հ • ը໘Ωϟϓνϟμ΢ϯϩʔυͱSFHDMJͷ૊Έ߹ΘͤͰ࣮ݱ • IUUQTCMPHUSJEFOURBDPNSFHDMJNBHJDQPEFF

  56. ϝϯόʔݖݶ؅ཧ ػೳ঺հ • ϓϩδΣΫτ୯ҐͰͷݖݶઃఆ͕Մೳ

  57. ઀ଓݩ*1੍ݶ ػೳ঺հ • ΤϯλʔϓϥΠζϓϥϯͷػೳ

  58. 4".-γϯάϧαΠϯΦϯ ػೳ঺հ • ΤϯλʔϓϥΠζϓϥϯͷػೳ

  59. ӳޠར༻΋Մೳ ػೳ঺հ • ւ֎Ͱ΋࢖ΘΕ͍ͯ·͢

  60. ϞόΠϧΞϓϦ6*ςετͷ՝୊ .BHJD1PEͷ঺հ "*ͷ׆༻ ػೳ঺հ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ࢖͍ํ

  61. #JUSJTF͔Βͷ.BHJD 1PEςετ࣮ߦ #JUSJTFͱͷ࿈ܞ • ʮ.BHJD1PEʯεςοϓͰ(6*ઃఆՄೳ

  62. Ϗϧυ͔Βςετ·Ͱϒϥ΢β্Ͱ׬݁ #JUSJTFͱͷ࿈ܞ Bitriseの GUIで アプリのビルド設定 Magic Podの GUIで テスト作成 Magic

    Podステップの GUIで テスト実⾏設定
  63. $*ͷྲྀΕ .BHJD1PEΫϥ΢υ্ͷςετ #JUSJTFͱͷ࿈ܞ γϛϡϨʔλɾ ΤϛϡϨʔλ༻ͷ BQQBQLΛϏϧυ ʮ.BHJD1PEʯ εςοϓͰ ςετ࣮ߦ .BHJD1PEͷ

    Ϋϥ΢υͰ ςετ࣮ߦ
  64. $*ͷྲྀΕ ֎෦Ϋϥ΢υ্ͷςετ #JUSJTFͱͷ࿈ܞ ࣮ػ༻ͷ JQBBQLΛϏϧυ ʮ.BHJD1PEʯ εςοϓͰ ςετ࣮ߦ 4BVDF-BCTɾ #SPXTFS4UBDL౳Ͱ

    ςετ࣮ߦ
  65. ৄ͍͠ઃఆํ๏ #JUSJTFͱͷ࿈ܞ • J04 - IUUQTCMPHUSJEFOURBDPNCJUSJTFNBHJDQPE • "OESPJE - IUUQTCMPHUSJEFOURBDPNCJUSJTFNBHJDQPEBOESPJE

  66. ϞόΠϧΞϓϦ6*ςετͷ՝୊ .BHJD1PEͷ঺հ "*ͷ׆༻ ػೳ঺հ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ࢖͍ํ

  67. ͓͢͢Ίͷ࢖͍ํ ᶃϦϦʔεલखಈςετͷࣗಈԽ ᶄϚϧν୺຤ςετ ᶅ$* ᶆຊ൪؀ڥ؂ࢹ ͓͢͢Ίͷ࢖͍ํ

  68. ᶃϦϦʔεલखಈςετͷࣗಈԽ ͓͢͢Ίͷ࢖͍ํ • ݄ճҎ্ͷස౓Ͱςετ͢Δ৔߹ʹɺಛʹ༗ޮ • ͓͢͢ΊͷࣗಈԽ༏ઌॱҐ まずは正常系を カバー 運⽤してみて、 課題を洗い出す

    異常系は 正常系のあと
  69. ᶄϚϧν୺຤ςετ • ʮҰׅ࣮ߦςετʯΛ͞·͟·ͳύλʔϯͰ࣮ࢪ OSバージョン iPhone/iPad 多⾔語テスト OSバージョン メーカー iOS Android

    共通 ͓͢͢Ίͷ࢖͍ํ
  70. ᶅ$* ͓͢͢Ίͷ࢖͍ํ • ຖ൩ςετ࣮ߦ PS։ൃςετ؀ڥΛߋ৽͢Δͨͼʹ࣮ߦ • ෆ۩߹ʹ͙͢ʹؾ෇͚ΔͷͰɺ։ൃ͕ޮ཰తʹ - ͕࣌ؒܦͭͱɺࢥ͍ग़͢ͷ͕େม -

    ଟ਺ͷ։ൃऀͷमਖ਼͕ೖͬͨޙͩͱɺݪҼಛఆ͕େม
  71. ᶅ$* ͓͢͢Ίͷ࢖͍ํ ࠷৽ιʔείʔυͰ ΞϓϦΛϏϧυ ʮ.BHJD1PEʯεςοϓͰ ςετ࣮ߦ Ϋϥ΢υͰ ςετ࣮ߦ

  72. ᶆຊ൪؂ࢹ ͓͢͢Ίͷ࢖͍ํ • ༧ظͤ͵໰୊ʹΑΓຊ൪؀ڥͰ໰୊͕ى͖͍ͯͳ͍͔؂ࢹ - ϝϞϦɺσΟεΫɺωοτϫʔΫɺαʔόμ΢ϯɺखಈ࡞ۀϛεɺFUD • ຊ൪؀ڥͱݕূ؀ڥͰ͸ɺσʔλɾαʔόઃఆɾΠϯϑϥ͕ҟ ͳΔͷͰɺຊ൪Ͱ͚ͩ໰୊͕ى͜Δ͜ͱ΋͋Δ

  73. ͥͻ͝׆༻͍ͩ͘͞ʂ ᶃϦϦʔεલखಈςετͷࣗಈԽ ᶄϚϧν୺຤ςετ ᶅ$* ᶆຊ൪؀ڥ؂ࢹ ͓͢͢Ίͷ࢖͍ํ

  74. ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ