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

PHPerのための テストコード入門.

02
December 01, 2019

PHPerのための テストコード入門.

2019/12/01
PHP カンファレンス2019 のセッションで使用したスライドです

02

December 01, 2019
Tweet

More Decks by 02

Other Decks in Programming

Transcript

  1. PHPerͷͨΊͷ
    ςετίʔυೖ໳
    PHP Conference Japan 2019
    02 / େ௡ ࿨௬

    View Slide

  2. Who am I?
    • 02 ʢେ௡ ࿨௬ʣ
    • Twitter, Github:cocoeyes02
    • ॴଐɿגࣜձࣾ΢Οϧήʔτ(৽ଔ2೥໨)
    • PHPͱ΄΅ಉ͍೥ʢ1994೥ੜ·Εʣ
    • όοΫΤϯυΤϯδχΞ
    • ͨ·ʔʹOSSͷίϯτϦϏϡʔτͯͨ͠Γ͠·͢

    View Slide

  3. ͜ͱ͹ͷఆٛ
    • ςετ
    • ιϑτ΢ΣΞ͕ਖ਼͘͠ಈ࡞͢Δ͔ݕূ͢Δ͜ͱ
    • ςετίʔυ
    • ίʔυ্Ͱιϑτ΢ΣΞ͕ਖ਼͘͠ಈ͍͍ͯΔ
    ͔ࣗಈͰݕূ͢Δ࢓૊Έͷ͜ͱ

    View Slide

  4. ͜ͷൃදͰͷௌߨऀͷΰʔϧ
    ςετίʔυΛಋೖ͢Δલʹ
    ʮͳͥͦͷςετίʔυΛॻ͘ͷ͔ʯ
    Λ࿩ͤΔ͜ͱ

    View Slide

  5. ࠓ೔࿩͢͜ͱ
    • ͦ΋ͦ΋ͳͥςετΛॻ͘ͷ͔
    • ͳͥςετίʔυΛಋೖ͢Δͷ͔
    • ͦΕͧΕͷςετίʔυͷಛ௃ͱൺֱʹ͍ͭ
    ͯɺ൑அج४ྫ

    View Slide

  6. ࠓ೔࿩͞ͳ͍͜ͱ
    • ςετίʔυͷಋೖํ๏
    • ςετίʔυͷॻ͖ํ
    • ςετίʔυΛ࠾༻͢Δ্Ͱͷઈରղ

    View Slide

  7. ΞδΣϯμ
    • ςετͷ໨త
    • ςετίʔυͷ໨త
    • ༷ʑͳςετίʔυΛ஌Δ

    View Slide

  8. ΞδΣϯμ
    • ςετͷ໨త
    • ςετίʔυͷ໨త
    • ༷ʑͳςετίʔυΛ஌Δ

    View Slide

  9. ςετͷ໨త͸
    ͳΜͩͱࢥ͍·͔͢ʁ

    View Slide

  10. ςετͷ໨త͸
    ͳΜͩͱࢥ͍·͔͢ʁ
    • όάΛݟ͚ͭΔ͜ͱʁ
    • ཁ݅Λຬ͍ͨͯ͠Δ͜ͱΛ֬ೝ͢Δ͜ͱʁ
    • ιϑτ΢ΣΞͷ඼࣭ΛߴΊΔ͜ͱʁ

    View Slide

  11. ISTQBςετٕज़ऀࢿ੍֨౓
    γϥόεʹΑΔͱ
    • ཁ݅ɺϢʔβʔετʔϦʔɺઃܭɺ͓ΑͼίʔυͳͲͷ࡞ۀ੒Ռ෺ΛධՁ͢Δɻ
    • ໌֬ʹͨ͢͠΂ͯͷཁ݅Λຬ͍ͨͯ͠Δ͜ͱΛݕূ͢Δɻ
    • ςετର৅͕׬੒͠ɺϢʔβʔ΍ͦͷଞεςʔΫϗϧμʔͷظ଴௨Γͷಈ࡞಺༰Ͱ͋Δ͜ͱͷଥ౰ੑ֬ೝΛ͢
    Δɻ
    • ςετର৅ͷ඼࣭ʹର͢Δ৴པΛੵΈॏͶͯɺॴఆͷϨϕϧʹ͋Δ͜ͱΛ֬ূ͢Δɻ
    • ܽؕͷ࡞Γ͜ΈΛ๷͙ɻ • ނো΍ܽؕΛൃݟ͢Δɻ
    • εςʔΫϗϧμʔ͕ҙࢤܾఆͰ͖Δɺಛʹςετର৅ͷ඼࣭Ϩϕϧʹ͍ͭͯͷे෼ͳ৘ใΛఏڙ ͢Δɻ
    • ʢҎલʹݕग़͞Εͳ͔ͬͨނো͕ӡ༻؀ڥͰൃੜ͢ΔͳͲͷʣෆద੾ͳιϑτ΢ΣΞ඼࣭ͷϦεΫϨϕϧΛ௿
    ݮ͢Δɻ
    • ܖ໿্ɺ๏཯্ɺ·ͨ͸ن੍্ͷཁ݅΍ඪ४Λ९क͢Δɺͦͯ͠ʗ·ͨ͸ςετର৅͕ͦͷΑ͏ ͳཁ݅΍ඪ४
    ʹ४ڌ͍ͯ͠Δ͜ͱΛݕূ͢Δɻ
    http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J03.pdf

    View Slide

  12. ͬ͘͟Γ·ͱΊΔͱɹɹɹɹɹɹɹ
    ςετͷ໨త͸
    • ඼࣭ΛՄࢹԽ͢Δ͜ͱ
    • ιϑτ΢ΣΞͷͲͷ඼࣭ΛߴΊΔ͔ɺɹɹɹɹɹɹ
    ൑அ͢ΔͨΊͷࡐྉΛఏڙ͢Δ͜ͱ

    View Slide

  13. ͬ͘͟Γ·ͱΊΔͱɹɹɹɹɹɹɹ
    ςετͷ໨త͸
    • ඼࣭ΛՄࢹԽ͢Δ͜ͱ
    • ιϑτ΢ΣΞͷͲͷ඼࣭ΛߴΊΔ͔ɺɹɹɹɹɹɹ
    ൑அ͢ΔͨΊͷࡐྉΛఏڙ͢Δ͜ͱ

    View Slide

  14. ඼࣭͕कΕ͍ͯΔ͔Ͳ͏͔͸
    ݟ͑ͮΒ͍
    ඼࣭ͦͷ΋ͷ͕͔ͬ͠ΓఆٛͰ͖͓ͯΒ͍ͣ͋·͍
    ͳέʔε΋
    ඼࣭͕कΕ͍ͯΔ͔ࣔ͢खஈͷ1ͭͱͯ͠ɹɹɹɹ
    ςετΛ࢖ͬͯ֬ೝ͢Δ

    View Slide

  15. ιϑτ΢ΣΞςετ͚ͩͰ͸ɺ
    ඼࣭ΛߴΊΒΕͳ͍
    ςετͰόάΛݟ͚ͭΔ͜ͱ͸Ͱ͖Δ͕ɺɹɹɹɹ
    όάΛमਖ਼͠ͳ͚Ε͹඼࣭ΛߴΊΔ͜ͱ͸ɹɹɹɹ
    Ͱ͖ͳ͍
    ʮ඼࣭อূʯͰ͋ͬͯɺʮ඼࣭޲্ʯͰ͸ͳ͍

    View Slide

  16. ͬ͘͟Γ·ͱΊΔͱɹɹɹɹɹɹɹ
    ςετͷ໨త͸
    • ඼࣭ΛՄࢹԽ͢Δ͜ͱ
    • ιϑτ΢ΣΞͷͲͷ඼࣭ΛߴΊΔ͔ɺɹɹɹɹɹɹ
    ൑அ͢ΔͨΊͷࡐྉΛఏڙ͢Δ͜ͱ

    View Slide

  17. ΤϯδχΞ͸඼࣭޲্ͷͨΊ
    ৭ʑͳ൑அΛ͢Δ
    ʮ࢓༷ͱҧ͏ػೳΛൃݟͨ͠ͷͰɺमਖ਼͠Α͏ʯ
    ʮ͋Δػೳͷόά݅਺͕ଟ͍ͷͰɺઃܭΛݟ௚ͦ͏ʯ
    ʮϦϦʔε͢Δʹ͸·ͩ΍Δ΂͖͜ͱ͕͋ΔͷͰɺɹɹ
    ϦϦʔε೔ΛԆظͯ͠όάमਖ਼΍ςετΛ͠Α͏ʯ

    View Slide

  18. ΤϯδχΞ͸඼࣭޲্ͷͨΊ
    ৭ʑͳ൑அΛ͢Δ
    ʮ࢓༷ͱҧ͏ػೳΛൃݟͨ͠ͷͰɺमਖ਼͠Α͏ʯ
    ʮ͋Δػೳͷόά݅਺͕ଟ͍ͷͰɺઃܭΛݟ௚ͦ͏ʯ
    ʮϦϦʔε͢Δʹ͸·ͩ΍Δ΂͖͜ͱ͕͋ΔͷͰɺɹɹ
    ϦϦʔε೔ΛԆظͯ͠όάमਖ਼΍ςετΛ͠Α͏ʯ
    ιϑτ΢ΣΞͷ඼࣭ΛߴΊΔ൑அͷࡐྉΛɹɹ
    ఏڙ͢Δͷ͕ςετͰ͋Δ

    View Slide

  19. ྫ୊
    ex.γεςϜ։ൃΛ͍ͯͯ͠ϦϦʔεؒࡍͰ͋Δ
    ೲظ΋ഭ͍ͬͯΔͷͰɺૣ͘ϦϦʔεΛ͍ͨ͠

    View Slide

  20. ςετ݁Ռͱ্௕൑அ
    ςετ݁Ռ ্௕൑அ
    όάΛͨ͘͞Μൃݟͨ͠ ௚͢·ͰϦϦʔεΛ߇͑Δ
    όά͕΄ͱΜͲͳ͔ͬͨ
    ۓٸੑ͕௿͍όά͹͔Γͩͬͨɹ
    ϦϦʔε͔ͯ͠Β௚͢

    View Slide

  21. ςετ݁Ռͱ্௕൑அ
    ςετ݁Ռ ্௕൑அ
    όάΛͨ͘͞Μൃݟͨ͠ ௚͢·ͰϦϦʔεΛ߇͑Δ
    όά͕΄ͱΜͲͳ͔ͬͨ
    ۓٸੑ͕௿͍όά͹͔Γͩͬͨɹ
    ϦϦʔε͔ͯ͠Β௚͢
    ʮ·ͩϢʔβʹग़ͤΔϨϕϧ͡Όͳ͍͔Βɺɹɹɹɹɹɹɹ
    ϦϦʔε೔ΛԆظͯ͠όάΛमਖ਼͠Α͏ʯ

    View Slide

  22. ςετ݁Ռͱ্௕൑அ
    ςετ݁Ռ ্௕൑அ
    όάΛͨ͘͞Μൃݟͨ͠ ௚͢·ͰϦϦʔεΛ߇͑Δ
    όά͕΄ͱΜͲͳ͔ͬͨ
    ۓٸੑ͕௿͍όά͹͔Γͩͬͨɹ
    ϦϦʔε͔ͯ͠Β௚͢
    ʮҰ౓ϦϦʔεͯ͠ϦϦʔεޙʹɺ
    ༏ઌ౓͕ߴ͍όά͔Βमਖ਼͍ͯ͜͠͏ʯ

    View Slide

  23. ʮϓϩάϥϚ͕஌Δ΂͖97ͷ͜ͱʯΑΓ
    Jon Jaggerࢯʮݟ͑ͳ͍΋ͷΛݟ͑ΔΑ͏ʹʯ
    ιϑτ΢ΣΞ։ൃϓϩδΣΫτΛਐΊΔ࣌͸͍ͭͰ΋ɺ
    ໨ʹݟ͑Δূڌ͕ͨ͘͞Μ͋Δͱ͍͏ঢ়ଶΛҡ࣋͢΂͖
    Ͱ͠ΐ͏ɻ
    ໨ʹݟ͑Δূڌ͕͋Ε͹ɺਐḿঢ়گ΋ਖ਼֬ʹ೺ѲͰ͖·
    ͢ɻܾͯ͠಄ͷத͚ͩͷࢥ͍ࠐΈͰ൑அ͠ͳ͘ͳΓ·
    ͢ɻ
    https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/
    %E8%A6%8B%E3%81%88%E3%81%AA%E3%81%84%E3%82%82%E3%81%AE%E3%82%92%E8%A6%8B%E
    3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB/

    View Slide

  24. ·ͱΊʢςετͷ໨తʣ
    • ςετͷ໨త
    • ඼࣭ΛՄࢹԽ͢Δ͜ͱ
    • ιϑτ΢ΣΞͷͲͷ඼࣭ΛߴΊΔ͔ɺɹɹɹɹɹ
    ൑அ͢ΔͨΊͷࡐྉΛఏڙ͢Δ͜ͱ
    • ςετ͸ʮ඼࣭޲্ʯͰ͸ͳ͘ʮ඼࣭୲อʯ

    View Slide

  25. ΞδΣϯμ
    • ςετͷ໨త
    • ςετίʔυͷ໨త
    • ༷ʑͳςετίʔυΛ஌Δ

    View Slide

  26. ςετίʔυͷ
    ໨త͸ͳΜͩͱࢥ͍·͔͢ʁ

    View Slide

  27. ςετίʔυΛಋೖ͢Δ໨త͸
    ͳΜͩͱࢥ͍·͔͢ʁ
    • อकੑͷͨΊʁ
    • ৺ͷฏԺͷͨΊʁ
    • ςετͷ޻਺ΛݮΒͨ͢Ίʁ

    View Slide

  28. ςετίʔυͷ໨త͸
    ඼࣭ͱ։ൃεϐʔυΛཱ྆͢Δ

    View Slide

  29. ςετͷ7ݪଇΑΓ
    3.ૣظςετͰ࣌ؒͱίετΛઅ໿
    ૣ͍ஈ֊ͰܽؕΛݟ͚ͭΔͨΊʹɺ੩తςετ׆ಈͱಈతςετ׆
    ಈͷ྆ํΛιϑτ΢ΣΞ։ൃϥΠϑ αΠΫϧͷͳΔ΂͘ૣ͍࣌ظʹ
    ։࢝͢΂͖Ͱ͋Δɻ
    ૣظςετ͸ɺγϑτϨϑτͱ΋ݺ͹ΕΔɻιϑτ ΢ΣΞ։ൃϥΠ
    ϑαΠΫϧͷૣ͍࣌ظʹςετΛߦ͏͜ͱʹΑΓɺίετΛ௿ݮ·
    ͨ͸࡟ݮͰ͖Δ
    http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J03.pdf

    View Slide

  30. γϑτϨϑτ
    όάΛݟ͚ͭΔͷ͕ૣ͚Ε͹ૣ͍΄Ͳɺɹɹɹɹɹ
    Өڹൣғ͕খ͍͞͏ͪʹमਖ਼Ͱ͖ΔͷͰɹɹɹɹɹ
    मਖ਼޻਺͕গͳ͘ͳΔͱ͍͏ߟ͑

    View Slide

  31. ྫɿόά͕ݟ͔ͭͬͨ࣌ͷରԠ
    ɹ
    ཁ݅ఆٛ ɹઃܭ ࣮૷ ςετ ϦϦʔεޙ

    View Slide

  32. ྫɿόά͕ݟ͔ͭͬͨ࣌ͷରԠ
    ɹ
    ཁ݅ఆٛ ɹઃܭ ࣮૷ ςετ ϦϦʔεޙ
    όάใࠂɺো֐ௐࠪɺݪҼಛఆɺϩδοΫमਖ਼ɺ
    ϨϏϡʔɺ͓໰͍߹ΘͤରԠɺ࠶ൃ๷ࢭࡦΛߟ͑Δʜ

    View Slide

  33. ྫɿόά͕ݟ͔ͭͬͨ࣌ͷରԠ
    ɹ
    ཁ݅ఆٛ ɹઃܭ ࣮૷ ςετ ϦϦʔεޙ
    όάใࠂɺݪҼಛఆɺϩδοΫमਖ਼ɺ
    ϨϏϡʔɺ࠶ςετ

    View Slide

  34. ྫɿόά͕ݟ͔ͭͬͨ࣌ͷରԠ
    ɹ
    ཁ݅ఆٛ ɹઃܭ ࣮૷ ςετ ϦϦʔεޙ
    ݪҼಛఆɺϩδοΫमਖ਼ɺϨϏϡʔ

    View Slide

  35. ྫɿόά͕ݟ͔ͭͬͨ࣌ͷରԠ
    ɹ
    ཁ݅ఆٛ ɹઃܭ ࣮૷ ςετ ϦϦʔεޙ
    ఆٛॻɾઃܭॻमਖ਼ɺϨϏϡʔ

    View Slide

  36. ૣ͘ݟ͚ͭΕ͹ɺ
    ͦͷ෼όάͷमਖ਼޻਺͸ݮΔ
    मਖ਼׬ྃ·Ͱʹ͔͔Δ޻਺


    ɹ
    ཁ݅ఆٛ ɹઃܭ ࣮૷ ςετ ϦϦʔεޙ

    View Slide

  37. ૣ͘ݟ͚ͭΕ͹ɺ
    ͦͷ෼όάͷमਖ਼޻਺͸ݮΔ
    मਖ਼ͷ޻਺ΛݮΒ͢ʹ͸ɺɹɹɹɹɹɹɹɹɹɹɹɹ
    গ͠Ͱ΋ૣ͍ஈ֊ͰόάΛݟ͚ͭΔ͜ͱ
    ςετίʔυͰୡ੒Ͱ͖Δͷ͔ʁ

    View Slide

  38. ISTQBςετٕज़ऀࢿ੍֨౓
    γϥόεʹΑΔͱ
    ςετ࣮ߦΛࢧԉ͢ΔπʔϧΛ࢖͏જࡏతͳར఺͸ҎԼͷ௨ΓͰ͋Δɻ
    • ൓෮͢Δखಈ࡞ۀͷ࡟ݮͱ࣌ؒͷઅ໿͕Ͱ͖Δʢྫ͑͹ɺϦάϨογϣϯςετ
    ͷ࣮ߦɺ؀ڥͷ ४උ/෮چλεΫɺಉ͡ςετσʔλͷ࠶ೖྗɺίʔσΟϯάඪ४
    ४ڌͷνΣοΫͳͲʣɻ
    • Ұ؏ੑ΍࠶࣮ߦੑ͕޲্͢Δʢྫ͑͹ɺ੔߹ੑͷ͋Δςετσʔλɺಉ͡ස౓ͱ
    ॱংͰͷςετ ࣮ߦɺཁ͔݅ΒͷҰ؏ͨ͠ςετέʔεͷநग़ͳͲʣɻ
    • ධՁͷ٬؍ੑ͕޲্͢Δʢྫ͑͹ɺ੩తͳܭଌɺΧόϨοδͳͲʣɻ
    • ςετʹؔ͢Δ৘ใ΁ͷΞΫηεͷ༰қੑ͕޲্͢Δʢྫ͑͹ɺςετਐḿɺܽ
    ؕ཰΍ੑೳܭଌ ݁Ռͷूܭɺ͓Αͼάϥϑͷ࡞੒ͳͲʣɻ
    http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J03.pdf

    View Slide

  39. खಈςετͱ
    ςετίʔυΛൺֱͯ͠ΈΔ
    • ςετͷ࣮ߦλΠϛϯά
    • ࣮֬ʹςετΛ࣮ߦͰ͖Δ͔

    View Slide

  40. खಈςετͱ
    ςετίʔυΛൺֱͯ͠ΈΔ
    • ςετͷ࣮ߦλΠϛϯά
    • ࣮֬ʹςετΛ࣮ߦͰ͖Δ͔

    View Slide

  41. खಈςετͱςετίʔυ
    Λൺֱ
    खಈςετͩͱ…
    ʮ࣮૷͕ऴΘͬͨͷͰɺΈΜͳͰςετ͢Δɹ
    λΠϛϯάͰ֬ೝ͠Α͏ʯ
    ཁ݅ఆٛ ɹઃܭ ࣮૷ ςετ ϦϦʔεޙ

    View Slide

  42. खಈςετͱςετίʔυ
    Λൺֱ
    ςετίʔυͩͱ…
    ʮίϚϯυҰൃͰςετͰ͖ΔͷͰɺɹɹɹɹ
    ಈ࡞֬ೝ͕ͯΒઌʹςετΛ͠Α͏ʯ
    ཁ݅ఆٛ ɹઃܭ ࣮૷ ςετ ϦϦʔεޙ

    View Slide

  43. खಈςετͱςετίʔυ
    Λൺֱ
    खಈςετ͸਺े෼ʙ਺͔͔࣌ؒΔͷʹର͠ɺ
    ςετίʔυ͸਺ඵʙ਺෼
    ςετͷFBΛૉૣ͘ड͚औΔ͜ͱ͕Ͱ͖Ε͹ɺ
    ։ൃϑϩʔͷதͰ΋ɺૣ͍ஈ֊ͰςετΛ࣮ߦ
    ͢ΔΑ͏ʹͳΔ

    View Slide

  44. खಈςετͱ
    ςετίʔυΛൺֱͯ͠ΈΔ
    • ςετͷ࣮ߦλΠϛϯά
    • ࣮֬ʹςετΛ࣮ߦͰ͖Δ͔

    View Slide

  45. खಈςετͱςετίʔυ
    Λൺֱ
    खಈςετ ςετίʔυ
    ώϡʔϚϯΤϥʔ ى͜Δ ىΒͳ͍
    Կճ࣮ߦͯ͠΋
    ಉ݁͡Ռ͕ಘΒΕΔ͔
    ʢႈ౳ੑʣ
    ώϡʔϚϯΤϥʔ͕
    ى͜ΔݶΓ
    ׬શʹ͸อূͰ͖ͳ͍
    Կ౓࣮ߦͯ͠΋
    ݁Ռ͸ҰॹͳͷͰ
    อূͰ͖Δ

    View Slide

  46. खಈςετͱςετίʔυ
    Λൺֱ
    खಈςετ ςετίʔυ
    ώϡʔϚϯΤϥʔ ى͜Δ ىΒͳ͍
    Կճ࣮ߦͯ͠΋
    ಉ݁͡Ռ͕ಘΒΕΔ͔
    ʢႈ౳ੑʣ
    ώϡʔϚϯΤϥʔ͕
    ى͜ΔݶΓ
    ׬શʹ͸อূͰ͖ͳ͍
    Կ౓࣮ߦͯ͠΋
    ݁Ռ͸ҰॹͳͷͰ
    อূͰ͖Δ
    ʮςετͨͭ͠΋Γͩͬͨ
    ͚Ͳɺ࣮ࡍ͸ςετखॱΛ
    ؒҧ͍͑ͯͨʂʯͱ͔

    View Slide

  47. खಈςετͱςετίʔυ
    ςετίʔυ͸όάमਖ਼޻਺ΛݮΒ͠ͳ͕Β΋
    ࣮֬ʹςετΛߦ͏͜ͱ͕Ͱ͖Δ
    →඼࣭ͱ։ൃεϐʔυΛཱ྆͢Δ͜ͱ͕Ͱ͖Δ

    View Slide

  48. ςετίʔυѹউ…
    ͱ͍͏Θ͚Ͱ͸ͳ͍
    ͨͩ͠ɺςετίʔυ͸ಋೖɾϝϯςφϯείετ͕ൃ
    ੜ͢Δ
    खಈςετͰ͔͠νΣοΫͰ͖ͳ͍ςετ΋͋Δɹɹ
    ʢςετίʔυͰ࣮ݱͰ͖ͳ͍ςετ΋΋ͪΖΜ͋Δʣ

    View Slide

  49. ISTQBςετٕज़ऀࢿ੍֨౓
    γϥόεʹΑΔͱ
    ςετΛࢧԉ͢ΔπʔϧΛ࢖͏જࡏతͳϦεΫ͸ҎԼͷ௨ΓͰ͋Δɻ
    • ςετπʔϧͷޮՌΛաେʹظ଴͢Δʢྫ͑͹ɺπʔϧͷػೳ΍࢖͍΍͢͞ͳͲʣɻ
    • ςετπʔϧΛॳΊͯಋೖ͢Δ৔߹ʹཁ͢Δ࣌ؒɺίετɺ޻਺ΛաখධՁ͢Δʢྫ͑͹ɺڭҭ ΍ɺ֎෦ͷઐ
    ໳ՈͷࢧԉͳͲʣɻ
    • େ͖ͳޮՌΛܧଓతʹ্͛ΔͨΊʹඞཁͳ࣌ؒ΍޻਺ΛաখධՁ͢Δʢྫ͑͹ɺςετϓϩηε ͷมߋɺπʔ
    ϧͷ࢖༻๏ͷܧଓతͳվળͳͲʣɻ
    • πʔϧ͕ੜ੒͢Δςετࢿ࢈Λϝϯςφϯε͢ΔͨΊʹඞཁͳ޻਺ΛաখධՁ͢Δɻ
    • πʔϧʹա৒ͳґଘΛ͢Δʢςετઃܭ·ͨ͸ςετ࣮ߦͱஔ͖׵͑ΒΕΔͱߟ͑Δɺ·ͨ͸खಈςετͷํ
    ͕దͨ͠έʔεͰࣗಈςετΛར༻Ͱ͖Δͱߟ͑ΔͳͲʣ
    • πʔϧ಺ʹ͋Δςετࢿ࢈ͷόʔδϣϯ؅ཧΛଵΔɻ

    http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J03.pdf

    View Slide

  50. ·ͱΊʢςετίʔυͷ໨తʣ
    • ςετίʔυͷ໨త
    • ඼࣭ͱ։ൃεϐʔυΛཱ྆͢Δ
    • ςετίʔυͳΒςετͷFBΛૉૣ͘ड͚औΕ
    ΔͷͰɺόάमਖ਼޻਺ΛݮΒ͢͜ͱ͕Ͱ͖Δ
    • ςετίʔυͰ࣮֬ʹςετΛߦ͏͜ͱ͕Ͱ͖Δ

    View Slide

  51. ΞδΣϯμ
    • ςετͷ໨త
    • ςετίʔυͷ໨త
    • ༷ʑͳςετίʔυΛ஌Δ

    View Slide

  52. Ϣχοτςετ
    1ͭͷؔ਺΍ϝιουʹରͯ͠ɺI/OΛ௨ͯ͠ɹ
    ࢓༷௨ΓͷڍಈΛ͍ͯ͠Δ͔ݕূ͢Δ
    PHPͰ͸ɺPHPUnit Λ࢖͏ྫ͕ଟ͍

    View Slide

  53. ݁߹ɺ౷߹ςετ
    featureςετɺAPI ςετ͕͜Εʹ౰ͨΔ
    ಛఆͷϦΫΤετΛ౤͛ͯɺϨεϙϯε͞Εͨ
    ಺༰͕ਖ਼͍͔͠Ͳ͏͔Λݕূ͢Δ
    PHPͰ͸ɺPHPUnit Λ࢖͏ྫ͕ଟ͍

    View Slide

  54. UIςετ
    Selenium ͳͲΛར༻ͨ͠ E2E ςετ͕͜Εʹ౰ͨΔ
    ࠷΋Ϣʔβ໨ઢʹ͍ۙςετɻWebαʔϏεͰ͸ɺɹɹɹ
    ࣮ࡍʹϒϥ΢β্Ͱ class ΍ id Λࢦఆ͢Δ͜ͱʹΑͬͯɹ
    ࣗಈૢ࡞Λ͠ɺظ଴௨Γͷಈ࡞Λ͍ͯ͠Δ͔ݕূ͢Δ
    PHP ͩͱɺPHPUnit ͱ PHP-WebDriver Λ͔ͭͬͨE2Eς
    ετ͕ڍ͛ΒΕΔ

    View Slide

  55. 3ͭͷςετΛൺֱ͢Δ
    Ϣχοτςετ ౷߹ɾ݁߹ςετ 6*ςετ
    ࣮ߦ࣌ؒ ͔ͳΓ୹͍ ୹͍ ௕͍
    ςετʹམͪͨ࣌
    ͷݪҼಛఆ࣌ؒ
    ͔ͳΓ୹͍
    ʢฏۉతʹ͸ʣ
    ௕͍
    ͔ͳΓ௕͍
    ϝϯςφϯε޻਺ গͳ͍ গͳ͍ ͔ͳΓଟ͍
    ςετൣғ ͔ͳΓڱ͍ ޿͍ ͔ͳΓ޿͍
    ϑϩϯτΤϯυͷ
    ڍಈ΋֬ೝՄ൱
    Ͱ͖ͳ͍ Ͱ͖ͳ͍ Ͱ͖Δ

    View Slide

  56. 3ͭͷςετΛൺֱ͢Δ
    Ϣχοτςετ ౷߹ɾ݁߹ςετ 6*ςετ
    ࣮ߦ࣌ؒ ͔ͳΓ୹͍ ୹͍ ௕͍
    ςετʹམͪͨ࣌
    ͷݪҼಛఆ࣌ؒ
    ͔ͳΓ୹͍
    ʢฏۉతʹ͸ʣ
    ௕͍
    ͔ͳΓ௕͍
    ϝϯςφϯε޻਺ গͳ͍ গͳ͍ ͔ͳΓଟ͍
    ςετൣғ ͔ͳΓڱ͍ ޿͍ ͔ͳΓ޿͍
    ϑϩϯτΤϯυͷ
    ڍಈ΋֬ೝՄ൱
    Ͱ͖ͳ͍ Ͱ͖ͳ͍ Ͱ͖Δ
    ίετςετൣғɻςετൣғ͕޿͘ͳΕ͹࣮ߦ࣌ؒɺ
    ςετࣦഊͷݪҼಛఆɺϝϯςφϯε޻਺ͳͲ͕૿͑Δ

    View Slide

  57. 3ͭͷςετΛൺֱ͢Δ
    Ϣχοτςετ ౷߹ɾ݁߹ςετ 6*ςετ
    ࣮ߦ࣌ؒ ͔ͳΓ୹͍ ୹͍ ௕͍
    ςετʹམͪͨ࣌
    ͷݪҼಛఆ࣌ؒ
    ͔ͳΓ୹͍
    ʢฏۉతʹ͸ʣ
    ௕͍
    ͔ͳΓ௕͍
    ϝϯςφϯε޻਺ গͳ͍ গͳ͍ ͔ͳΓଟ͍
    ςετൣғ ͔ͳΓڱ͍ ޿͍ ͔ͳΓ޿͍
    ϑϩϯτΤϯυͷ
    ڍಈ΋֬ೝՄ൱
    Ͱ͖ͳ͍ Ͱ͖ͳ͍ Ͱ͖Δ
    6*ςετ͸ςετൣғʹ6*ΛؚΉͷͰɺ
    جຊతʹ͸ϑϩϯτΤϯυͷಈ͖΋֬ೝͰ͖Δ

    View Slide

  58. 3ͭͷςετΛൺֱ͢Δ
    ࣮ߦ͕࣌ؒ୹͘ɺςετࣦഊͷݪҼಛఆ͕༰қ
    ͳϢχοτςετΛҰ൪ॻ͘ͷ͕ཧ૝
    →ςετൣғ͕1ؔ਺ɾϝιου಺ʹऩ·͍ͬͯ
    Δ͔Β
    ϢχοτςετͰνΣοΫͰ͖ͳ͍Α͏ͳςε
    τΛɺ݁߹ςετɾUIςετͰݕূ͢Δͱྑ͍

    View Slide

  59. Mike CohnࢯߟҊ
    ʮςετϐϥϛουʯ
    UI
    ౷߹ɺ݁߹
    Ϣχοτ
    https://www.mountaingoatsoftware.com/blog/the-forgotten-layer-of-the-test-automation-pyramid

    View Slide

  60. Mike CohnࢯߟҊ
    ʮςετϐϥϛουʯ
    UI
    ౷߹ɺ݁߹
    Ϣχοτ
    ίετ ॻ͘΂͖ྔ




    https://www.mountaingoatsoftware.com/blog/the-forgotten-layer-of-the-test-automation-pyramid

    View Slide

  61. ςετϐϥϛουΛ࢖ͬͨྫ
    ྫɿ
    ςετίʔυ͕ͳ͘ɺखಈςετͷΈͰ඼࣭୲อ͍ͯ͠Δɹ
    αʔϏε
    ΋ͬͱ΋ςετ͍ͨ͠ͷ͸ܾࡁγεςϜ
    ಺෦ॲཧ͕ෳࡶͰɺϢχοτςετΛ͢Δʹ͸֤ϝιουΛ
    ςετ͠΍͍͢Α͏ʹϦϑΝΫλϦϯά͢Δඞཁ͕͋Δ

    View Slide

  62. ςετϐϥϛουΛ࢖ͬͨྫ
    UI
    Ϣχοτ
    6*ʢखಈςετʣ
    ౷߹ɺ݁߹
    Ϣχοτ

    View Slide

  63. ςετϐϥϛουΛ࢖ͬͨྫ
    UI
    Ϣχοτ
    6*
    ౷߹ɺ݁߹
    Ϣχοτ
    ·ͣ͸6*ςετͷςετίʔυ
    Λॻ͍ͯɺ඼࣭Λ୲อ͢Δ

    View Slide

  64. ςετϐϥϛουΛ࢖ͬͨྫ
    UI
    Ϣχοτ
    6*
    ౷߹ɺ݁߹
    Ϣχοτ
    6*ςετΛ࣮ߦͭͭ͠ɺ6*ςετͰ୲อ͍ͯ͠Δ಺༰
    Λɺ౷߹ɾ݁߹ςετ΍ϢχοτςετͰஔ͖׵͑Δ

    View Slide

  65. ςετϐϥϛουΛ࢖ͬͨྫ
    UI
    Ϣχοτ
    6*
    ౷߹ɺ݁߹
    Ϣχοτ
    νʔϜ಺ͰܾࡁपΓ͸ϢχοτςετͰ͸ͳ͘ɺɹɹɹɹɹɹɹɹ
    ౷߹ɾ݁߹ςετͰ֬ೝ͍ͨ͠ͱ͍͏࿩ʹͳͬͨͷͰଟΊʹ͢Δ

    View Slide

  66. ςετϐϥϛουΛ࢖ͬͨྫ
    αʔϏεͷੑ࣭ʹΑͬͯ࠷దղ͸มΘΔ
    ඞͣ͠΋ਖ਼ࡾ֯ܗͷςετϐϥϛουʹͳΔͱ
    ͸ݶΒͳ͍
    େࣄͳͷ͸ɺαʔϏεͷੑ࣭Λཧղ͢Δ͜ͱͱ
    νʔϜօͰ͢Γ߹ΘͤΔ͜ͱ

    View Slide

  67. ·ͱΊ
    ʢ༷ʑͳςετίʔυΛ஌Δʣ
    • ςετίʔυ͸େ͖͘෼͚Δͱɺɹɹɹɹɹɹɹɹ
    Ϣχοτςετɺ౷߹ɾ݁߹ςετɺUIςετɹ
    ɹ
    ɹ
    3छྨͷςετ͕ଘࡏ͢Δ
    • ͲͷςετίʔυΛͲͷ͘Β͍ಋೖ͢Δ͔͸ɺɹɹ
    ςετϐϥϛουΛࢀߟʹ͢Δͱྑ͍ɹɹɹɹɹɹ
    ͨͩ͠αʔϏε΍ϓϩμΫτͷੑ࣭ʹΑͬͯ࠷దղ
    ͸มΘΔͷͰɺνʔϜ಺Ͱ͢Γ߹ΘͤΛߦ͏͜ͱ

    View Slide

  68. ͜ͷൃදͰͷௌߨऀͷΰʔϧ
    ςετίʔυΛಋೖ͢Δલʹ
    ʮͳͥͦͷςετίʔυΛॻ͘ͷ͔ʯ
    Λ࿩ͤΔ͜ͱ

    View Slide

  69. ࠷ޙʹ
    ඼࣭Λ୲อͰ͖Ε͹ࣗͣͱ։ൃεϐʔυ΋ɹɹ
    ্͛Δ͜ͱ͕Ͱ͖ΔͷͰɺ඼࣭ͱ։ൃεϐʔυ
    ͸τϨʔυΦϑͰ͸ͳ͍ͱࢲ͸ࢥ͍ͬͯ·͢
    ඼࣭ͱ։ൃεϐʔυ྆ํΛཱ྆͢ΔͨΊɺɹɹ
    ςετίʔυΛॻ͍͍͖ͯ·͠ΐ͏

    View Slide