반응형
암호 검사기 규칙
- 길이가 8글자 이상
- 0~9 사이의 숫자
- 대문자 포함
암호 검사기 평가 기준
- 3가지 규칙을 모두 충족하면 암호는 강함 - STRONG
- 2가지 규칙을 충족하면 암호는 보통 - NORMAL
- 1개 이하의 규칙을 충족하면 암호는 약함 - WEAK
암호 검사기 규칙 조합의 경우의 수
- 모든 항목을 충족하는 경우 - STRONG
- 길이가 8글자 미만이고 모든 항목을 충족하는 경우 - NORMAL
- 길이가 8글자 이상이고 나머지 항목은 충족하지 않는 경우 - WEAK
- 숫자는 없고 나머지 항목은 충족하는 경우 - NORMAL
- 숫자는 있고 나머지 항목은 충족하지 않는 경우 - WEAK
- 대문자가 없고 나머지 항목은 충족하는 경우 - NORMAL
- 대문자가 있고 나머지 항목은 충족하지 않는 경우 - WEAK
- 모든 항목을 충족하지 않는 경우
Step0: 테스트 클래스 생성하기
Step1: [RED] 첫 번째로 진행할 Test Case 선택하기
- TDD에서 첫 번째 테스트는 매우 중요하다
- TDD를 점진적으로 기능을 확장해 가는 방식으로 개발을 하는데 첫 번째 테스트부터 모든 기능을 구현해야하는 Test Case를 선택한다면 이후 진행 과정이 순탄하게 흘러가지 않는다
- 첫 번째 Test Case를 선택할 때 기준은 **구현하기 가장 쉬운 상황**이나 **가장 예외적인 상황**을 선택
- 그래서 “모든 조건을 충족”하는 Test Case 선택
Step1-2: [GREEN] 실패 테스트 코드 고치기
- 첫 번째로 “실패 테스트”를 실행할 수 있도록 오류를 해결한다
- 이 때 가장 중요한 점이 테스트를 통과시킬 만큼의 코드만 작성해야 한다
- 두 번째로 오류라 모두 해결했다면 Test Case를 통과할 수 있도록 로직 작성하기
- 로직을 작성할 때는 1차원적으로 가장 쉬운 간단한 방법을 선택해야 한다
Step1-3: [YELLOW; REFACTOR] 코드 구조 확인하기
- 리팩토링이 필요한 부분이 보이면?
- 리팩토링을 진행하고 그렇지 않다면 남아있는 테스트 항목 중 하나를 선택해서 새로운 테스트 작성
Step2-1: [RED] 실패하는 테스트 작성하기
- 길이만 8글자 미만이고 나머지 조건은 충족”하는 케이스
it("Test Case: 길이가 8자 미만이고 모두 충족하는 경우", () => {
const meter = new PasswordStrengthCheck();
const result = meter.meter("aA1!aa"); // Expected: NORMAL
expect(result).toBe("NORMAL");
});
Step2-2: [GREEN] 테스트 성공시키기 로직 수정
class PasswordStrengthCheck {
meter(password) {
// Step 2: [GREEN] + [YELLOW] 단계를 성공시키기 위한 코드
if (password.length < 8) {
return PasswordStrength.NORMAL;
}
return PasswordStrength.STRONG;
}
}
반응형
'TDD' 카테고리의 다른 글
| Jest 많이 썼던 내용들 정리 (1) (5) | 2024.10.24 |
|---|---|
| 간단한 게시판 만들면서 TDD 맛보기 (POST 요청) (1) | 2024.09.01 |
| Jest; JUnit 어노테이션을 참고한 (0) | 2024.08.31 |
| 단위 테스트: 기본 개념 (0) | 2024.08.31 |
| 테스트의 개념과 중요성 (0) | 2024.08.31 |