- toc {:toc}
Unittest
처음 막상 테스트 코드를 만들어보려 했지만 함수에 대한 계획없이 주먹구구식으로 만든 함수를 보고 테스트코드를 짜려다보니 어디서부터 손을 대야할지 막막한 심정이 먼저 들었다. 때문에 간단한 계산 함수를 대상으로 테스트 코드를 작성해봤다.
자동매매 프로그램을 제작하면서 사용했던 함수들이다.
- tdelta2year : 가지고 있는 데이터의 기간이 어느정도인지 반환한다.
- mdd : 수익률의 최대낙폭을 계산한다.
- win_rate : 수익이 나면 1, 손실이 나면 0인 리스트를 입력으로 받아 승률을 반환한다.
assertEqual을 사용하여 결과값을 비교하는 테스트 함수를 작성했다.
mdd, win_rate 함수의 반환값을 round() 함수를 사용해 소수점 둘째 자리까지만 표현했는데 테스트코드를 작성하기 이전에는 round() 함수를 사용하지 않았다. 그렇다보니 함수의 계산식들이 비율을 구하는 계산식이기 때문에 나눗셈으로 인해 0.6666666666667과 같이 정확히 같지 않은 경우가 발생했다.
이를 round() 함수를 통해 해결하려 했는데 Unittest의 assertAlmostEqual을 통해서 해결할 수 있었다.
사실 너무나도 간단한 테스트코드를 만들었지만 테스트코드를 만들면서 함수의 목적, 어떻게 사용될 것인가, 어떤 반환값을 도출할 것인가에 대해 미리 설계하고 제작하는 것의 중요성을 느꼈다. 이렇게 함수의 목적, 출력에 대한 이해를 나타내고 테스트하는 역할을 지닌 코드이기 때문에 테스트 코드를 통해 문서화를 진행한다는 의미를 조금이나마 알게 되었다.