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

E2Eテストから負荷試験シナリオを作ってみた / Why do we make a scenario of load testing from E2E testing scenarios

mackee
November 11, 2022

E2Eテストから負荷試験シナリオを作ってみた / Why do we make a scenario of load testing from E2E testing scenarios

PR TIMES x 面白法人カヤック合同勉強会

mackee

November 11, 2022
Tweet

More Decks by mackee

Other Decks in Programming

Transcript

  1. E2Eςετ͔Βෛՙࢼݧγφ
    ϦΦΛ࡞ͬͯΈͨ
    @mackee_w a.k.a macopy
    PR TIMES x ໘ന๏ਓΧϠοΫ߹ಉษڧձ
    2022-11-11 19:00

    View Slide

  2. @macopy
    • ໘ന๏ਓΧϠοΫ eεϙʔπࣄۀ෦
    TonamelαʔόαΠυςοΫϦʔυ
    • Perlେ޷͖ Go΋޷͖
    • ISUCON11 ༏উ
    • ISUCON12 ༧બ ग़୊
    • ࠷ۙϋϚ͍ͬͯΔϒΩ͸ιΠνϡʔόʔ

    View Slide

  3. Tonamelͷ࿩

    View Slide

  4. ߏ੒

    View Slide

  5. Client(Nuxt)͕GraphQLΛൃߦͯ͠

    View Slide

  6. ֤ϚΠΫϩαʔϏε͕GraphQLΛड͚Δ

    View Slide

  7. ൃ୺
    ෛՙࢼݧΛ͍ͨ͠

    View Slide

  8. ͦͷଞ۩ମతͳ໨త

    View Slide

  9. ෛՙࢼݧΛ΍ΔͨΊʹ
    άοζΛ࡞ͬͯ΋Β͏

    View Slide

  10. εςʔδϯά؀ڥͷߏங

    View Slide

  11. ຊ൪DB͔Βͷίϐʔ
    https://techblog.kayac.com/automate-initializing-databases-for-staging

    View Slide

  12. k6ಋೖ

    View Slide

  13. thanks! @ebi-yade

    View Slide

  14. ͯ͞ɺͲ͏΍ͬͯγφϦΦΛॻ͜͏͔

    View Slide

  15. ՝୊: Tonamel͸SPA(ͳϖʔδ͕ଟ͍)

    View Slide

  16. ୯७ʹϖʔδΛfetch͢Δͱ
    NuxtͷΤϯτϦʔϙΠϯτͷHTML͕
    ฦͬͯ͘Δ͚ͩ

    View Slide

  17. “ٖࣅతʹຊ൪ΞΫηεʹ͍ۙ"

    View Slide

  18. ஫ҙ: ࠷ॳ͔Β͜ΕΛ໨ࢦ͞ͳ͍Ͱʂ
    • ͜Ε is ʮٖࣅతʹຊ൪ΞΫηεʹ͍ۙʙʯ
    • ·ͣ͸ `/` ͱ͔ΛF5࿈ଧ͢ΔΑ͏ͳ୯७ͳγφϦΦΛ࡞Γ·͠ΐ͏
    • Ͱͳ͍ͱ͍ͭ·Ͱܦͬͯ΋ϕϯνϚʔΧʔࣗମͷڍಈ֬ೝ͕Ͱ͖ͳ͍
    • ͜ͷ࣌఺Ͱ `/` ΍SPAͰ͸ͳ͍ϖʔδͷෛՙࢼݧ͸΍ͬͯΈ͍ͯΔ
    • ͦͯ͠”ऑ఺”͸ݟ͚͍ͭͯΔ…͕͜Ε͸·ͨผͷ࿩

    View Slide

  19. ࡞ઓ1: ۪௚ʹGraphQLΫΤϦΛॻ͍͍ͯ͘

    View Slide

  20. ײ૝: େม
    • ʮ͜Εɺ΋͔ͯ͠͠ΫϥΠΞϯτଆͷίʔυΛ࠶࣮૷ͯ͠ͳ͍ʁʁʯ
    • ΫΤϦ͸͋Δఔ౓ྲྀ༻ग़དྷΔ΋ͷͷ(k6΋JSͳͷͰ)ɺॲཧͱ͔͸ίϐ
    ϖ͕೉͍͠ͷͰΫϥΠΞϯτͷڍಈΛಡΈͳ͕Βॻ͍͍͔ͯ͘͠ແ͍
    • ͋Δఔ౓ॲཧΛؙΊΔ(ఘΊΔʁ)ʹͯ͠΋ɺՃݮ͕೉͍͠

    View Slide

  21. ࡞ઓ2: xk6-browser
    https://k6.io/docs/javascript-api/xk6-browser/

    View Slide

  22. ʮϒϥ΢βΛ͍ͬͺ͍ฒ΂ͯΞΫηε
    ͠·͘Ε͹͍͍͡ΌΜʯ

    View Slide

  23. ݁Ռ: εέʔϧ͠ͳ͍, ҆ఆͤͣ
    • ͦ΋ͦ΋Chromium͔ͩΒͶ
    • xk6-browserͷ࢖͍ํ͕ѱ͍ͷ͔ɺ҆ఆ͍ͯ͠ͳ͍ͷ͔ɺΤϥʔ͕ग़
    ·͘Δ

    View Slide

  24. ͸ʔͲ͏ͨ͠΋ͷ͔

    View Slide

  25. har-to-k6
    https://github.com/grafana/har-to-k6

    View Slide

  26. ϒϥ΢βͷϩά͔Βk6ͷγφϦΦʹม׵͢Δ܅
    • ൃ૝ʮϒϥ΢β͕ॏ͍
    ͳΒϒϥ΢βͰϖʔδ
    ݟͨͱ͖ͷڍಈ͔Βγ
    φϦΦʹ͢Ε͹͍͍Μ
    ͡Όͳ͍ʁʯ
    • .HARϑΝΠϧ͔Βk6γ
    φϦΦ(JavaScript)΁ม
    ׵͢Δެࣜπʔϧ

    View Slide

  27. ͜ΕͰ΋՝୊ײ
    • ϑϩϯτΤϯυଆͷڍಈ͸೔ʑΊ·͙Δ͘͠มΘͬͯ͠·͏
    • ෛՙࢼݧͱͯ͠͸ɺಛఆͷύε(=ػೳ)ʹΞΫηεͨ͠ͱ͖ͷϒϥ΢β͔Βͷ
    ϦΫΤετͷڍಈΛ࠶ݱ͍ͨ͠
    • HARΛੜ੒͢ΔͨΊʹ࠷৽ͷϑϩϯτΤϯυͷڍಈΛ௥͔͚ͬΔͨΊʹ
    ChromeͰϙνϙν͢Δͷ͔ʁ
    • ਓྗͷਖ਼֬ੑɾਓྗͷखؒ => ໘౗͔͘͞͞Β͘Δෛՙࢼݧ཭Ε

    View Slide

  28. .HARΛ࡞Δͷ΋ࣗಈԽ͠·͠ΐ͏

    View Slide

  29. ࢓૊Έ

    View Slide

  30. PlaywrightͰHARΛు͘ίʔυ

    View Slide

  31. ݁Ռ: ͍͍ײ͡ͷෛՙΛ͔͚ΒΕͨ

    View Slide

  32. ׬

    View Slide

  33. ͦͷଞͷ࿩୊
    • HARϕʔεγφϦΦͰଞͷυϝΠϯ΍ը૾ʹ͸fetch͠ͳ͍Α͏ʹ͢ΔϑΟϧλ
    • εςʔδϯά؀ڥ΁ͷೝূΛϕϯνϚʔΧʔ͚ͩճආ͢Δํ๏
    • AuroraͷPerformance Insights͕ศར, ClusterͷҰ࣌ఀࢭ΋ศར
    • OGPͰmeta tagʹେձ৘ใΛຒΊࠐΜͰ͍Δ͕ͦΕ͕ॏͯ͘໘ന͍ʢ໘ന͘ͳ͍ʣ
    • SPA͔ͩΒΤϯτϦʔϙΠϯτ͚ͩݟͯ΋ҙຯ͕ͳ͍ͱ͸ͳΜͩͬͨͷ͔
    • ΫΤϦΩϟογϡ͞Μɺࠓ·Ͱ͋Γ͕ͱ͏

    View Slide