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

Automated testing in Ruby 101

Automated testing in Ruby 101

Masafumi Okura

March 04, 2023
Tweet

More Decks by Masafumi Okura

Other Decks in Programming

Transcript

  1. RubyͰ͸͡ΊΔࣗಈςετ
    ࣛࣇౡRubyձٞ02


    େ૔խ࢙ʢOKURA Masafumiʣ
    2022-03-04, mark MEIZAN

    View Slide

  2. ࣗಈςετ

    View Slide

  3. ॻ͍͍ͯΔਓ—

    View Slide

  4. ࠓ೔ͷ໨ඪ

    View Slide

  5. ࣗಈςετ


    ʹ͍ͭͯͷ


    ֓ཁͷཧղ

    View Slide

  6. ࠓ೔ͷ͓࿩
    1. ࣗಈςετʹ͍ͭͯ


    2. Rubyʹ͓͚Δࣗಈςετ


    3. ྑ͍ࣗಈςετͱ͸


    4. ࣮ԋʂςετϑΝʔετ

    View Slide

  7. ͦͷલʹ

    View Slide

  8. ࣗݾ঺հ

    View Slide

  9. Okura.introduce(self)
    • ໊લɿେ૔խ࢙


    • ॴଐɿϑϦʔϥϯε


    • ՝֎׆ಈɿKaigi on RailsɺGrow.rbɺRubygems Code
    Reading෦ɺ֤छొஃɺOSS׆ಈɺRails GirlsίʔνɺϑΟ
    ϤϧυϒʔτΩϟϯϓͷΞυόΠβʔ


    • ॳࣛࣇౡ

    View Slide

  10. 1. ࣗಈςετ


    ʹ͍ͭͯ

    View Slide

  11. ࣗಈςετͱ͸

    View Slide

  12. ϓϩάϥϜͱͯ͠


    ࣮૷͞Εͨςετ

    View Slide

  13. ϓϩάϥϜͳͷͰ


    ࣗಈԽ͕؆୯

    View Slide

  14. ςετͳͷͰ


    ͋ΔछͷݕূΛ


    ߦ͏

    View Slide

  15. ࣗಈςετʹ͍ͭͯ
    1. ࣗಈςετͷԸܙ


    2. ࣗಈςετͷछྨ


    3. ࣗಈςετͷ஫ҙ఺

    View Slide

  16. 1.1 ࣗಈςετͷ


    Ըܙ

    View Slide

  17. ࣗಈςετ͸Կ͕خ͍͠ͷ͔ʁ
    • ίʔυʹର͢ΔυΩϡϝϯτʹͳΔ


    • ίʔυͷWhatΛઆ໌͢Δ


    • όάͷ࠶ൃʢϦάϨογϣϯʣΛ๷͙


    • ϦϑΝΫλϦϯάͷॿ͚ʹͳΔʢ΄΅ඞਢʣ


    • ʢςετΛઌʹॻ͘৔߹ʣίʔυͷ඼্࣭͕͕Δ


    • ʮςετϑΝʔετʯ

    View Slide

  18. 1.2 ࣗಈςετͷ


    छྨ

    View Slide

  19. ࣗಈςετͷछྨ
    • ୯ମςετʢϢχοτςετʣ


    • ଞͷίϯϙʔωϯτ͔Β੾Γ཭ͯ͠ςετ


    • ݁߹ςετ


    • ͍͔ͭ͘ͷίϯϙʔωϯτΛ૊Έ߹Θͤͯςετ

    View Slide

  20. 1.3 ࣗಈςετͷ


    ஫ҙ఺

    View Slide

  21. ࣗಈςετͰ஫ҙ͢΂͖͜ͱ
    • ʮόά͕ͳ͍ʯ͜ͱͷূ໌ʹ͸ͳΒͳ͍


    • ʮςετ͕௨ͬͨʂˠόάͬͯͨorzʯΈ͍ͨͳ͜ͱ΋
    Α͋͘Δ


    • ίʔυΛॻ͍͔ͯΒςετΛॻ͘ͱେมʹͳΓ͕ͪ


    • ςετϑΝʔετͷํָ͕ʢݸਓͷҙݟͰ͢ʣ

    View Slide

  22. ͜ͷ࣌఺Ͱ


    ఻͑ͯ


    ͓͖͍ͨ͜ͱ

    View Slide

  23. ࣗಈςετ͸


    ॻ͘΋ͷ

    View Slide

  24. ࣗಈςετ͸جຊతʹ͸ॻ͘
    • ʮςετϑΝʔετʯ͔ʮςετϥετʯ͔͸ͲͪΒͰ
    ΋Α͍


    • MiniTest͔RSpec͔͸ͲͪΒͰ΋Α͍


    • ࡉ͔͍͜ͱ΋ׂͱؾʹ͠ͳ͍ͰΑ͍


    • ͱʹ͔͘ॻ͘

    View Slide

  25. ॻ͔ͳ͍ޙչ


    ΑΓ


    ॻ͘ޙչ

    View Slide

  26. 2. Rubyʹ͓͚Δ


    ࣗಈςετ

    View Slide

  27. Rubyͷੈքʹ͸


    ͨ͘͞Μͷςετ


    gem͕͋Γ·͢

    View Slide

  28. ςετgemͷখ෼ྨ
    1. ςετϑϨʔϜϫʔΫ


    2. ಛఆ༻్޲͚DSL


    3. αϙʔτϥΠϒϥϦ

    View Slide

  29. 2.1 ςετ


    ϑϨʔϜϫʔΫ

    View Slide

  30. RubyͷςετϑϨʔϜϫʔΫ
    • RSpec


    • μ΢ϯϩʔυ਺͕࠷ଟɺ൚༻ςετDSLͰ΋͋Δ


    • MiniTest


    • xUnitܥ౷ɺεϐʔυͱγϯϓϧ͕͞΢Ϧ


    • Test::Unit


    • ࠷ݹͷςετϑϨʔϜϫʔΫɺxUnitܥ౷

    View Slide

  31. 2.2 ಛఆ༻్޲͚


    DSL

    View Slide

  32. ಛఆ༻్޲͚DSL
    • Capybara


    • ϒϥ΢βૢ࡞ͷͨΊͷDSL


    • Cucumber


    • ड͚ೖΕςετͷͨΊͷDSLɺ೔ຊޠ͕ॻ͚Δ

    View Slide

  33. 2.3 αϙʔτ


    ϥΠϒϥϦ

    View Slide

  34. αϙʔτϥΠϒϥϦ
    • FactoryBot


    • ςετσʔλʢߏ଄Խ͞Εͨσʔλʣͷੜ੒


    • Faker


    • ϥϯμϜσʔλʢϝʔϧΞυϨε΍໊લͳͲʣ


    • Timecop


    • ࣌ؒΛૢ࡞͢Δ

    View Slide

  35. 3. ྑ͍ࣗಈςετ


    ͱ͸

    View Slide

  36. ྑ͍ࣗಈςετͷϙΠϯτ
    • ࣗಈςετ͸ίʔυͳͷͰɺྑ͍ίʔυͷݪଇΛద༻͢Δ


    • Մಡੑʢ໋໊ɺཻ౓ͷখ͞͞ͳͲʣ


    • ద੾ͳߏ଄Խ


    • ࣮ߦ࣌ؒͷ୹͞


    • ແବͳσʔλੜ੒Λආ͚ΔʢಛʹσʔλϕʔεΞΫηε͸஗͍ʣ


    • ୯ମςετʹدͤΔʢ݁߹ςετ͸஗͍ʣ

    View Slide

  37. ࿦఺
    • RSpecͩͱྑ͍ςετʹ͍ͭͯٞ࿦ʹͳΓ͕ͪ


    • letͱlet!ͱbeforeͷ࢖͍෼͚


    • contextͱitʹ೔ຊޠΛ࢖͑Δ͔ʁ


    • etc…


    • ϩʔΧϧͳ׳शʹै͏ͷ͕٢

    View Slide

  38. 4. ࣮ԋʂ


    ςετϑΝʔετ

    View Slide