2jigoo / BookStudy-StartTdd

'테스트 주도 개발 시작하기' 스터디
2 stars 0 forks source link

[1주차-2] TDD 시작 (2/2) - Jonghai #8

Closed Jonghai closed 1 year ago

Jonghai commented 1 year ago

Chapter 2. TDD 시작 (2/2)

스터디 일시 2023.08.10

목표

Jonghai commented 1 year ago

네 번째 테스트: 값이 없는 경우

https://github.com/2jigoo/BookStudy-StartTdd/blob/8835e7dc407c890586826122bac9b956b1381610/src/test/java/chap02/PasswordStrengthMeterTest.java#L29-L33

다섯 번째 테스트: 대문자를 포함하지 않고 나머지 조건을 충족하는 경우

https://github.com/2jigoo/BookStudy-StartTdd/blob/8835e7dc407c890586826122bac9b956b1381610/src/test/java/chap02/PasswordStrengthMeterTest.java#L35-L38

여섯 번째 테스트: 길이가 8글자 이상인 조건만 충족하는 경우

https://github.com/2jigoo/BookStudy-StartTdd/blob/8835e7dc407c890586826122bac9b956b1381610/src/test/java/chap02/PasswordStrengthMeterTest.java#L40-L43

https://github.com/2jigoo/BookStudy-StartTdd/blob/8835e7dc407c890586826122bac9b956b1381610/src/main/java/chap02/PasswordStrengthMeter.java#L6-L10 if문끼리 모아보면 결국 두 로직을 구분해서 모으기 위함.

일곱 번째 테스트: 숫자 포함 조건만 충족하는 경우

https://github.com/2jigoo/BookStudy-StartTdd/blob/8835e7dc407c890586826122bac9b956b1381610/src/test/java/chap02/PasswordStrengthMeterTest.java#L45-L48

여덟 번째 테스트: 대문자 포함 조선만 충족하는 경우

https://github.com/2jigoo/BookStudy-StartTdd/blob/8835e7dc407c890586826122bac9b956b1381610/src/test/java/chap02/PasswordStrengthMeterTest.java#L50-L53

코드 정리: passwordStengthMeter() 메서드 리팩토링

https://github.com/2jigoo/BookStudy-StartTdd/blob/8835e7dc407c890586826122bac9b956b1381610/src/main/java/chap02/PasswordStrengthMeter.java#L3-L11 metCounts 값을 조건에 충족될 경우 증가 시켜 충족된 조건에 따라 암호강도를 확인할 수 있다.

아홉 번째 테스트:아무 조건도 충족하지 않은 경우

https://github.com/2jigoo/BookStudy-StartTdd/blob/8835e7dc407c890586826122bac9b956b1381610/src/test/java/chap02/PasswordStrengthMeterTest.java#L55-L58 if(metCounts <= 1) metCounts 값이 1보다 작을경우에도 WEAK를 반환하게 구현하면 된다.

코드 정리: 가독성 개선

https://github.com/2jigoo/BookStudy-StartTdd/blob/8835e7dc407c890586826122bac9b956b1381610/src/main/java/chap02/PasswordStrengthMeter.java#L30-L37 길이, 숫자 포함 여부, 대문자 포함 여부 규칙을 확인할 수 있는 getMetCriteriaCounts() 메서드를 만들어 가독성개선.

Chap.02 정리

암호검사기 기능을 TDD로 구현하는 예제를 보면서 TDD 개발 흐름을 알 수 있었다.

TDD 개발 흐름

  1. 테스트를 먼저 작성한다.
  2. 작성한 테스트를 통과하지 못하면 테스트를 통과할 만큼만 코드를 작성한다.
  3. 테스트를 통과한 뒤에는 개선할 코드가 있으면 리팩토링한다.
  4. 리팩토링을 수행한 뒤에는 다시 테스트를 실행해서 기존 기능이 망가지지 않았는지 확인한다.

image 이 과정을 반복하면서 점진적으로 기능을 완성해 나가는 것.