[SWμš”κ΅¬μ‚¬ν•­] μœ μ €μŠ€ν† λ¦¬ μž‘μ„±ν•˜κΈ°, Given When Then
λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
디지털 κΏ€νŒ

[SWμš”κ΅¬μ‚¬ν•­] μœ μ €μŠ€ν† λ¦¬ μž‘μ„±ν•˜κΈ°, Given When Then

by 일상을 κ³΅μœ ν•¨λ‹ˆλ‹€ 2022. 8. 25.

κΈ°νšμžκ°€ Agile 을 κ³΅λΆ€ν•œλ‹€λŠ” 건 μœ μ € μŠ€ν† λ¦¬μ— λŒ€ν•œ 접근이 μ•„λ‹κΉŒλΌκ³  생각해본닀.
λ„μ„œλ₯Ό 보더라고 Agile 의 ν•œ λΆ€λΆ„μœΌλ‘œ μœ μ € μŠ€ν† λ¦¬λ§Œμ„ 닀룬 책듀이 많이 μžˆλ‹€.
ν”„λ‘œμ νŠΈμ˜ 단좔인 만큼 μ€‘μš”ν•˜μ§€λ§Œ λ‹€λ£¨λŠ” 것은 그닀지 쉽지 μ•Šμ€ 뢀뢄이닀.

사전 μ§€μ‹μœΌλ‘œ Agile 에 λŒ€ν•œ 이해가 ν•„μš”ν•˜λ‹€.


μ„œλ‘ μ˜ μ‹œμž‘

λŒ€μΆ©... λΉ λ₯΄κ²Œ κ°œλ°œν•΄μ„œ κ³ κ°μ—κ²Œ μ „λ‹¬ν•˜λŠ” 개발 방식이닀. 
그럼 μ–΄λ–»κ²Œ λΉ λ₯΄κ²Œ κ°œλ°œμ„ ν•  수 μžˆλŠ”κ°€?

1. κ°œλ°œν•  λ‚΄μš©μ„ μž‘κ³  μž‘μ€ 쑰각으둜 μͺΌκ°€ 수 μžˆμ–΄μ•Ό ν•˜κ³ .
2. μž‘κ²Œ μͺΌκ°  쑰각은 λ…λ¦½μ μœΌλ‘œ λ™μž‘ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

μ—¬κΈ°μ„œ 포인트!

- 두 개의 λ¬Έμž₯을 μž‘μ„±ν–ˆμ„ 뿐인데... λ§‰μ—°ν•˜λ‹€. μ–΄λ–»κ²Œ μž‘μ„±ν•˜λΌκ³ ?? 
- μœ μ € μŠ€ν† λ¦¬λ₯Ό μž‘μ„±ν•˜λŠ” 방법듀이 λ‚˜μ˜¨ 이유일 것이닀.
- As a, I want, So that 그리고 Given-When-Then
- λ³Έλ‘ μ—μ„œ ν•„μž λ‚˜λ¦„μ˜ μ„€λͺ…이 κ°€λ―Έλœλ‹€.

 

3. μͺΌκ°  쑰각은 λͺ…ν™•ν•˜κ²Œ 개발 ν•­λͺ©(TASK)둜 상세화 ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.
4. μƒμ„Έν™”λœ TASKλŠ” 검증 κ°€λŠ₯ν•˜λ„λ‘ μž‘μ„±λ˜μ–΄μ•Ό ν•œλ‹€.

μ—¬κΈ°μ„œ 포인트!
- Agile 은 별도 ν…ŒμŠ€ν„°λ₯Ό λͺ…μ‹œν•˜μ§€ μ•ŠλŠ”λ‹€. μ΄μœ λŠ” 개발 ν•­λͺ©μ„ λͺ…ν™•ν•˜κ²Œ ν•˜μ—¬ 였λ₯˜λ₯Ό μ€„μ΄λŠ” 것이 기본이기 λ•Œλ¬Έμ΄λ‹€.
- 였λ₯˜λ₯Ό μœ λ°œν•˜κ³  μ½”λ“œμ— μžμ‹ μ΄ μ—†λ‹€λ©΄ Agile ν”„λ‘œμ„ΈμŠ€ 흉내내기도 νž˜λ“€λ‹€.

 

5. λΉŒλ“œ/배포 μžλ™ν™”κ°€ κ΅¬μΆ•λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€.
6. ν†΅ν•©λ˜μ–΄ 배포된 μ‚°μΆœλ¬Όμ€ κ²€μ¦λ˜μ–΄ κ³ κ°μ—κ²Œ λ°°ν¬λœλ‹€.

