본문 바로가기

golang3

Golang과 함께하는 테스트 여정 - 통합 테스트 위 글에서 단위 테스트에 대하여 이야기 해보았습니다. 하지만, 테스트는 단위 테스트만으로 완벽하게 보장되지 않습니다. 예를 들면 어떠한 모듈을 모킹해둔 상태에서 그 모듈을 변경한다면 잘못되었지만 테스트는 잘 돌아가는 위양성 문제가 발생할 수 있으며, 회귀 테스트가 보장되지 않을 수 있습니다. 이를 보장하기 위해서는 다양한 모듈이 참여하는 통합 테스트가 필요한데요. Golang으로 통합 테스트를 작성하는 과정을 설명해보겠습니다. Pre-Condition 팀에서는 DI를 편하게 사용하기 위하여 fx라는 의존성 주입 프레임워크를 사용합니다. 여기서 만들어주는 것을 기반으로 글을 진행합니다. 생성의 책임을 위임한 서버 띄우기 최초에 테스트 환경을 어떻게 구축할지 고민을 많이 했는데요. 결론은 서버를 띄워서 ap.. 2023. 5. 21.
속성 기반 테스트 in Golang (Property Based Testing) 대체적으로 개발할 때, 우리는 예제를 기반으로 테스트 하는 것을 선호합니다. 예제 기반 테스트는 앞선 설명과 같이 테스트 케이스를 예제를 통해 생성하는 방식으로, 특정 입력에 대해 기대되는 출력 값을 예제로 제공하고, 테스트 대상 코드의 출력 값이 기대되는 값과 일치하는지 여부를 검증합니다. 이 방식은 테스트 케이스를 생성하기 쉽고, 이해하기 쉽기 때문에 많이 사용되어 왔습니다. 아래와 같이 add라는 함수를 만들고 사례를 기반으로 테스트를 진행해보겠습니다. // 두 개의 정수를 받아서 두 수의 합을 반환하는 함수 func add(a, b int) int { return a + b } // test func TestAdd(t *testing.T) { tests := []struct { a, b, expe.. 2023. 3. 26.
Datadog APM with Golang 1 - 배경 이야기 원활한 서비스 운영을 위하여 트레이싱 툴은 선택이 아닌 필수라고 생각합니다. 그런 만큼 저희 회사 또한 트레이싱 툴을 사용하는데요. 바로 datadog이라는 SaaS 툴을 사용하고 있습니다. 이 중 어플리케이션 성능을 모니터링해주는 APM 기능을 정말 잘 사용하고 있습니다. 이 datadog APM을 Java환경에서 사용할 때는 고민이 적었습니다. 에이전트부터 트레이싱까지 아래와 같이 pre-build 된 jar 파일을 끼워 넣어서 해결할 수 있었기 때문입니다. java -javaagent:/path/to/dd-java-agent.jar \ -Ddd.logs.injection=true \ -jar path/to/your/app.jar 이와 유사한 환경을 기대하며 golang datadog 세팅을 시작한 .. 2023. 2. 25.