๐Ÿ“˜ Unit Test

[meษช]ยท2021๋…„ 9์›” 9์ผ
0

3. Today I Learned. Basic

๋ชฉ๋ก ๋ณด๊ธฐ
5/11

๐Ÿ“Œ ๊ฐœ๋ฐœ ๊ณต๋ถ€ 2๊ฐœ์›” ์ฐจ์ธ to-be ๊ฐœ๋ฐœ์ž์˜ ์ž์Šต ๋ธ”๋กœ๊ทธ๐Ÿ™‚๏พ Sep 5 ~ 11, 2021

ํ˜„์žฌ ์ƒํƒœ
BE ํž˜๋‚ด๋ผ์•„์•„

์‹ค์ œ ํ…Œ์ŠคํŠธ๋Š” BE๊ฐ€ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, FE๋„ ๊ฐœ๋…์„ ์•Œ๊ณ  ํ˜‘์—…ํ•ด์•ผ ํ•˜๋ฏ€๋กœ Unit Test์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•จ.
๊ฐœ๋ฐœ ์กฐ์ง์˜ ๊ทœ๋ชจ๊ฐ€ ์ž‘๋‹ค๊ณ  ํ•ด์„œ Unit Test๋ฅผ ์ƒ๋žตํ•˜์ง€ ๋ง๊ณ , ์˜คํžˆ๋ ค ๊ทœ๋ชจ๊ฐ€ ์ ์„ ๋•Œ ํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Œ.

์šฐ์„ , test๊ฐ€ ๋ฌด์—‡์ด๋ฉฐ ์™œ ํ•˜๋Š”๊ฐ€. ์™œ ์ค‘์š”ํ•œ๊ฐ€.
๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ์ „์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ง„ํ–‰.

ํ…Œ์ŠคํŠธ๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Œ์„ ๋ณด์—ฌ์ค„ ๋ฟ, ๋ฒ„๊ทธ๊ฐ€ ์—†์Œ์„ ๋ณด์—ฌ์ค„ ์ˆ˜๋Š” ์—†๋‹ค. -์—์ธ ํ—ˆ๋ฅด ๋น„๋ฒ„ ๋ฐ์ดํฌ์ŠคํŠธ๋ผ(๋‹ค์ดํฌ์ŠคํŠธ๋ผ (๋‹ค์ดํฌ์ŠคํŠธ๋ผ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“  ์‚ฌ๋žŒ))-

๋””ํ…Œ์ผํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•ด์„œ ๋ฒ„๊ทธ๋ฅผ ์žก์•„๋‚ด์•ผ ํ•จ.

console.log, print ๋“ฑ์˜ Manual Test๋Š” ์ฆ‰์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ

  • ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์†๋„ โ†“
  • ์ธ๋ ฅ ์†Œ๋ชจ โ†‘ (์„œ๋น„์Šค ๊ทœ๋ชจ๊ฐ€ ํฌ๋ฉด ์ ์€ ์ธ์›์œผ๋กœ ํ•˜๊ธฐ ํž˜๋“ฆ)
  • ๋ถˆ์•ˆ์ •์„ฑ โ†‘
  • ๋น„์šฉ โ†‘

์‹œ์Šคํ…œ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ• (Testing Pyramid) 3๊ฐ€์ง€
1. End-To-End Test (UI testing)
ย ย ย ย : 10%
ย ย ย ย : ์‹ค ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ธฐ๋Šฅ์ด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Œ.
ย ย ย ย : cypress๊ฐ™์€ UI test tool์ด ์žˆ์Œ.
2. Integration Test
ย ย ย ย : 20%
ย ย ย ย : local์—์„œ server(run server)๋ฅผ ์‹คํ–‰์‹œํ‚จ ๋‹ค์Œ postman์ด๋‚˜ httpie๊ฐ™์€ ๊ณณ์— ํ˜ธ์ถœํ•ด ๋ด„.
ย ย ย ย : FE ์—†์ด๋„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ
3. Unit Test
ย ย ย ย : 70%
ย ย ย ย : ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ํ…Œ์ŠคํŠธํ•จ.
ย ย ย ย : ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋‹ค๋ฅธ ์ฝ”๋“œ๋ž‘ ํ•ฉ์น˜๊ณ  ์™„์„ฑํ•˜๋Š” ๋‹จ๊ณ„ ์ค‘ ์ฒซ ๋‹จ๊ณ„์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋‹จ๊ณ„๋ถ€ํ„ฐ ๊ธฐ๋Šฅ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋†“๋Š” ๊ฒƒ


test case : unittest framework์˜ ํ…Œ์ŠคํŠธ ์กฐ์ง์˜ ๊ธฐ๋ณธ ๋‹จ์œ„.
setUp() : ํ…Œ์ŠคํŠธ ์ค€๋น„.
fixture : ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ ํ•„์š”ํ•œ ํ…Œ์ŠคํŠธ์šฉ ๋ฐ์ดํ„ฐ ํ˜น์€ ์„ค์ • ๋“ฑ.
assertion : unittest์—์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ถ€๋ถ„์ด ์ œ๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ถ€๋ถ„.
tearDown() : ํ…Œ์ŠคํŠธ ๋๋‚œ ํ›„ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์—†์• ๋Š” ๊ฒƒ.


