-
테스트하기 쉬운 코드로 개발하기 - 정진욱세미나, 영상 요약정리 2022. 10. 2. 00:01728x90
https://www.youtube.com/watch?v=Cz_a2gQp63c
정진욱님의 테스트하기 쉬운 코드로 개발하기를 요약한 내용입니다.
다음 글도 정진욱님이 작성하신 글로 읽어보셔도 좋을 것 같습니다 세미나 내용과 동일
http://jwchung.github.io/testing-oh-my
테스트하기 쉬운 코드란?
1. 같은 입력에 항상 같은 결과를 반환하는 코드
예를 들어 랜덤값을 반환하는 메서드는 테스트하기 어렵습니다.
또한 DB에서 조회할때 만약 사용자가 삭제될 수 있기 때문에 이런 경우에는 테스트하기 어렵습니다.
2. 외부 상태를 변경하지 않는 코드(No side effects)
예를 들어 결과값을 출력하는 코드는 화면의 결괏값을 출력하기 때문에 테스트하기 어렵습니다.
컨퍼런스 등록 단계
1. 유효성 검사(이메일에 @가 포함되는지, )
2. 이미 등록된 좌석 수 DB에서 읽어오기
3. 요청한 좌석 수가 확보 가능한지 판단 (전체 좌석 수 - 등록된 자석 수 = 잔여 좌석수)
4. 등록 정보 저장
5. HTTP 결과 반환
위의 5단계에서 테스트하기 어려운 단계는 2번과 4번입니다.
2번은 항상 같은 결과를 반환하지 않습니다.
4번은 외부 상태를 변경하기 때문에 테스트하기 힘든 코드입니다.
테스트하기 힘든 코드를 테스트하기 쉽게 변경하기
같은 메서드에 테스트하기 쉬운 코드와 테스트하기 어려운 코드가 존재하게 되면 해당 메서드는 테스트하기 어려운 메서드가 됩니다.
따라서 테스트하기 쉬운 코드와 어려운 코드를 분리해야 합니다.
그러면 이 두 부류의 코드는 어디서 만나야 할까요?
최대한 가장자리에서 만나게 해야 합니다.
이유는 위에서 보았듯이 테스트하기 어려운 코드가 메서드 안에 존재하면 테스트하기 어려운 코드를 포함하는 메서드 또한 테스트하기 어려운 메서드가 되기 때문입니다.
그러면 두 부류 코드가 만나는 가장자리는 어떻게 테스트해야 할까요?
수동 테스트(POST MAN 등)
자동 테스트(Mock)
너무 자동화에 얽매일 필요는 없습니다.
이를 요약하면 다음과 같습니다
1. 테스트하기 쉬운 코드와 어려운 코드를 분리
2. 분리한 두 코드는 최대한 가장자리에서 만나게 합니다.
3. 자동 테스트의 비용이 크다면 수동 테스트를 진행합니다. 이때 자동테스트는 Mock을 활용하여 수행할 수 있습니다.
'세미나, 영상 요약정리' 카테고리의 다른 글
어느 날 고민 많은 주니어 개발자가 찾아왔다 - 김영한 (0) 2022.10.10 개편의 기술 - 배달 플랫폼에서 겪은 N번의 개편 경험기 - 권용근 (0) 2022.10.09 [마틴 파울러] 소프트웨어 아키텍처의 중요성 (한글 자막) (0) 2022.10.01 어디 가서 코틀린 매우 알은 체하기! - 제이슨 (0) 2022.09.27 카카오톡의 서버사이드 코틀린 - 유용하 (0) 2022.09.24