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

テストを書いたことがないエンジニアがテストを書けるようになるまでやったこと at PHPカンファレンス関西2018

88964b936e864ca7d326272eaa70fa9a?s=47 Kazuki Higashiguchi
July 14, 2018
2.7k

テストを書いたことがないエンジニアがテストを書けるようになるまでやったこと at PHPカンファレンス関西2018

テストを書いたことがないエンジニアがテストを書けるようになるまでやったこと at PHPカンファレンス関西2018

https://2018.kphpug.jp/

88964b936e864ca7d326272eaa70fa9a?s=128

Kazuki Higashiguchi

July 14, 2018
Tweet

Transcript

  1. 1)1ΧϯϑΝϨϯεؔ੢  #"4&גࣜձࣾ ౦ޱ࿨ᏻʢ!,IJHBTIJHVDIJʣ ςετΛॻ͍ͨ͜ͱ͕ͳ͍ΤϯδχΞ ͕ςετΛॻ͚ΔΑ͏ʹͳΔ·Ͱ΍ͬ ͨ͜ͱ

  2. ςετॻ͍ͯ·͔͢ʁ

  3. ݸਓతͳసػ

  4. ςετΛॻ͍ͯͳ͍؀ڥ ˣ ςετΛॻ͘؀ڥ

  5. ͔Β࢝·ͬͯମײͨ͠

  6. ʮςετΛॻ͚Δʯʹ͸ɺ ৭ʑεςʔδ͕͋Δ

  7. ࣗݾ঺հ !,IJHBTIJHVDIJ౦ޱ࿨ᏻ w ॴଐɿ#"4&גࣜձࣾ #"4&1SPEVDU%JWJTJPO αʔόαΠυΤϯδχΞ w ग़਎ɿฌݿݝ੢ٶࢢ w ͜Ε·Ͱͷओͳ͓࢓ࣄɿ

    w ʮ#"4&ʯͷܾࡁྖҬ w 1)1ɾ$BLF1)1ͷόʔδϣϯΞοϓ w ࢖༻ݴޠɿ1)1(P w #MPH w IUUQLIJHBTIJHBTIJIBUFOBCMPHDPN w (JUIVC w IUUQTHJUIVCDPN,IJHBTIJHVDIJ
  8. ͦ΋ͦ΋Կނςετॻ͘ͷ ͔

  9. ͦ΋ͦ΋ԿނςετΛॻ͘ͷ͔ ʢ˞ݸਓతͳݟղͰ͢ʣ ʮԶ͸ͪΌΜͱςετॻ͍ͨΜ΍ʂʯͱ͍͏ࣗ৴ͱ ετϨεܰݮ w ୯ମͰͷಈ͖ΛอূʹͳΔ w ର৅ϝιουͷ࢓༷ॻʹͳΔ w ʮຊ౰ʹಈ͘ͷ͔ʯͱ͍͏ετϨε͕ݮΔ

    w ϦϑΝΫλϦϯά͕༰қʹͳΔ w ʜFUD <ࢀߟ> ʮ૊৫ʹςετΛॻ͘จԽΛࠜ෇͔ͤΔઓུͱઓज़ʯIUUQT XXXTMJEFTIBSFOFUU@XBEBUFTUTUSBUFHZBOEUBDUJDT
  10. 4UBHFT w 4UBHFͱʹ͔͘ςετΛॻ͘ w 4UBHFςετ؍఺ͷ໢ཏΛҙࣝ͢Δ w 4UBHFطଘίʔυʹςετΛॻ͘ w 4UBHFςετۦಈΛ࣮ફͯ͠ΈΔ w

    4UBHF/FYU4UBHFʜ
  11. ςετεςʔδ ࣗ෼ͷίʔυʹςετΛ ॻ͘

  12. ςετεςʔδ ʮ΍ͬͨ͜ͱແ͍ʯ ˣ ʮ΍ͬͨ͜ͱ͋Δʯ

  13. ςετεςʔδ ࣗ෼ͷίʔυʹςετΛॻ͘ɿୡ੒͍ͨ͜͠ͱ w ࣗ෼ͷίʔυʹʮςετΛॻ͘ʯࣄ͕Ͱ͖Δ w 1)16OJUͳͲͰABTTFSU999AͰ͖Δ w ʮ΍ͬͨ͜ͱແ͍ʯˠʮ΍ͬͨ͜ͱ͋Δʯ΁ public function

    testSample(): void { $this->assertTrue($this->SampleTestModel->Sample(‘hoge’); $this->assertFalse($this->SampleTestModel->Sample(‘huga’); $this->assertTrue($this->SampleTestModel->Sample(‘yapu’); }
  14. ςετεςʔδ ࣗ෼ͷίʔυʹςετΛॻ͘ɿऔΓ૊Έํ w ࠷ॳ͔Β͖Ε͍ʹॻ͜͏ͱ͠ͳ͍ w ςετέʔεͷߦ਺͕ଟ͍ؾ͕ͯ͠΋Ұ୴0, w ॻ͔͘Ͳ͏͔໎ͬͨΒςετΛॻ͘ w ॻ͍ͯΔ෼ʹ͸ʮѱʯͰ͸ͳ͍͸ͣ

    ˠʮςετΛॻ͘ʯ͜ͱࣗମ͸೉͘͠ͳ͍ ࣄ͕Θ͔Δ
  15. ςετεςʔδ ࣗ෼ͷίʔυʹςετΛॻ͘ɿࢀߟʹͨ͠΋ͷ w ಉ྅ͷίʔυ w ݟΑ͏ݟ·ͶͰ΍ͬͯΈΔ w ެࣜνϡʔτϦΞϧ w 1)16OJUެࣜνϡʔτϦΞϧ

    w IUUQTQIQVOJUEFHFUUJOHTUBSUFE QIQVOJUIUNM w ϑϨʔϜϫʔΫͷެࣜυΩϡϝϯτɺ5FTUষ w IUUQTCPPLDBLFQIQPSHKB EFWFMPQNFOUUFTUJOHIUNM
  16. ςετεςʔδ ςετ؍఺ͷ໢ཏΛҙࣝ ͢Δ

  17. ςετεςʔδ ʮ΍ͬͨ͜ͱ͋Δʯ ˣ ʮे෼ͳςετΛॻ͘ʯ

  18. ςετεςʔδ ςετ؍఺ͷ໢ཏΛҙࣝ͢Δɿୡ੒͍ͨ͜͠ͱ w ςετ؍఺ͷ໢ཏΛҙࣝ͢Δ w े෼ʹςετ͞Ε͍ͯΔ w ςετ؍఺ w ؔ਺ͷ*/065

    w Ҿ਺ɾ໭Γ஋ɾྫ֎ w ϝιου಺Ͱى͜Δ͜ͱ w %#ૢ࡞ w ηογϣϯૢ࡞ w ʜFUD
  19. ςετεςʔδ ςετ؍఺ͷ໢ཏΛҙࣝ͢ΔɿऔΓ૊Έํ w ςετ؍఺ʹ͢΂͖͔໎ͬͨΒςετΛॻ͘ w ʮ͜ͷςετέʔε಺Ͱ΍Δ΂͖ͳͷ͔ʁʯ w ॻ͍ͯΔ෼ʹ͸ʮѱʯͰ͸ͳ͍͸ͣʢೋճ໨ʣ w ˞ͨͩ͠ɺͳʹ͔ίʔυઃܭ͕ྑ͘ͳ͍Մೳੑ͋Γ

    w NPEFMͰTFTTJPOΛ͍͡Δͱ͔ͦ͏͍͏ྨ ˠςετίʔυ͕࢓༷ॻʹͳΔ
  20. w ςετίʔυͰ୯ମϨϕϧͰͷಈ࡞͕Θ͔Γอূ ͞ΕΔ w ˠϨϏϡʔ୯ҐɾϦϦʔε୯Ґͷ෼ׂ͕Մೳʹͳ Δ w ϨϏϡʔΛ΋Β͍΍͍͢ࡉ͔͍ϓϧϦΫͷ੾Γ෼͚ํ BU1)1FS,BJHJ ςετεςʔδ

    ςετ؍఺ͷ໢ཏΛҙࣝ͢Δɿ෭࣍తޮೳ
  21. ςετεςʔδ ςετ؍఺ͷ໢ཏΛҙࣝ͢Δɿࢀߟࢿྉ w ςετ͢ΔͨΊʹ1)16OJUͷػೳΛ֮͑Δ w ྫ֎ͷςετ w 1)16OJUFYQFDUFE&YDFQUJPO w IUUQTQIQVOJUEFNBOVBMKB

    BQQFOEJYFTBOOPUBUJPOTIUNMBQQFOEJYFTB OOPUBUJPOTFYQFDUFE&YDFQUJPO w EBUB1SPWJEFS w 1)16OJUEBUB1SPWJEFS w QIQVOJUSFBEUIFEPDTJPFOXSJUJOH UFTUTGPSQIQVOJUIUNM w 1)16OJUͱσʔλϓϩόΠμͱςετέʔεੜ੒ w IUUQTRJJUBDPN)JSBLVJUFNT DGFFEBE
  22. ςετεςʔδ ςετ؍఺ͷ໢ཏΛҙࣝ͢Δɿࢀߟࢿྉ w ςετ͢ΔͨΊʹ1)16OJUͷػೳΛ֮͑Δ w .PDL w 1)16OJUUFTUEPVCMFT w IUUQTQIQVOJUEFNBOVBMFOUFTU

    EPVCMFTIUNM w ϨϏϡʔ୯Ґͷ෼ׂ w ϨϏϡʔΛ΋Β͍΍͍͢ࡉ͔͍ ϓϧϦΫͷ੾Γ෼͚ํ BU1)1FS,BJHJ w IUUQTTQFBLFSEFDLDPNLIJHBTIJHVDIJ SFCJZVXPNPSBJZBTVJYJLBJQVSVSJLVGBMTFRJF SJGFOLFGBOHBUQIQFSLBJHJ
  23. ςετεςʔδ طଘίʔυʹςετΛॻ ͘

  24. ςετεςʔδ ʮे෼ͳςετΛॻ͘ʯ ˣ ʮطଘίʔυΛे෼ʹ͠ ͍ͯ͘ʯ

  25. ςετεςʔδ طଘίʔυʹςετΛॻ͘ɿୡ੒͍ͨ͜͠ͱ w طଘίʔυͷಈ࡞Λอূ͢Δ w طଘίʔυʹରͯ͠ςετΛೖΕ͍ͯ͘ w ʮςετ͕ͳ͍ʯطଘίʔυʹ͸ଟ͘ͷࠔ೉͕ જΉ

  26. ςετεςʔδ طଘίʔυʹςετΛॻ͘ɿࠔ೉ w طଘίʔυʹର͢Δςετͷࠔ೉ w όάͳͷ͔࢓༷ͳͷ͔ w ςετ͠ʹ͘͞ w ֎෦࿈ܞ

    w ੹຿ͷଟ͍ίʔυ w ࣮ߦ·Ͱʹଟ͘ͷʮ४උʯΛཁ͢Δ΋ͷ w AFYJU AͰςετϓϩηε͕ࢮ͵ w ʜFUD
  27. ςετεςʔδ طଘίʔυʹςετΛॻ͘ɿऔΓ૊Έํ w ݱࡏͷಈ࡞Λอূ͢Δ w ʮݱࡏͷίʔυ͸͜ͷΑ͏ʹಈ͍͍ͯΔʯ఺Λ ໌Β͔ʹ͢Δʢ࢓༷Խςετʣ w ࢓༷͕෼͔Δ৔߹͸ɺظ଴͢Δಈ࡞ΛςετͰ ॻ্͍ͨͰमਖ਼͢Δ

  28. ςετεςʔδ طଘίʔυʹςετΛॻ͘ɿऔΓ૊Έํ w ςετ͠΍͍͢ίʔυʹվળ w ʮґଘੑ஫ೖʢ%*ʣʯͳͲΛߦ͍݁߹౓ΛԼ͛ ͍ͯ͘ w ςετ͢ΔͨΊͷ࢓૊ΈΛ࢖͏ w

    ࣌ؒʹґଘͨ͠ςετUJNFDPQʜFUD w ϞοΫԽ w 4UBUJDNFUIPETUBUJDNPDLʜFUD w ૊ΈࠐΈؔ਺SVOLJUʜFUD w ˞༻๏༻ྔʹ͝஫ҙ͍ͩ͘͞
  29. ςετεςʔδ طଘίʔυʹςετΛॻ͘ɿࢀߟࢿྉ w ϨΨγʔίʔυվળΨΠυcBNB[PO IUUQTXXXBNB[PODPKQEQ#"/8SFGEQLJOEMFSFEJSFDU @FODPEJOH65'CULS

  30. ςετεςʔδ طଘίʔυʹςετΛॻ͘ɿࢀߟࢿྉ w ࢓༷Խςετʹ͍ͭͯ w #"4&ͷ1)1ΞϓϦΞοϓσʔτʹ͍ͭͯ w IUUQTTQFBLFSEFDLDPNUFOLPNB@CBTF GBMTFQIQBIVSJBUVIVUFUPOJUVJUF

  31. ςετεςʔδ طଘίʔυʹςετΛॻ͘ɿࢀߟࢿྉ w ςετ͠΍͍͢ίʔυʹվળ w FDIP FYJU͍ͯ͠Δ1)1ίʔυΛϢχοτςετͰ อޢ͠ͳ͕Βվળ͢Δ w IUUQTRJJUBDPNUFOLPNBJUFNT

    BDCD w ґଘੑ஫ೖ %* ͷղઆͱ΍Γํ w IUUQTRJJUBDPNLJUFNT BFGBFECGDDDF
  32. ςετεςʔδ طଘίʔυʹςετΛॻ͘ɿࢀߟࢿྉ w ςετ͢ΔͨΊͷ࢓૊Έ w IOXQIQUJNFDPQ w IUUQTHJUIVCDPNIOXQIQUJNFDPQ w UPUPUPTIJTUBUJDNPDL

    w IUUQTHJUIVCDPNUPUPUPTIJTUBUJDNPDL w SVOLJUͱVPQ[ʹ͍ͭͯ w IUUQTRJJUBDPNLVOJUJUFNT DBBEFFDG
  33. ςετεςʔδ ςετۦಈ։ൃΛ࣮ફͯ͠ ΈΔ

  34. ςετεςʔδ ʮطଘίʔυΛॆ෼ʹͯ͠ ͘ʯ ˣ ʮςετۦಈͰ࣮૷ͯ͠Έ Δʯ

  35. ςετεςʔδ ςετۦಈ։ൃͰ࣮૷ͯ͠ΈΔɿୡ੒͍ͨ͜͠ͱ w ςετۦಈ։ൃΛ࣮ફ͢Δ w ࢀߟɿςετۦಈ։ൃͬͯԿͩΖ͏ w എܠ w ೥݄ʮςετۦಈ։ൃʯ

    w ςετ͠ʹ͍͘ີ݁߹ͳίʔυΛ࠶ੜ࢈ͨ͘͠ ͳ͍ؾ࣋ͪ
  36. ςετεςʔδ ςετۦಈ։ൃͰ࣮૷ͯ͠ΈΔɿऔΓ૊Έํ w ςετۦಈ։ൃΛֶश͢Δ w ஶॻɿʮςετۦಈ։ൃʯΛಡΈਐΊ͍ͯ͘ w ஶॻ಺ͷݴޠɿ+BWB1ZUIPO w ଞͷݴޠͰॻ͍ͯΈΔɿ3VTU

    w ςετۦಈ։ൃΛ࣮ફͯ͠ΈΔ
  37. ςετεςʔδ ςετۦಈ։ൃΛ࣮ફͯ͠ΈΔɿࢀߟࢿྉ w ςετۦಈ։ൃcBNB[PO IUUQTXXXBNB[PODPKQEQ#%-$SFGEQLJOEMFSFEJSFDU @FODPEJOH65'CULS

  38. ςετεςʔδ طଘίʔυʹςετΛॻ͘ɿࢀߟࢿྉ w ςετۦಈ։ൃͬͯԿͩΖ͏ w IUUQTEFWDMBTTNFUIPEKQ TUVEZ@NFFUJOHSFBEXIBUUEE w ॻ੶ʮςετۦಈ։ൃʯΛ3VTUͰॻ͘ ʢDIBQUFSʜʣ

    w IUUQTRJJUBDPN,IJHBTIJHVDIJJUFNT EGDEEG
  39. ςετεςʔδ/FYUʜ 99999

  40. ςετεςʔδ 99999 w ςετεςʔδ͸·ͩ·ͩઌ͕͋ΔΑ͏ w ςελϏϦςΟͷྑ͍ίʔυઃܭΛߦ͏ w σβΠϯύλʔϯʹ͍ͭͯ w ந৅Խ

    w ςετΛ͠΍͍͢ج൫Λ࡞Δ ʜFUD
  41. ҰεςʔδͣͭਐΜͰ ͍͖·͠ΐ͏✍

  42. #"4&גࣜձࣾ ౦ޱ࿨ᏻʢ!,IJHBTIJHVDIJʣ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