μ΄λ ‡κ²Œ λΉ λ₯Έ 주기둜 κ°œλ°œμ„ ν•  수 있게되고.. 이λ₯Ό μœ„ν•΄ 첫 단좔인 μœ μ € μŠ€ν† λ¦¬κ°€ μ€‘μš”ν•˜λ‹€.

 


본둠은 진흙탕

 

μœ μ €μŠ€ν† λ¦¬λŠ” 보편적으둜 크기에 따라 λͺ…칭을 λΆ€μ—¬ν•œλ‹€.

Theme > Epic > User story > Task

 

κ°„λ‹¨ν•˜κ²Œ μ§šμ–΄λ³Έ 주관적 μ„€λͺ…

- Theme (ν…Œλ§ˆ) : 맑은 μ„œλΉ„μŠ€, μ œν’ˆμ—μ„œ 큰 λ©μ–΄λ¦¬λ‘œ λ³Ό 수 μžˆλŠ” λΆ€λΆ„ (예> 초기 ν™”λ©΄, ν™ˆ ν™”λ©΄ λ“±λ“±)
- Epic (에픽) : ν…Œλ§ˆλ₯Ό κ΅¬μ„±ν•˜λŠ” 큰 κΈ°λŠ₯의 λ‹¨μœ„ (예> 둜그인 κ΄€λ ¨)
- User Story (μœ μ € μŠ€ν† λ¦¬) : 에픽을 μƒν™©μ΄λ‚˜ 방법등 기쀀에 μ˜ν•œ μ‚¬μš©μžμ˜ ν•œ 가지 μ•‘μ…˜ ν–‰μœ„ (예> ꡬ글 κ³„μ •μœΌλ‘œ λ‘œκ·ΈμΈν•  수 μžˆλ‹€.)
- Task (νƒœμŠ€ν¬) : μœ μ € μŠ€ν† λ¦¬λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ μƒμ„Έν•œ 개발 ν•­λͺ© (예> ꡬ글 인증, μž…λ ₯ ν•„λ“œ ꡬ성 λ“±)

제λͺ©μ—μ„œ μ–ΈκΈ‰ν•œ Give-When-Then 은 μœ μ € μŠ€ν† λ¦¬λ₯Ό μž‘μ„±ν•˜λŠ” 방법 쀑 1κ°œμ΄λ‹€.
ν•„μžκ°€ μž‘μ„±ν•œ Scrum ν”„λ‘œμ„ΈμŠ€μ—μ„œλŠ” μœ„ 4κ°œμ§€ ν•­λͺ©μ„ λͺ¨λ‘ 닀루고 있고 κΈ°μ€€μ΄λ‚˜ μ„€λͺ…은 개인적으둜 μž‘μ„±λ˜μ–΄ μžˆμœΌλ‹ˆ μœ„ν‚€λ‚˜ λ„μ„œμ—μ„œ 이둠과 κ°œλ…μ„ λ°°μš°λŠ” 것이 μ’‹λ‹€κ³  μƒκ°ν•œλ‹€.

μœ μ € μŠ€ν† λ¦¬λŠ” μΉ΄λ“œ νƒ€μž…μœΌλ‘œ κ΅¬μ„±λœλ‹€κ³  배우게 λœλ‹€.

μ•žλ©΄μ—λŠ” μœ μ € μŠ€ν† λ¦¬λ₯Ό As a, I want, So that
λ’·λ©΄μ—λŠ” Given-When-Then μœΌλ‘œ μƒμ„Έν•˜κ²Œ μž‘μ„±ν•˜λ„λ‘ ν•œλ‹€.

 

μ•„λž˜ Katalon μ‚¬μ΄νŠΈμ˜ 예제둜 μ„€λͺ… (이미지 λ¨Όμ € 확인)
- ν…ŒμŠ€νŠΈ λΆ„μ•Όμ—μ„œ μ‚¬μš©λœ 예둜... μœ νš¨ν•œ μŠ€ν† λ¦¬μ™€ μœ νš¨ν•˜μ§€ μ•Šμ€ μŠ€ν† λ¦¬λ₯Ό κ΅¬λΆ„ν•˜μ—¬ μž‘μ„±λ¨.
- As a, I want, So that, Given-When-Then 이 λͺ¨λ‘ 포함됨.

