Good programmer 5 - 테스트

in #kr-dev7 years ago (edited)

원래 코드는 잘 동작합니다만,
https://steemit.com/kr/@kimdy/47saua

로직과 입출력이 섞여있어서 한번에 코드를 수정하기가 쉽지 않습니다.

실전에서는 이런 코드 개선을 해야할 필요성이 많습니다.
그러기 위해서는 우선 테스트 프로그램이 필요합니다.
아직은 프로그램이 함수로 떨어져 있지 않으므로,
Unit test 를 할 단계를 아니고 Black box Test / Acceptance Test 를 해야합니다.

asciicast

asciinema 라는 도구를 사용해서 터미날 레코딩을 해 보았습니다.
좀 더 이해하기가 쉽겠지요?

여기까지 하면 거의 다 된 거나 다름 없습니다.

이후 숫자들이 중복되지 않아야 하므로,

int buffer[100];

int test_buffer(int upper) {
    for ( int i = 1; i <= upper; i++) {
        for ( int j = i+1; j <= upper; j++) {
            if ( buffer[i] == buffer[j])
                return 0;
        }
    }
    return 1;
}

와 같은 테스트 문을 만들고,
결과 0, 1 에 따라서 Failure, Pass 를 출력하면 됩니다.

한번만 해서는 불안하다면, 테스트를 충분히 많이 하도록 스크립트를 작성하면 됩니다.

이제 안전하게 코드를 수정할 준비가 되었습니다.

진짜 다음번에는 마지막으로 asciinema 로 리팩토링을 하고 끝내야 할 것 같네요...