1 (์ฐธ) : ์„ฑ๊ณตํ•ด์•ผ ํ•  ๋•Œ ์ œ๋Œ€๋กœ ์„ฑ๊ณตํ•˜๋Š”๊ฐ€
-1 (๊ฑฐ์ง“) : ์‹คํŒจํ•ด์•ผ ํ•  ๋•Œ ์ œ๋Œ€๋กœ ์‹คํŒจํ•˜๋Š”๊ฐ€
0 (์˜ˆ์™ธ ์ฒ˜๋ฆฌ) : ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์–ด์žˆ๋Š”๊ฐ€


Unit Test library

  • FE : jest, enzyme, mocha
  • BE : pytest, unites

Unit Test ์„ค๊ณ„ ์›์น™

  • ํ…Œ์ŠคํŠธ ์œ ๋‹›์€ ๊ฐ ๊ธฐ๋Šฅ์˜ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์— ์ง‘์ค‘ํ•ด์•ผ ํ•จ.
  • ๊ฐ ํ…Œ์ŠคํŠธ ์œ ๋‹›์€ ๋ฐ˜๋“œ์‹œ ๋…๋ฆฝ์ ์ด์–ด์•ผ ํ•จ. ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ๋ฉด ์•ˆ ๋จ.
  • ํ…Œ์ŠคํŠธ๊ฐ€ ๋น ๋ฅด๊ฒŒ ๋Œ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด์•ผ ํ•จ. ํ…Œ์ŠคํŠธ ์‹คํŒจ = ๋ญ”๊ฐ€ ๊ณ ์žฅ โ†’ ํ…Œ์ŠคํŠธ๋ฅผ ๋งŽ์ด ๋Œ๋ ค์•ผ ํ•จ โˆด ํ…Œ์ŠคํŠธ๊ฐ€ ๋นจ๋ผ์•ผ ํ•จ.
  • ์ง€๊ธˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํˆด(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)์ด ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ๋‚˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ๋ฐฐ์›Œ์•ผ ํ•จ.
  • ๊ทธ๋‚ ์˜ ์ฝ”๋”ฉ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ํ•ญ์ƒ full test suite๋ฅผ ๋Œ๋ ค์•ผ ํ•จ. (์ฐจ ๋นŒ๋ฆฌ๊ธฐ ์ „์— ์‚ฌ์ง„ ์ฐ์–ด๋†“๋Š” ๊ฒƒ์ฒ˜๋Ÿผ?)
  • ๋ชจ๋‘๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์ €์žฅ์†Œ(git hub๊ฐ™์€ ๊ณณ)์— ์ฝ”๋“œ๋ฅผ ์ง‘์–ด๋„ฃ๊ธฐ ์ „์— ์ž๋™์œผ๋กœ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋กํ•˜๋Š” ํ›…์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ. (CI/CD๊ฐ™์€ ๋ฐฐํฌ ์ž๋™ํ™” (๊ฐœ๋… ํ•™์Šตํ•ด์•ผ ํ•จ) 'code push > branch > test'๊ฐ€ ์ž๋™ํ™”๋˜์–ด ์žˆ๋Š” ๊ณณ์ด ๋งŽ์Œ)
    (Continuous Integration / Continuous Deploy(Delivery) => CI/CD)
  • ์ฝ”๋“œ๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์‹œ์ž‘ํ•  ์ผ์€ ๋ฒ„๊ทธ๋ฅผ ์ฐ์–ด๋‚ด๋Š” ์ƒˆ๋กœ์šด ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ.
  • ํ…Œ์ŠคํŠธ ํ•จ์ˆ˜๋Š” ๊ธธ๊ณ  ์„œ์ˆ ์ ์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ. ์—…๊ณ„์—์„œ ํ•œ๊ตญ์–ด๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ. (์˜์–ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„์˜ convention!) ex test_square_of_number2()
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ๋˜๋‹ค๋ฅธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์•ˆ๋‚ด์„œ๋กœ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์ž„. ํ•˜๋‚˜์˜ document๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ.

์š”์•ฝ

  • ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์˜ ์ค‘์š”์„ฑ ์ดํ•ด
  • ์‹œ์Šคํ…œ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ดํ•ด
  • Unit Test์˜ ์ค‘์š”์„ฑ์„ ์ดํ•ด
  • Unit Test์˜ ์žฅ์ ์„ ์ดํ•ด
  • Unit Test๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์ง€์ผœ์•ผ ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์›์น™ ์ดํ•ด
profile
๋Š๋ ค๋„ ํ•  ๊ฑฐ์•ผ.......

0๊ฐœ์˜ ๋Œ“๊ธ€