Feature : 둜그인 κΈ°λŠ₯ 
=> μ—ν”½κ³ΌλŠ” κ°œλ…μ΄ λ‹€λ₯΄μ§€λ§Œ μœ μ € μŠ€ν† λ¦¬μ˜ κΈ°λŠ₯을 ν•¨μΆ•μ μœΌλ‘œ ν‘œν˜„ν•˜μ—¬ μ—¬λŸ¬ 개λ₯Ό 묢을 수 μžˆλŠ” κ°œλ…μ΄λ‹€.

User Story : μ‚¬μš©μžλŠ” Cura μ‹œμŠ€ν…œμ— λ‘œκ·ΈμΈν•˜μ—¬ 약속을 μž‘μ„ 수 μžˆμ–΄μ•Ό ν•œλ‹€.
=> μ‹€μ œ μ‚¬μš©μžμ˜ ν–‰μœ„λ₯Ό μ •μ˜ν•œ μœ μ € μŠ€ν† λ¦¬λ‘œ λˆ„κ°€, 무엇을, μ™œ ν•˜λŠ”κ°€λ₯Ό μž‘μ„±ν•œλ‹€.
=> μ—¬κΈ°μ„œ As a, I want, So that 이 μ‚¬μš©λœλ‹€.

Given : Cura μ‹œμŠ€ν…œ ν™ˆνŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜μ—¬
=> 사전 상황을 λͺ…μ‹œν•œλ‹€.

When : 약속 λ²„νŠΌμ„ μ„ νƒν•˜κ³ 
=> μ‚¬μš©μž μ•‘μ…˜μ„ λͺ…μ‹œν•œλ‹€.

And : 이름과 λΉ„λ°€λ²ˆν˜Έλ₯Ό λ„£κ³ 

And : 둜그인 λ²„νŠΌμ„ λˆ„λ₯΄λ©΄
=> 좔가적인 μ‚¬μš©μž μ•‘μ…˜μ„ λͺ…μ‹œν•œλ‹€.
=> When μ΄λ‚˜ Then λ‹€μŒμ— μΆ”κ°€ μ•‘μ…˜μ„ λͺ…μ‹œν•  수 μžˆλ‹€.

Then : 둜그인이 μ™„λ£Œλ˜μ–΄μ•Ό ν•œλ‹€.
=> μ‚¬μš©μž μ•‘μ…˜μ— λŒ€ν•œ κ²°κ³Ό, ν”Όλ“œλ°±μ„ λͺ…μ‹œν•œλ‹€.
=> μ€‘μš”! Should λ‹¨μ–΄λ‘œ μž‘μ„±ν•œλ‹€λŠ” 것!!

 

