์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[ATDD] ํ…Œ์ŠคํŠธ ๊ฒฉ๋ฆฌ, ๋ฒ„๊ทธ ์ˆ˜์ • ์ตœ์†Œํ™”, ํ…Œ์ŠคํŠธ์ฝ”๋“œ์˜ ์ค‘๋ณต ์ œ๊ฑฐ

๐Ÿ˜Ž ์ง€์‹ in Action/๐Ÿงช

by :ํ•ดํ”ผ๋ž˜๋น—๐Ÿพ 2026. 1. 25. 12:57

๋ณธ๋ฌธ

ํ…Œ์ŠคํŠธ ๊ฒฉ๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ญ์ƒ ์ฃผ์˜ํ•˜์ž

๋ฌธ์ œ ์ƒํ™ฉ

์˜ˆ์•ฝ ์ทจ์†Œ ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฐ”๋กœ ๋‹ค์Œ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ–ˆ๋‹ค.

Scenario: ์ทจ์†Œ ๊ฐ€๋Šฅํ•œ ์˜ˆ์•ฝ์„ ์ทจ์†Œํ•œ๋‹ค     → ์„ฑ๊ณต (์˜ˆ์•ฝ 1001: CONFIRMED → CANCELLED)
Scenario: ์˜ˆ์•ฝ ์ƒํƒœ๋ฅผ CHECKED_IN์œผ๋กœ ๋ณ€๊ฒฝ  → ์‹คํŒจ (์˜ˆ์•ฝ 1001: ์ด๋ฏธ CANCELLED ์ƒํƒœ)

 

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐ’์ด ๋ณ€๊ฒฝ์ด ๋˜์–ด ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค 

๋ณ€๊ฒฝํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ์ „์šฉ ID ์‚ฌ์šฉ 

DB ๋ฆฌ์…‹ ๋Œ€์‹ , ์‹œ๋‚˜๋ฆฌ์˜ค ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ID๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

public class ReservationTestHelper {
    // ๋ณ€๊ฒฝํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์šฉ - ๊ฐ๊ฐ ์ „์šฉ ID
    public static final int CANCEL_TARGET_ID = 1005;
    public static final int CHECKIN_TARGET_ID = 1006;
    public static final int CHECKOUT_TARGET_ID = 1007;

    // ์กฐํšŒ/์‹คํŒจ ์‹œ๋‚˜๋ฆฌ์˜ค์šฉ - ๊ณต์œ  ๊ฐ€๋Šฅ
    public static final int CANCELLED_ID = 1003;    // ์ด๋ฏธ ์ทจ์†Œ๋œ ์ƒํƒœ
    public static final int CHECKED_OUT_ID = 1004;  // ์ด๋ฏธ ์ฒดํฌ์•„์›ƒ๋œ ์ƒํƒœ
}

 

ํ˜น์€ API ํ˜ธ์ถœํ•ด์„œ ํ…Œ์ŠคํŠธ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด๋„ ๋˜๊ณ , ์•„๋‹ˆ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค  


๋ฒ„๊ทธ์ธ๊ฐ€, ๊ธฐ๋Šฅ์ธ๊ฐ€?

๋ฌธ์ œ ์ƒํ™ฉ

ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋‹ˆ ์˜๋ฌธ์ด ์ƒ๊ฒผ๋‹ค.

  • ๋‹น์ผ ์ˆ™๋ฐ•์„ ํ—ˆ์šฉํ•ด์•ผ ํ•˜๋‚˜?
  • ์ฒดํฌ์•„์›ƒ ๋‚ ์งœ์— ์ƒˆ ์˜ˆ์•ฝ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋‚˜?

์ด๊ฒŒ ๋ฒ„๊ทธ์ธ์ง€, ์˜๋„๋œ ๋™์ž‘์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

์ •์˜๋œ ์ŠคํŽ™์„ ์šฐ์„  ๊ฒ€์ฆํ•œ๋‹ค.

๋ชจํ˜ธํ•œ ๋ถ€๋ถ„๊นŒ์ง€ ์ „๋ถ€ ํ…Œ์ŠคํŠธํ•˜๋ ค ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ŠคํŽ™ ๋ฌธ์„œ์— ๋ช…์‹œ๋œ ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ๊ฒ€์ฆํ•˜๊ณ , ๋ชจํ˜ธํ•œ ๋ถ€๋ถ„์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚ฎ์ถ˜๋‹ค.


ํ…Œ์ŠคํŠธ ํ†ต๊ณผ๋ฅผ ์œ„ํ•œ ๋ฒ„๊ทธ ์ˆ˜์ •์€ ์ตœ์†Œํ•œ์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค

"๋”ฑ ๊ทธ ๋ถ€๋ถ„๋งŒ ๊ณ ์น˜๋ ค๋‹ค๊ฐ€ ๋‹ค๋ฅธ ๋ถ€๋ถ„๊นŒ์ง€ ํ•จ๊ป˜ ๊ณ ์น˜๋‹ค ๋ณด๋ฉด ์ˆ˜์ • ๋ฒ”์œ„๊ฐ€ ๋„ˆ๋ฌด ๋„“์–ด์ ธ์„œ ๋กค๋ฐฑํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค"

 

๋”ฐ๋ผ์„œ, ๋ฆฌํŒฉํ„ฐ๋ง ์š•๊ตฌ๋ฅผ ์ฐธ๊ณ  ์ผ๋‹จ ์ตœ์†Œํ•œ์˜ ๋ถ€๋ถ„๋งŒ ๊ณ ์นœ๋‹ค.


ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋„ ์ฝ”๋“œ์ด๋ฏ€๋กœ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์ƒ๊ฐํ•œ๋‹ค 

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋„ ์ค‘๋ณต์ด ์Œ“์ด๋ฉด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค. ์žฌ์‚ฌ์šฉ๋˜๋Š” ๋กœ์ง์€ Fixture๋กœ ๋ฌถ์—ˆ๋‹ค.

public class ReservationTestHelper {
    // ํ…Œ์ŠคํŠธ์šฉ ๊ณ ์ • ID
    public static final int CANCEL_TARGET_ID = 1005;
    public static final int CANCELLED_ID = 1003;

    // API ํ˜ธ์ถœ ๋ฉ”์„œ๋“œ
    public Response updateStatus(int id, String status) { ... }

    // ๊ฒ€์ฆ ์œ ํ‹ธ๋ฆฌํ‹ฐ
    public String getReservationStatus(int id) { ... }
}

 

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•ด์ง€๊ณ , ๋ณ€๊ฒฝ ์‹œ ํ•œ ๊ณณ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค.

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