もう一度テストパターンを整理しよう(WebApp編)

60e652d0244f47d2da4e1f7e712f9328?s=47 K
July 03, 2018

 もう一度テストパターンを整理しよう(WebApp編)

主にモック関連で話をしました。
ここで使った最強のツールはこれです。
https://github.com/Code-Hex/funcy-mock
読みは「ファンキーモック」

See also: https://codehex.hateblo.jp/entry/2018/07/03/211839

60e652d0244f47d2da4e1f7e712f9328?s=128

K

July 03, 2018
Tweet

Transcript

  1. ΋͏Ұ౓
 ςετύλʔϯΛ੔ཧ͠Α͏ !NFSDBSJHP DPEFIFY

  2. who.About(me)

  3. !DPEFIFY !$PEF)FY w .FSDBSJ *OD w *MJLF1FSM94(P w )JQIPQ&OHJOFFS/FX w

    IUUQTDPEFIFYIBUFCMPKQ
  4. None
  5. None
  6. ૉఢ

  7. ͓࿳ͼ

  8. ੔ཧ͗ͨ݁͢͠Ռ

  9. ෼Ͱ͸ऩ·Βͳ͔ͬͨͰ͢

  10. ओޠ͕Ͱ͔͗͢·ͨ͠͝ΊΜͳ͍͞ ෼Ͱ͸ऩ·Βͳ͔ͬͨͰ͢

  11. ΋͏Ұ౓
 ςετύλʔϯΛ੔ཧ͠Α͏ !NFSDBSJHP DPEFIFY 8FC"QQฤ ϞοΫ͕ओ

  12. ࠓ೔࿩͢಺༰

  13. ࠓ೔࿩͢಺༰ʢ݉Ͷͯʣ w (Pʹ͓͚Δςετ࣮૷ύλʔϯ w ςετΛָ͢ΔͨΊͷઃܭ w JOUFSGBDFʹΑΔNPDL࣮૷

  14. %#पΓʹ͍ͭͯ EBUBCBTFTRM

  15. 4FSWJDFͷߏ଄ମͷதʹ
 TRM%#Λ࣋ͨͤͯΔํ͍·ͤΜ͔ʁ

  16. ΋ͪΖΜͰ͕͢ɺ
 ͦΕͰ͸%#ؔ࿈ͷςετ͕
 ೉͘͠ͳΓ·͢

  17. ͲΜͳJOUFSGBDFΛ
 ࣋ͨͤΔͱ͍͍Ͱ͠ΐ͏͔ʁ

  18. ྫ͑͹ %#

  19. None
  20. ྫ͑͹ 5Y

  21. None
  22. ͜ΕΒΛ࣋ͬͨ
 JOUFSGBDF͕ཧ૝తͰ͢

  23. None
  24. ͋ͱ͸ඞཁʹԠͯ͡
 ࣍ͷΑ͏ͳJOUFSGBDFΛ࡞੒

  25. ˞ඞཁʹԠͯ͡&YFDFSͳͲΛ֎͠·͠ΐ͏

  26. JOUFSGBDFΛҾ਺ʹ࣋ͬͨ ؔ਺ͷ࡞੒

  27. ࡞੒ྫ

  28. ˞2VFSZ ͚ͩͳΒҾ਺͸
 2VFSZFSΛ౉͢͜ͱ΋ݕ౼Ͱ͖·͢

  29. 4FSWJDFߏ଄ମͷϨγʔό͔Β
 ݺͼग़࣌͢ͷ࣮૷

  30. ˞/PO5SBOTBDUJPODBTF

  31. ͓ͬͱɺ
 5SBOTBDUJPO$BTF͸ʁ

  32. τϥϯβΫγϣϯ͕Ͱ͖Δͱ
 ൑அͰ͖ΔΑ͏ͳ
 JOUFSGBDFΛఆٛͯ͋͛͠Δ

  33. 5SBOTBDUJPOΛߦ͏ͨΊͷJOUFSGBDF

  34. #FHJOOFSΛؚΊͨJOUFSGBDF

  35. ECϑΟʔϧυΛ3VOOFSJOUFSGBDF΁

  36. 5SBOTBDUJPODBTF

  37. %#ͷςετΛ͢ΔͨΊʹ
 ϞοΫΛ࡞੒͠·͢

  38. ͜͜·Ͱ࣮ߦ෦෼2VFSZ ͷΈ࢖ͬͯΔͨΊमਖ਼

  39. ݱࡏͷ3VOOFSJOUFSGBDF͸࣮࣭͜Εͱಉ͡

  40. ͜ΕΒͷϝιουΛ࣋ͭߏ଄ମΛ༻ҙͯ͋͛͠Δ ˞ಈతʹSFUVSO͢Δ஋ΛมߋͰ͖Δػߏ΋࡞Γ·͠ΐ͏

  41. ͜ΕͰϞοΫ͕Ͱ͖ͨ

  42. ͱࢥ͍·͔ͨ͠ʁ

  43. ͜͏͍͏ TRM5YΛѻ͏έʔεͰςετ͕Ͱ͖·ͤΜʂ

  44. ԿނͳΒ TRM5Y͕ϞοΫԽ Ͱ͖ͳ͍͔Β

  45. TRM5YΛϞοΫʹͰ͖ΔΑ ͏ʹमਖ਼͠·͠ΐ͏ʂ

  46. ·ͣ͸5YJOUFSGBDFΛ࡞੒

  47. #FHJOOFSJOUFSGBDFΛ 5YJOUFSGBDFΛฦ͢Α͏ʹमਖ਼

  48. 5YJOUFSGBDFΛຬͨ͢ߏ଄ମΛఆٛ

  49. ͜͏͍͏͔Μ͡ͰίʔυΛॻ͚͹ %#पΓͰ΋.PDLΛ࢖ͬͨςετ͕ՄೳͰ͢

  50. w TRM%#Λߏ଄ମͷதͰ࣋ͭͷ͸͍͍͕ɺ
 جຊతʹؔ਺ͷҾ਺ʹ౉͢Α͏ʹઃܭ͢Δ w ͦͷؔ਺Λϝιουͱͯ͠ϥοϓͯ͋͛͠Δͱྑ͍ w τϥϯβΫγϣϯΛؚΊΔ৔߹ɺ
 #FHJO ϝιουͷฦΓ஋͸ TRM5YΛຬͨ͢


    JOUFSGBDFΛࢦఆͯ͋͛͠Δ w ͋ͱ͔Β঺հ͢ΔϞοΫٕ๏Ͱ΋ͬͱྑ͍ײ͡ʹͳ Γ·͢
  51. 4FSWJDFͷ'VODUJPOBMUFTU ͱॊೈʹૢ࡞ՄೳͳϞοΫΛ࡞Δ

  52. 'VODUJPOBM

  53. w 6OJUUFTUʢ୯ମςετʣ w ୯Ұͷؔ਺΍ϝιουͳͲΛςετ w 'VODUJPOBMUFTUʢػೳςετʣ w ϦΫΤετ͔ΒϨεϙϯε·Ͱͷςετ

  54. w 6OJUUFTUʢ୯ମςετʣ w ୯Ұͷؔ਺΍ϝιουͳͲΛςετ w 'VODUJPOBMUFTUʢػೳςετʣ w ϦΫΤετ͔ΒϨεϙϯε·Ͱͷςετ

  55. Ͳ͏͍͏ײ͡Ͱ
 ΍ͬͯΔ͔ͱ͍͏ͱ

  56. ςετΛߦ͍͍֤ͨΤϯυϙΠϯτͷొ࿥

  57. ςετͷͨΊͷ൚༻ߏ଄ମΛฦ͢

  58. • TestGet ΍ TestEcho ͳͲͷ୯ମςετͱ
 ࠞ߹ͤ͞ͳ͍ͨΊʹҰՕॴʹ·ͱΊͯॻ͘ • funcsεϥΠεʹfunc(*testing.T)Λ࣋ͨͤΔ • for

    rangeͰ̍ͭͣͭ
 ΤϯυϙΠϯτͷ'VODUJPOBMUFTUΛߦ͍ͬͯ͘ w ֤ΤϯυϙΠϯτςετͷલޙʹॲཧΛ૸ΒͤΔ͜ ͱ͕Մೳʢ4FUVQ5FBSEPXOʣ
  59. ͦͯ͠testGet(u)ͩͱ

  60. None
  61. w ΤϯυϙΠϯτ͝ͱͰඞཁʹԠͯ͡
 ϞοΫΛ࢓ࠐΜͩαʔόʔͷίϯετϥΫτΛߦ͏ w ΤϯυϙΠϯτ͝ͱͰେ·͔ͳϞοΫͷॲཧΛม ߋͰ͖Δ w ςετॱΛγϟοϑϧͰ͖Δ w ֤ςετͷલޙʹॲཧΛ૸ΒͤΔ͜ͱ͕Մೳ


    ʢ4FUVQ5FBSEPXOʣ
  62. ࣮ࡍʹϞοΫΛ࡞੒͢Δ෦෼

  63. None
  64. ςετΛॻ͖͍ͨ΋ͷΛ
 ໭ͬͯ֬ೝ͠·͢

  65. ࠓճ͸͜Ε

  66. testGetWithFailedAuth Λ
 ࡞੒͠·͢

  67. ೝূͰࣦഊ͍ͤͨ͞ͷͰ
 "VUI4FSWJDFͷϞοΫ͔Β

  68. None
  69. ͜ͷϞοΫΛ࢖ͬͨ
 testGetWithFailedAuth

  70. None
  71. w Ұ࣌ม਺ʹϞοΫΛॳظԽͨ͠΋ͷʢϙΠϯλʣΛ ౉ͯͦ͠ΕΛ4FSWFSߏ଄ମͷϑΟʔϧυʹ࣋ͨͤ Δ w ͜͏͢Δͱม਺ܦ༝ͰϞοΫͷத਎ΛมߋͰ͖Δͷ Ͱؾָ

  72. ͜ͷϞοΫٕ๏࠷ڧ

  73. ࢥ͍͍ͭͨΦϨշௐ ʢ࣮͸ͪΌΜͱӆΛ౿ΜͰ͍·͢ʣ

  74. None
  75. ͳͷͰ4FFBMTP IUUQIBZBCVTBDPNHPMBOHIPXUPXSJUFNPDLPGJOUFSGBDFGPSUFTUJOH

  76. ͔͠͠

  77. 6TFS4FSWJDFͷ৔߹ͳͲ

  78. None
  79. JOUFSGBDFʹൺྫͯ͠
 ୔ࢁॻ͔ͳ͚Ε͹͍͚ͳ͍

  80. ͦ͜Ͱ͜ͷπʔϧ IUUQTHJUIVCDPN$PEF)FYGVODZNPDL $ funcygen interface.go

  81. Կճ΋ॻ͘ͷ͸໘౗ͳͷͰ
 ָͰ͖ΔՕॴ͸ָ͠·͠ΐ͏

  82. ·ͱΊ w ઃܭஈ֊ͰͲ͏ϞοΫΛૠೖ͠΍͘͢͢Δ͔
 ૝ఆͯ͠ઃܭ͢ΔͱΈΜͳ޾ͤ w ࠓճ͸%#ͱΞϓϦέʔγϣϯͷϞοΫʹؔͯ͠ ॻ͖·ͨ͠ w ָͰ͖Δͱ͜Ζ͸ָ͍ͨ͠