예> BDD ν…ŒμŠ€νŠΈ μžλ™ν™”μ— 적용된 λ‚΄μš© (좜처 : docs.katalon.com/katalon-studio/docs/cucumber-features-file.html#add-feature-files)

 

ν•„μžλŠ” "As a, I want, So that", "Given-When-Then" 을 μ’€ 더 μ‰½κ²Œ ν‘œν˜„ν•˜κ³  μ‹Άλ‹€.

  • Screen (Given) : μ–΄λ– ν•œ 상황(ν™”λ©΄), μ‘°κ±΄μ—μ„œ
  • Action (When) : μ–΄λ– ν•œ 행동을 ν•˜λ©΄
  • Feedback (Then) : μ–΄λ– ν•œ κ²°κ³Όκ°€ λ‚˜νƒ€λ‚˜μ•Ό ν•œλ‹€.

λ‹€λ₯΄κ²Œ λ³΄μ΄μ§€λ§Œ 사싀 μ˜λ―Έκ°€ κ°™λ‹€. λ”°λΌμ„œ μ΄ν•΄ν•˜κΈ° 더 쉽닀고 μƒκ°ν•œ... 이전 글에 μ–ΈκΈ‰λœ λ‚΄μš© 볡기(μš”κ΅¬μ‚¬ν•­ μž‘μ„±)

 

 

ν™”λ©΄ ν•˜λ‚˜μ—μ„œ μœ„ 3가지 쑰건에 맞좰 κΈ°λŠ₯을 λͺ…μ„Έν•˜λ©΄ 그것이 λ°”λ‘œ μœ μ € μŠ€ν† λ¦¬κ°€ 될 수 μžˆλ‹€.
λ³΄ν†΅μ˜ κΈ°λŠ₯은
 - μ‚¬μš©μž μ•‘μ…˜μ΄ ν•„μš”ν•œ λ²„νŠΌμ—μ„œ μ •μ˜λ˜κ±°λ‚˜
 - λ˜λŠ” νŽ˜μ΄μ§€ λ‘œλ”©μ΄λ‚˜ 쑰건에 λ”°λ₯Έ μ‹œμŠ€ν…œμ— μ˜ν•œ λ™μž‘μ—μ„œ μ •μ˜λ  수 μžˆλ‹€.

이럴 땐 λŠ₯λ™ν˜•κ³Ό μˆ˜λ™ν˜•μ„ κ΅¬λΆ„ν•΄μ„œ μž‘μ„±μ„ ν•˜λ©΄ μ’‹λ‹€κ³  μƒκ°ν•œλ‹€.
 - μ‚¬μš©μžλŠ” ν•  수 μžˆλ‹€.
 - μ‹œμŠ€ν…œμ€ λ˜μ–΄μ•Ό ν•œλ‹€.

더보기

λ‚΄κ°€ λ³Έ 일뢀 κΈ°νšμžλ“€μ€ 본인듀이 창의적인 업무λ₯Ό ν•˜κ³  μžˆλ‹€λŠ” 착각에 빠져있고 싀상 이쁜 ν™”λ©΄ 그리기에 λΉ μ Έ μžˆμ—ˆλ‹€.

κ·Έλž˜μ„œ κ·Έλ“€μ—κ²Œ 맞게 μ„€λͺ…을 μœ„ν•΄ μœ„μ™€ 같이 μ•ˆλ‚΄ν•΄μ£Όμ—ˆλ‹€.

λ˜ν•œ μœ μ € μŠ€ν† λ¦¬λΌλŠ” 말 λŒ€μ‹  μš”κ΅¬μ‚¬ν•­ μž‘μ„±ν•˜λŠ” 것이라 μ•Œλ €μ£Όμ—ˆλ‹€. 

 

"μ—¬λŸ¬λΆ„μ€ ν™”λ©΄μ„€κ³„μ„œ μž‘μ„± μ „ μš”κ΅¬μ‚¬ν•­μ„ λͺ…ν™•νžˆ ν•˜λŠ” μž‘μ—…μ„ ν•˜κ³  κ³„μ‹­λ‹ˆλ‹€." 라고.

 

μœ μ € μŠ€ν† λ¦¬λŠ” μ‹œλ‚˜λ¦¬μ˜€λ§Œ μž‘μ„±λ˜μ—ˆλ‹€κ³  ν•˜μ—¬ μ™„μ„±λœ 것이 μ•„λ‹ˆλ‹€.
μ‹€μ œ 뒷면에 μž‘μ„±λ˜μ–΄μ•Ό ν•˜λŠ” TASK κ°€ μ€‘μš”ν•˜λ‹€.

ν•„μžλŠ” TASK λ₯Ό 두 κ°€μ§€λ‘œ λΆ„λ₯˜ν•œλ‹€.
Conversation : κ°œλ°œμžκ°€ μž‘μ„±ν•˜λŠ” μ‹€μ œ 개발 TASK (상황과 ν–‰μœ„, κ²°κ³Όκ°€ λͺ…μ‹œλ˜μ–΄μ•Ό ν•œλ‹€.)
Confirmation : ν’ˆμ§ˆλ‹΄λ‹Ήμžκ°€ μž‘μ„±ν•˜λŠ” μœ μ € μŠ€ν† λ¦¬λ₯Ό λ§Œμ‘±ν•˜λŠ” 쑰건 (상황+ν–‰μœ„μ— λŒ€ν•œ μ˜¬λ°”λ₯Έ 결과와 μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ κ²°κ³Όλ₯Ό λͺ…μ‹œν•΄μ•Ό ν•œλ‹€.)

 

μœ μ € μŠ€ν† λ¦¬μ˜ ꡬ성 (2019)

μœ μ € μŠ€ν† λ¦¬μ˜ ꡬ성을 보면

  • μ‚¬μš©μž μš”κ΅¬μ‚¬ν•­ : 일반적인 상세 μš”κ΅¬μ‚¬ν•­μ„ μž‘μ„±
  • μ‹œμŠ€ν…œ μš”κ΅¬μ‚¬ν•­ : μ‹œμŠ€ν…œ λ˜λŠ” κ΄€λ ¨λœ λ¬Έμ„œλ“€
  • Conversaton : UI μ„€κ³„μ„œλ₯Ό 보고 κ°œλ°œμžκ°€ μ •μ˜ν•˜λŠ” 개발 νƒœμŠ€ν¬
  • Confirmation : UI μ„€κ³„μ„œλ₯Ό 보고 ν’ˆμ§ˆ λ‹΄λ‹Ήμžκ°€ μž‘μ„±ν•˜λŠ” Valid ν•­λͺ©

그럼 μœ„ μœ μ € μŠ€ν† λ¦¬ ꡬ성을 μœ„ν•΄ λ² μ΄μŠ€κ°€ λ˜λŠ” ν™”λ©΄μ„€κ³„μ„œλŠ” μ•„λž˜μ™€ κ°™λ‹€.
μž‘μ„±ν•  λ•ŒλΆ€ν„° λ‹€μŒ ν”„λ‘œμ„ΈμŠ€κΉŒμ§€ 염두할 수 μžˆμ–΄μ•Ό ν•œλ‹€.

 

 


결둠은 μ–Έμ œλ‚˜

늘 κ·Έλ ‡λ‹€.
이둠은 이둠이고 정석은 정석이닀.
우리 쑰직과 λ‚˜μ™€ λ§žμ§€ μ•Šλ‹€κ³  생각을 ν•œλ‹€.

ν•˜μ§€λ§Œ 이둠을 μ•Œκ³  정석을 이해해야지 λͺ©μ μ— μ–΄κΈ‹λ‚˜μ§€ μ•Šλ„λ‘ μ‚¬μš©ν•  수 μžˆμ„ 것이고 λ³€μ§ˆλ˜μ§€ μ•Šμ„ 것이닀.

λΉ λ₯Έ 개발 μ£ΌκΈ°, 배포λ₯Ό μœ„ν•΄μ„œλŠ” λͺ…ν™•ν•˜κ²Œ κ°œλ°œν•  수 μžˆλŠ” μž‘μ€ λ°±λ‘œκ·Έκ°€ ν•„μš”ν•˜λ‹€. (Minimum Viable Product)
그것을 μ •μ œν•˜λŠ” 것이 ν”„λ‘œμ νŠΈ μ˜€λ„ˆ λ˜λŠ” 기획 λ‹΄λ‹Ήμžμ˜ 역할이 될 것이고.
μ„œν¬νŠΈν•΄μ„œ 개발이 μ›ν™œν•˜κ²Œ 진행될 수 μžˆλ„λ‘ ν•˜λŠ” 것이 λ°”λ‘œ νŒ€μ΄λ‹€.

λ‚˜ ν•˜λ‚˜ 잘 λ‚˜μ„  or μž˜ν•΄μ„œλŠ”... μ•ˆλœλ‹€.

슀크럼 λ§ˆμŠ€ν„°κ°€ 이λ₯Ό μ–Όλ§ˆλ‚˜ μ‘°ν™”λ‘­κ²Œ μ΄λŒμ–΄ λ‚Ό 수 μžˆλŠ”κ°€μ— 따라 이상적인 Agile 의 첫 단좔λ₯Ό κΏΈ 수 μžˆμ„ 것이닀.

 


 

μœ μ € μŠ€ν† λ¦¬ μΉ΄λ“œ μž‘μ„± 예

1. μœ μ € μŠ€ν† λ¦¬ (As a I want So that)

  • μ•žλ©΄ : As a OOO, I want OOO, So that OOOO
  • λ’·λ©΄ : Given - When - Then

2. μœ μ € μŠ€ν† λ¦¬ (feat, μš˜λ‚˜λΉ λ₯Έ & Ron jeffries's Three Cs)

  • μ•žλ©΄ : Screen - Action - Feedback
  • λ’·λ©΄ : Conversation, Confirmation

 

 

 

Ron Jeffries's Three Cs

λ‘  μ œν”„λ¦¬μ˜ 3C 에 λŒ€ν•˜μ—¬, μ‚¬μš©μž μŠ€ν† λ¦¬μ—λŠ” μ„Έ 가지 μ€‘μš”ν•œ 츑면이 μžˆλ‹€. λ°”λ‘œ Card, Conversation and Confirmation 이닀.

6987.tistory.com

 

쒋은 μœ μ €μŠ€ν† λ¦¬ μž‘μ„± λ”°λΌν•˜κΈ° INVEST

쒋은 μœ μ € μŠ€ν† λ¦¬λ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” 쒋은 μœ μ € μŠ€ν† λ¦¬μ˜ νŠΉμ„±μ΄ 무엇인지 μ•Œμ•„μ•Ό ν•œλ‹€. μœ μ € μŠ€ν† λ¦¬λ₯Ό μž‘μ„±μ—λŠ” "Hard core Rules" κ°€ μ—†κΈ° λ•Œλ¬Έμ΄λ‹€. 쒋은 μœ μ € μŠ€ν† λ¦¬λž€ μ•„λž˜ 6가지 νŠΉμ„±μ„ 만쑱

odaily.tistory.com

 

λŒ“κΈ€