良いテストデータ、悪いテストデータ / testdata-antipattern

F4d37a67ce86b2f962c79d73a9127d3c?s=47 fortkle
October 08, 2017

良いテストデータ、悪いテストデータ / testdata-antipattern

PHPカンファレンス2017 LT

F4d37a67ce86b2f962c79d73a9127d3c?s=128

fortkle

October 08, 2017
Tweet

Transcript

  1. ߴ໺෱ߊ!GPSULMF ྑ͍ςετσʔλɺ ѱ͍ςετσʔλ  1)1ΧϯϑΝϨϯε-5

  2. ߴ໺ɹ෱ߊ !GPSULMF !GPSULMF ίωώτגࣜձࣾɹΤϯδχΞ

  3. ίωώτ։ൃऀϒϩά΍ͬͯ·͢ʂ

  4. ͯ͞ɺࠓ೔͸ʮςετσʔλʯͷ࿩

  5. ςετσʔλʁ w ։ൃ΍εςʔδϯά؀ڥͰ࢖͏
 σʔλϕʔεͷσʔλͷ͜ͱ w σʔλϕʔεͷσʔλ͕ඞཁͳ
 ࣗಈςετͰ࢖͏σʔλͷ͜ͱ

  6. ςετσʔλʁ w ։ൃ΍εςʔδϯά؀ڥͰ࢖͏
 σʔλϕʔεͷσʔλͷ͜ͱ w σʔλϕʔεͷσʔλ͕ඞཁͳ
 ࣗಈςετͰ࢖͏σʔλͷ͜ͱˡࠓ೔͸ͪ͜Β

  7. ࠓ೔͸ͦΜͳςετσʔλͷ

  8. Πέͯͳ͍ྫΛ঺հ͠·͢

  9. ͦͷᶃ
 ຊ൪%#ΛEVNQͨ͠ςετσʔλ

  10. ͦͷᶃ
 ຊ൪%#ΛEVNQͨ͠ςετσʔλ w ຊ൪΍εςʔδϯάͷ%#͔ΒσʔλΛEVNQ w ͦΕΛͦͷ··ࣗಈςετͷςετσʔλͱͯ͠࢖͏ w ςετͱؔ܎ͳ͍σʔλ͕େྔʹൃੜ w શͯϝϯςφϯε͠ͳ͍ͱ͍͚ͳ͍ͱͨ͠Β࠷ѱ

    w ͔͠΋େྔͳ͍ͤͰεϩʔςετʹʜ
  11. ͦͷᶄ
 ҙຯͷͳ͍จࣈྻͷςετσʔλ

  12. DMBTT"SUJDMFT'JYUVSFFYUFOET5FTU'JYUVSF \ QVCMJDSFDPSET< < UJUMF͋͋͋͋͋͋  CPEZ͋͋͋͋͋͋  TVCUJUMFb͋͋͋͋͋͋ 

    DSFBUFE  NPEJpFE >  ʜ ུ ʜ > ͦͷᶄ
 ҙຯͷͳ͍จࣈྻͷςετσʔλ
  13. ͦͷᶄ
 ҙຯͷͳ͍จࣈྻͷςετσʔλ w ʮςετͰ͋Δʯͱ͍͏͜ͱ͸෼͔Δ͚Ͳʜ w ҰମԿͷσʔλͳͷ͔ύοͱݟͰ෼͔Βͳ͍ w ςετͷʮҙਤʯ͕෼͔ΓͮΒ͍

  14. ͦͷᶅ
 ݸਓͷओு͕ग़͍͗ͯ͢Δ
 ςετσʔλ

  15. DMBTT"SUJDMFT'JYUVSFFYUFOET5FTU'JYUVSF \ QVCMJDSFDPSET< < UJUMFຐ๏͔͍ͭϓϦΩϡΞʂ  CPEZຐ๏ͷ͜ͱ͹ʰΩϡΞοϓὑϥύύʱͰ ;ͨͭͷੈք͕͍·ͭͳ͕Δ  TVCUJUMFb·΄ϓϦ

     DSFBUFE  NPEJpFE >  ʜ ུ ʜ > ͦͷᶅ
 ݸਓͷओு͕ग़͍͗ͯ͢Δςετσʔλ
  16. ͦͷᶅ
 ݸਓͷओு͕ग़͍͗ͯ͢Δςετσʔλ w ͔ͨ͠ʹʮҙຯʯ͸͋ΔΜ͚ͩͲʜ w ͍΍ผʹؒҧͬͯ͸͍ͳ͍Μ͚ͩͲͶʜ w ࠓޙ΋ϝϯς͠ଓ͚ΔΜ͔ͩΒ
 ͤΊͯ਺೥ޙʹݟͯʹͳΒͳ͍ํ͕޷·͍͠ΑͶʜ w

    ΈΜͳೲಘͳΒͦΕ͸ͦΕͰΞϦ
  17. ͦͷᶆ
 ੔߹ੑ͕औΕ͍ͯͳ͍ςετσʔλ

  18. ͦͷᶆ
 ੔߹ੑ͕औΕ͍ͯͳ͍ςετσʔλ DMBTT"SUJDMFT'JYUVSFFYUFOET5FTU'JYUVSF \ QVCMJDSFDPSET< < UJUMF࠷ॳͷهࣄ  CPEZ࠷ॳͷهࣄͷຊจ 

    TVCUJUMFb࠷ॳͷهࣄͷαϒλΠτϧ  DSFBUFE  NPEJpFE >  ʜ ུ ʜ >
  19. ͦͷᶆ
 ੔߹ੑ͕औΕ͍ͯͳ͍ςετσʔλ w ʮొ࿥೔࣌ʯΑΓʮߋ৽೔࣌ʯͷํ͕ݹ͍ w ෆ҆ఆͳڍಈΛট͘ͷͰɺςετσʔλͱͯ͠
 ద͍ͯ͠ͳ͍ w ҟৗܥͷςετσʔλͷ؅ཧʹ͍ͭͯ͸ޙड़

  20. ͦͷᶇ
 Ұຕؠͷڊେͳςετσʔλ

  21. ͦͷᶇ
 Ұຕؠͷڊେͳςετσʔλ w ਺೥ӡ༻͢Δͱؾ෇͍ͨΒ'JYUVSF͕਺ઍߦʹʜ w ෼ׂ͞Εͣʹɺͦͷ'JYUVSF͕͢΂ͯͷؔ࿈͢Δ
 ςετέʔεͰ࢖ΘΕ͍ͯΔ w "ͷͨΊʹमਖ਼ͨ͠Βແؔ܎ͳ#ͷςετ͕ࣦഊʜ w

    "ͷςετέʔεͰຊ౰ʹඞཁͳςετσʔλ͕
 ͲΕͳͷ͔෼͔Βͳ͍
  22. ͦͷᶈ
 ՕॴͰ͔͠࢖Θͳ͍ͷʹ
 ଞͰ΋ಡΈࠐ·ΕΔςετσʔλ

  23. ͦͷᶈ
 ՕॴͰ͔͠࢖Θͳ͍ͷʹ
 ଞͰ΋ಡΈࠐ·ΕΔςετσʔλ w 'JYUVSFΛ࢖͍ͬͯΔͱΑ͋͘Δ w ॳΊ͸৭ΜͳςετͰ࢖ΘΕΔجૅతͳ
 'JYUVSFͱͯ͠ઃܭ͢Δ΋ʜ w ͕࣌ؒܦͭʹͭΕͯςϯϙϥϦʔͳ'JYUVSF͕૿͑ͯ͘Δ

    w ݁Ռɺ'JYUVSF͕ංେԽ͕ͪ͠
  24. ͱɺ͜͜·ͰΠέͯͳ͍ྫΛ
 ݟ͖ͯ·͕ͨ͠

  25. ΠέͯΔςετσʔλΛ࡞ΔͨΊͷ

  26. ͭͷϙΠϯτ΋
 ঺հ͍ͨ͠ͱࢥ͍·͢ɻ

  27. ϙΠϯτᶃ࠷খݶ w ςετͰݕূ͢Δಈ࡞ͷͨΊʹඞཁͳ΋ͷ͚ͩ
 ςετσʔλʹؚΉΑ͏ʹઃܭ͢Δ w εϩʔςετΛආ͚Δ͜ͱ͕Ͱ͖Δ w ࠷খݶͳͷͰςετ͕ཧղ͠΍͍͢ w ޙड़ͷ'BDUPSZΛ࢖͏ͱڞ௨ͷ'JYUVSFΛগͳ͘Ͱ͖Δ

  28. ϙΠϯτᶄҙຯͷ͋Δσʔλ w ൚༻తͳσʔλΑΓ࣮ࡍͷΧϥϜͱ͍ۙ͠ҙຯͷ͋Δ
 σʔλΛ࡞Δ w ΑΓཧղ͠΍͍͢ w ΑΓ࣮ࡍͷ࢖ΘΕํʹ͍ۙঢ়ଶͰςετͰ͖Δ w 'BLFSͳͲͷμϛʔσʔλΛੜ੒͢ΔϥΠϒϥϦΛ


    ࢖͏ͱศར w -BSBWFM͸ඪ४૷උ w ͦͷଞͷ'8΋؆୯ʹར༻Մ
  29. ϙΠϯτᶅద੾ͳ෼ׂ w ద੾ͳཻ౓ͰςετσʔλΛ෼ׂ͢Δ w ྫ͑͹ɺڞ௨ͷ'JYUVSFͱίϯςΩετຖͷ
 'JYUVSFʹ෼ׂ w ϚελʔܥͷςʔϒϧͷσʔλͳͲ͸ڞ௨Խ w ͦΕҎ֎͸ίϯςΩετຖʹݸผʹ'JYUVSFΛ࡞Δ

  30. ϙΠϯτᶆྫ͑͹'BDUPSZΛ࢖͏ w 'JYUVSF͸ςετσʔλࣗମ w 'BDUPSZ͸ςετσʔλͷεέϧτϯ w 3VCZͰݴ͏ͱ͜Ζͷ'BDUPSZ(JSM w -BSBWFMͩͱ.PEFM'BDUPSZ͕࢖͑Δ w

    'BDUPSZΛ࢖͏ͱςετϝιου಺Ͱ
 ؆୯ʹςετσʔλΛ࡞ΕΔ w ҟৗܥͷςετͷͱ͖ʹศར
  31. ϙΠϯτᶆྫ͑͹'BDUPSZΛ࢖͏ w ྫ͑͹-BSBWFMͷ.PEFM'BDUPSZͰ
 ͜Μͳ෩ʹఆٛ͢Δͱ "SUJDMFϞσϧͷ'BDUPSZΛఆٛ GBDUPSZEFpOF "QQa.PEFMa"SUJDMFDMBTT GVODUJPO 'BLFSGBLFS \

    SFUVSO< UJUMFGBLFSUJUMF  DPOUFOUGBLFSQBSBHSBQI  VTFS@JEGVODUJPO \ SFUVSOGBDUPSZ "QQa6TFSDMBTT DSFBUF JE ^ > ^ 
  32. ϙΠϯτᶆྫ͑͹'BDUPSZΛ࢖͏ w ؆୯ʹςετσʔλΛੜ੒ˍऔಘͰ͖Δ w ଐੑͷΦʔόʔϥΠυͰҟৗܥͷσʔλ΋؆୯ʹ࡞੒ ϢʔβʔͷςετσʔλΛੜ੒ VTFSGBDUPSZ "QQa6TFSDMBTT NBLF 

    ෆਖ਼ͳϢʔβʔͷςετσʔλΛੜ੒ʢOBNF͕௕͍Ϣʔβʔʣ VTFSGBDUPSZ "QQa6TFSDMBTT NBLF < OBNFणݶແणݶແޒ߷ͷࡲΓ੾Εւ࠭རਫڕͷਫߦ຤ > 
  33. ·ͱΊ w Πέͯͳ͍ྫʹؾΛ͚ͭΑ͏ w ΑΓྑ͍ςετσʔλΛ࡞ΔϙΠϯτΛߟ͑Α͏ w ᶃ࠷খݶ w ᶄҙຯͷ͋Δσʔλ w

    ᶅద੾ͳ෼ׂ w ᶆྫ͑͹'BDUPSZΛ࢖͏
  34. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