Skip to content

Latest commit

Β 

History

History
39 lines (32 loc) Β· 2.94 KB

test.md

File metadata and controls

39 lines (32 loc) Β· 2.94 KB

test νŒ¨ν‚€μ§€

go test νŒ¨ν‚€μ§€λ₯Ό 톡해 ν…ŒμŠ€νŠΈ ν•¨μˆ˜ μž‘μ„± 및 μ‹€ν–‰ κ°€λŠ₯, λ˜ν•œ 각 ν•¨μˆ˜μ˜ μ„±λŠ₯을 μΈ‘μ •ν•˜λŠ” λ²€μΉ˜λ§ˆν‚ΉκΉŒμ§€ κ°€λŠ₯ ✨

ν…ŒμŠ€νŠΈ μž‘μ„±λ²•

  • 파일 ν˜•μ‹
    • "_ test.go" ν˜•μ‹μ˜ μ΄λ¦„μœΌλ‘œ 파일(ν…ŒμŠ€νŠΈ ν•¨μˆ˜) μž‘μ„±ν•΄μ•Ό 됨
  • μ½”λ“œ λ‚΄ ν•¨μˆ˜ ν˜•μ‹
    • μ½”λ“œ λ‚΄ ν…ŒμŠ€νŠΈ ν•¨μˆ˜λŠ” "Test"으둜 μ‹œμž‘ν•΄μ•Ό 함
    • ν…ŒμŠ€νŠΈ ν•¨μˆ˜λŠ” ν…ŒμŠ€νŠΈν•˜λ €κ³  ν•˜λŠ” ν•¨μˆ˜ μ•žμ— Testλ₯Ό κΌ­ λΆ™μ—¬μ€˜μ•Ό 됨 (ex. TestSum, TestMul ...)
    • Test λ‹€μŒμ— ν•¨μˆ˜μ΄λ¦„μ΄ μ˜€λŠ”λ°, ν•¨μˆ˜μ΄λ¦„μ˜ 첫 κΈ€μžλŠ” 항상 λŒ€λ¬Έμžλ‘œ μ‹œμž‘
    • Test ν•¨μˆ˜μ˜ νŒŒλΌλ―Έν„°μ— 항상 * testing.T νƒ€μž…μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό μ μ–΄μ€Œ
  • λ²€μΉ˜λ§ˆν‚Ή
    • benchmarkλ₯Ό 톡해 μ›ν•˜λŠ” ν•¨μˆ˜μ˜ μ„±λŠ₯을 μΈ‘μ • κ°€λŠ₯함
    • μ½”λ“œ λ‚΄ ν•¨μˆ˜ ν˜•μ‹ : μ„±λŠ₯ μΈ‘μ •ν•˜λ €λŠ” ν•¨μˆ˜ μ•žμ— Benchmarkλ₯Ό κΌ­ λΆ™μ—¬μ€˜μ•Ό 함 (ex. BenchmarkSum, BenchmarkMul ...)
      • Benchmark λ‹€μŒμ— ν•¨μˆ˜μ΄λ¦„μ΄ μ˜€λŠ”λ°, Test ν•¨μˆ˜μ™€ λ™μΌν•˜κ²Œ ν•¨μˆ˜μ΄λ¦„μ˜ 첫 κΈ€μžλŠ” 항상 λŒ€λ¬Έμžλ‘œ μ‹œμž‘
      • Test ν•¨μˆ˜μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ, Benchmark ν•¨μˆ˜μ˜ νŒŒλΌλ―Έν„°μ— 항상 * testing.T νƒ€μž…μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό μ μ–΄μ€Œ
    • benchmarkλ₯Ό μˆ˜ν–‰ν•˜λ©΄, b.N만큼 μˆ˜ν–‰ν•˜κ²Œ λ˜λŠ”λ° μ΄λŠ” benchmarkν•œ ν•¨μˆ˜μ˜ μ„±λŠ₯이 κ· μΌν•˜κ²Œ(μ•ˆμ •μ μœΌλ‘œ) λ‚˜μ˜¬λ•ŒκΉŒμ§€ μ‘°μ •λ˜λŠ” κ²ƒμž„βœ¨

      μ°Έκ³ : Go testing package

βœ¨ν…ŒμŠ€νŠΈ μ‹€ν–‰ λͺ…λ Ήμ–΄

  • go test -run : ν•΄λ‹Ή 디렉토리에 μ‘΄μž¬ν•˜λŠ” _ test.go 파일 ν…ŒμŠ€νŠΈ μ‹€ν–‰
  • go test -benchmem -run=^$ -bench ^"(BenchmarkSum)"$ : ν•¨μˆ˜μ— κ΄€ν•΄ ν• λ‹Ήλœ λ©”λͺ¨λ¦¬μ™€ loop count, 1회 μ—°μ‚°λ‹Ή μ‹€ν–‰μ‹œκ°„(ns/op)을 확인 κ°€λŠ₯
    • loop countλŠ” λ²€μΉ˜λ§ˆν‚Ήν•œ ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό λ°˜λ³΅ν•œ 전체 횟수λ₯Ό 의미
    • ν• λ‹Ήλœ λ©”λͺ¨λ¦¬λŠ” Bytes/op, Allocs/op둜 1회 ν•¨μˆ˜ μ—°μ‚° λ‹Ή ν• λ‹Ήλœ λ°”μ΄νŠΈ 수, 1회 ν•¨μˆ˜ μ—°μ‚° λ‹Ή ν• λ‹Ήλœ λ©”λͺ¨λ¦¬λ₯Ό 의미
    • ns/op와 loop countλ₯Ό 확인할 수 μžˆμœΌλ―€λ‘œ, TPS(Transaction Per Seconds)도 λ„μΆœ κ°€λŠ₯ ❗
  • μ΄μ™Έμ˜ μ˜΅μ…˜ 쑴재 πŸ“„

κ·Έ μ™Έ

  • ν…ŒμŠ€νŠΈ 셋업을 μœ„ν•΄ λ°˜λ“œμ‹œ ν•œλ²ˆ μ‹€ν–‰λ˜μ–΄μ•Ό ν•˜λŠ” ν•¨μˆ˜κ°€ μ‘΄μž¬ν•  λ•Œ, 처리 방법
  • b.Run ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬, ν•˜μœ„ 벀치마크 ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•¨(즉, μš” 뢀뢄에 κΈ°μ‘΄ ν…ŒμŠ€νŠΈ μ§„ν–‰ν•˜λ €κ³  ν•˜λŠ” 뢀뢄을 μž‘μ„±)
  • b.Run ν•¨μˆ˜ μ™Έμ˜ 뢀뢄은 λ°˜λ“œμ‹œ ν•œλ²ˆλ§Œ μˆ˜ν–‰ν•˜κ²Œ 됨 ❗❗
  • μ°Έκ³  - stackoverflow : Golang benchmark setup database

✨예제

1οΈβƒ£κ°„λ‹¨ν•œ μƒ˜ν”Œ μ½”λ“œ : sum_test.go

2οΈβƒ£κ°„λ‹¨ν•œ μƒ˜ν”Œ μ½”λ“œ : mul_test.go