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. Who am I? • 02 ʢେ௡ ࿨௬ʣ • Twitter, Github:cocoeyes02

    • ॴଐɿגࣜձࣾ΢Οϧήʔτ(৽ଔ2೥໨) • PHPͱ΄΅ಉ͍೥ʢ1994೥ੜ·Εʣ • όοΫΤϯυΤϯδχΞ • ͨ·ʔʹOSSͷίϯτϦϏϡʔτͯͨ͠Γ͠·͢
  2. ISTQBςετٕज़ऀࢿ੍֨౓ γϥόεʹΑΔͱ • ཁ݅ɺϢʔβʔετʔϦʔɺઃܭɺ͓ΑͼίʔυͳͲͷ࡞ۀ੒Ռ෺ΛධՁ͢Δɻ • ໌֬ʹͨ͢͠΂ͯͷཁ݅Λຬ͍ͨͯ͠Δ͜ͱΛݕূ͢Δɻ • ςετର৅͕׬੒͠ɺϢʔβʔ΍ͦͷଞεςʔΫϗϧμʔͷظ଴௨Γͷಈ࡞಺༰Ͱ͋Δ͜ͱͷଥ౰ੑ֬ೝΛ͢ Δɻ •

    ςετର৅ͷ඼࣭ʹର͢Δ৴པΛੵΈॏͶͯɺॴఆͷϨϕϧʹ͋Δ͜ͱΛ֬ূ͢Δɻ • ܽؕͷ࡞Γ͜ΈΛ๷͙ɻ • ނো΍ܽؕΛൃݟ͢Δɻ • εςʔΫϗϧμʔ͕ҙࢤܾఆͰ͖Δɺಛʹςετର৅ͷ඼࣭Ϩϕϧʹ͍ͭͯͷे෼ͳ৘ใΛఏڙ ͢Δɻ • ʢҎલʹݕग़͞Εͳ͔ͬͨނো͕ӡ༻؀ڥͰൃੜ͢ΔͳͲͷʣෆద੾ͳιϑτ΢ΣΞ඼࣭ͷϦεΫϨϕϧΛ௿ ݮ͢Δɻ • ܖ໿্ɺ๏཯্ɺ·ͨ͸ن੍্ͷཁ݅΍ඪ४Λ९क͢Δɺͦͯ͠ʗ·ͨ͸ςετର৅͕ͦͷΑ͏ ͳཁ݅΍ඪ४ ʹ४ڌ͍ͯ͠Δ͜ͱΛݕূ͢Δɻ http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J03.pdf
  3. ISTQBςετٕज़ऀࢿ੍֨౓ γϥόεʹΑΔͱ ςετ࣮ߦΛࢧԉ͢ΔπʔϧΛ࢖͏જࡏతͳར఺͸ҎԼͷ௨ΓͰ͋Δɻ • ൓෮͢Δखಈ࡞ۀͷ࡟ݮͱ࣌ؒͷઅ໿͕Ͱ͖Δʢྫ͑͹ɺϦάϨογϣϯςετ ͷ࣮ߦɺ؀ڥͷ ४උ/෮چλεΫɺಉ͡ςετσʔλͷ࠶ೖྗɺίʔσΟϯάඪ४ ४ڌͷνΣοΫͳͲʣɻ • Ұ؏ੑ΍࠶࣮ߦੑ͕޲্͢Δʢྫ͑͹ɺ੔߹ੑͷ͋Δςετσʔλɺಉ͡ස౓ͱ

    ॱংͰͷςετ ࣮ߦɺཁ͔݅ΒͷҰ؏ͨ͠ςετέʔεͷநग़ͳͲʣɻ • ධՁͷ٬؍ੑ͕޲্͢Δʢྫ͑͹ɺ੩తͳܭଌɺΧόϨοδͳͲʣɻ • ςετʹؔ͢Δ৘ใ΁ͷΞΫηεͷ༰қੑ͕޲্͢Δʢྫ͑͹ɺςετਐḿɺܽ ؕ཰΍ੑೳܭଌ ݁Ռͷूܭɺ͓Αͼάϥϑͷ࡞੒ͳͲʣɻ http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J03.pdf
  4. खಈςετͱςετίʔυ Λൺֱ खಈςετ ςετίʔυ ώϡʔϚϯΤϥʔ ى͜Δ ىΒͳ͍ Կճ࣮ߦͯ͠΋ ಉ݁͡Ռ͕ಘΒΕΔ͔ ʢႈ౳ੑʣ

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

    ώϡʔϚϯΤϥʔ͕ ى͜ΔݶΓ ׬શʹ͸อূͰ͖ͳ͍ Կ౓࣮ߦͯ͠΋ ݁Ռ͸ҰॹͳͷͰ อূͰ͖Δ ʮςετͨͭ͠΋Γͩͬͨ ͚Ͳɺ࣮ࡍ͸ςετखॱΛ ؒҧ͍͑ͯͨʂʯͱ͔
  6. ISTQBςετٕज़ऀࢿ੍֨౓ γϥόεʹΑΔͱ ςετΛࢧԉ͢ΔπʔϧΛ࢖͏જࡏతͳϦεΫ͸ҎԼͷ௨ΓͰ͋Δɻ • ςετπʔϧͷޮՌΛաେʹظ଴͢Δʢྫ͑͹ɺπʔϧͷػೳ΍࢖͍΍͢͞ͳͲʣɻ • ςετπʔϧΛॳΊͯಋೖ͢Δ৔߹ʹཁ͢Δ࣌ؒɺίετɺ޻਺ΛաখධՁ͢Δʢྫ͑͹ɺڭҭ ΍ɺ֎෦ͷઐ ໳ՈͷࢧԉͳͲʣɻ •

    େ͖ͳޮՌΛܧଓతʹ্͛ΔͨΊʹඞཁͳ࣌ؒ΍޻਺ΛաখධՁ͢Δʢྫ͑͹ɺςετϓϩηε ͷมߋɺπʔ ϧͷ࢖༻๏ͷܧଓతͳվળͳͲʣɻ • πʔϧ͕ੜ੒͢Δςετࢿ࢈Λϝϯςφϯε͢ΔͨΊʹඞཁͳ޻਺ΛաখධՁ͢Δɻ • πʔϧʹա৒ͳґଘΛ͢Δʢςετઃܭ·ͨ͸ςετ࣮ߦͱஔ͖׵͑ΒΕΔͱߟ͑Δɺ·ͨ͸खಈςετͷํ ͕దͨ͠έʔεͰࣗಈςετΛར༻Ͱ͖Δͱߟ͑ΔͳͲʣ • πʔϧ಺ʹ͋Δςετࢿ࢈ͷόʔδϣϯ؅ཧΛଵΔɻ … http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J03.pdf
  7. UIςετ Selenium ͳͲΛར༻ͨ͠ E2E ςετ͕͜Εʹ౰ͨΔ ࠷΋Ϣʔβ໨ઢʹ͍ۙςετɻWebαʔϏεͰ͸ɺɹɹɹ ࣮ࡍʹϒϥ΢β্Ͱ class ΍ id

    Λࢦఆ͢Δ͜ͱʹΑͬͯɹ ࣗಈૢ࡞Λ͠ɺظ଴௨Γͷಈ࡞Λ͍ͯ͠Δ͔ݕূ͢Δ PHP ͩͱɺPHPUnit ͱ PHP-WebDriver Λ͔ͭͬͨE2Eς ετ͕ڍ͛ΒΕΔ
  8. 3ͭͷςετΛൺֱ͢Δ Ϣχοτςετ ౷߹ɾ݁߹ςετ 6*ςετ ࣮ߦ࣌ؒ ͔ͳΓ୹͍ ୹͍ ௕͍ ςετʹམͪͨ࣌ ͷݪҼಛఆ࣌ؒ

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

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

    ͔ͳΓ୹͍ ʢฏۉతʹ͸ʣ ௕͍ ͔ͳΓ௕͍ ϝϯςφϯε޻਺ গͳ͍ গͳ͍ ͔ͳΓଟ͍ ςετൣғ ͔ͳΓڱ͍ ޿͍ ͔ͳΓ޿͍ ϑϩϯτΤϯυͷ ڍಈ΋֬ೝՄ൱ Ͱ͖ͳ͍ Ͱ͖ͳ͍ Ͱ͖Δ 6*ςετ͸ςετൣғʹ6*ΛؚΉͷͰɺ جຊతʹ͸ϑϩϯτΤϯυͷಈ͖΋֬ೝͰ͖Δ
  11. Mike CohnࢯߟҊ ʮςετϐϥϛουʯ UI ౷߹ɺ݁߹ Ϣχοτ ίετ ॻ͘΂͖ྔ େ খ

    গ ଟ https://www.mountaingoatsoftware.com/blog/the-forgotten-layer-of-the-test-automation-pyramid
  12. ·ͱΊ ʢ༷ʑͳςετίʔυΛ஌Δʣ • ςετίʔυ͸େ͖͘෼͚Δͱɺɹɹɹɹɹɹɹɹ Ϣχοτςετɺ౷߹ɾ݁߹ςετɺUIςετɹ ɹ ɹ 3छྨͷςετ͕ଘࡏ͢Δ • ͲͷςετίʔυΛͲͷ͘Β͍ಋೖ͢Δ͔͸ɺɹɹ

    ςετϐϥϛουΛࢀߟʹ͢Δͱྑ͍ɹɹɹɹɹɹ ͨͩ͠αʔϏε΍ϓϩμΫτͷੑ࣭ʹΑͬͯ࠷దղ ͸มΘΔͷͰɺνʔϜ಺Ͱ͢Γ߹ΘͤΛߦ͏͜ͱ