[TIL] test를 하고 개발을 하는 방법과 팀프로젝트
DB에서 upsert와 update를 따로 사용할때의 문제
prisma에서 upsert는 무거워서 db가 lock되어있는 시간이 있어 다른 사람이 이용하지 못할 수 있다.
update를 쓰면 db와의 통신이 2번 이뤄져야해서 길지만 그 사이에 lock이 풀린다.
상황에 따라 다르게 이용하면 될듯
mocha
TDD
개발자가 테스트코드를 먼저 작성하고 테스트로 검증된 코드로 개발을 시작하는 것, 즉 개발 > 테스트가 아닌 테스트 > 개발
'기능'테스트를 주 목적으로 작성
수행과정
1. 테스트 작성(Add Test)
2. 실패하는 테스트 실행 (Test Fails)
3. 코드 작성(Write Code)
4. 테스트 통과(Run Tests)
5. 리팩토링(Refactor)
BDD
사용자의 행위’를 기반으로 사용자 시나리오를 구성하여 테스트 케이스를 작성하고 개발을 진행하는 방식입니다.
사용자행위란? '사용자의 행위'는 기획자가 작성한 ‘요구사항’이나 ‘기획서’에 적혀 있는 내용 자체를 의미합니다.
‘행위’를 확인하기 위한 관점에서 작성
수행 과정
1. 요구사항 명세화
- 비즈니스 요구사항이나 기능 요구사항을 이해하고 분석하여 사용자의 행동을 중심으로 한 시나리오를 작성합니다. 이 과정에서는 도메인 특정 언어를 사용하여 비개발자도 이해할 수 있는 방식으로 시나리오를 명세화합니다.
2. 테스트 케이스 작성
- 작성된 시나리오를 기반으로 테스트 케이스를 작성합니다. 이때 테스트 케이스는 사용자의 행동 중심으로 작성되어야 합니다.
3. 테스트 수행
- 작성된 테스트 케이스를 수행합니다. 이때 테스트는 실패하게 됩니다. 왜냐하면 테스트 케이스에 따른 기능이 아직 구현되지 않았기 때문입니다.
4. 코드 구현
- 테스트 케이스를 통과시킬 수 있는 최소한의 코드를 구현합니다.
5. 테스트 확인
- 구현된 코드가 테스트 케이스를 통과하는지 확인합니다. 통과하지 못할 경우 코드를 수정하여 테스트를 통과하도록 합니다.
6. 리팩토링
- 코드를 개선하여 가독성을 높이고, 중복을 제거하며, 코드의 품질을 향상합니다.
시나리오 작성
다음과 같이 상호보완적으로 사용가능하며 BDD 사이클과 동시에 TDD 테스트로 통과해야 하나의 테스트 구조가 완료