ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Unit test 시 고려해야 할 사항
    Programming/Debug 2023. 3. 13. 21:30

    업데이트 버전 배포를 앞두고, Unit test를 새로 설계할 필요성을 느꼈다.

    기왕 새로 만드는 김에 Unit test에서 고려할 사항에 대해 차근차근 짚어보기로 했다.

    아래는 chatGPT에게 unit test에서 고려할 사항을 질문한 답변이고, 색깔로 표시된 문장은 나의 추가적인 생각이다.

     

     

     

     

    💻💬

    Unit test는 개발자가 작성한 코드의 동작을 검증하는데 사용되는 테스트입니다. 코드를 변경하거나 수정할 때, 기존 코드가 제대로 작동하는지 검증할 때, 또는 새로운 코드가 올바르게 작동하는지 확인할 때 Unit test를 사용할 수 있습니다. 다음은 Unit test를 작성할 때 고려해야 할 사항입니다.

     

     

    1. 테스트 대상 모듈 결정

    Unit test를 작성할 때는 테스트 대상 모듈을 먼저 결정해야 합니다. 모듈은 작은 단위의 코드이며, 테스트 대상 모듈을 선택할 때는 모듈이 다른 모듈과 어떻게 상호작용하는지, 모듈이 외부 종속성에 의존하는지 등을 고려해야 합니다.

     

    > 테스트 대상 모듈도 테스트 해야하지만, 전체적인 프로그램도 원래대로 돌아가는지 확인해야 한다.

    잘되던 것은 그대로 잘 되는지.

    추가한 것은 의도한 대로 동작 하는지.

     

     

    2. 테스트 케이스 설계

    테스트 케이스는 코드의 동작을 검증하는데 사용되는 시나리오입니다. 테스트 케이스를 설계할 때는 모든 코드 경로를 고려해야 하며, 입력값과 예상 결과를 고려하여 작성해야 합니다. 또한, 에러 케이스도 고려해야 하며, 모든 가능한 입력값에 대해 에러 처리를 정확하게 수행하는지 확인해야 합니다.

     

    > 나의 경우 비디오 영상을 처리하는 알고리즘 프로그램을 개발하였기 때문에 비디오 소스의 속성값에 따라 동작이 제대로 되는지를 확인해야 한다.

    예를 들어 영상 해상도가 UHD, FHD로 들어왔을 때

    fps값에 따라, 코덱에 따라...

    여러가지 변수가 존재하므로 그 변수들에 대해 각각 테스트 할 수 있도록 테스트 케이스에 반영한다.

     

     

     

    3. 테스트 코드 작성

    테스트 코드는 실제 코드와 같은 구조를 가지며, 테스트 케이스를 실행하는 코드입니다. 테스트 코드를 작성할 때는 모든 가능한 입력값을 고려하여 작성해야 하며, 예상 결과와 실제 결과가 일치하는지 검증하는 코드를 작성해야 합니다. 또한, 예상 결과와 실제 결과가 다른 경우에는 에러 메시지를 출력하도록 작성해야 합니다.

     

    > 디버깅 하면서 절실히 느꼈다. 버그나 이슈가 있을 때 바로바로 테스트를 하기 위해서 테스트 코드를 빨리 전환 할 수 있어야 한다.

    그리고 빌드해 놓은 파일들은 차곡차곡 정리해서 예전 버전에 대한 테스트가 필요한 경우에 대비하자.

     

    4. 테스트 실행 및 결과 분석

    테스트 코드를 작성하고 실행한 후에는 결과를 분석하여 문제가 있는 코드를 파악해야 합니다. 결과를 분석할 때는 테스트 케이스가 실패한 이유를 파악하고, 수정할 코드를 확인하여 수정 작업을 수행해야 합니다.

     

    > 나는 unit test 목록을 엑셀로 관리하고 있다. 결과도 같이 표에 정리하고, 성능 측정까지 한다.

    unit test를 하다가 결과값이 이상이 있다면 바로 확인한다.

     

    5. 자동화

    많은 테스트 케이스를 작성해야 할 경우, 테스트를 자동화하여 실행하는 것이 효율적입니다. 자동화된 테스트는 자동으로 실행되며, 결과를 분석하고 문제를 파악하는 시간을 줄일 수 있습니다. 테스트 자동화 도구를 사용하면 더욱 효율적으로 테스트를 수행할 수 있습니다.

     

     >> 나에게 필요한 부분!! 팀장님도 강조하셨다. 

    여러차례의 테스트를 위해 한번만 딱 누르면 자동으로 테스트 케이스들이 실행되는....!

    나는 애초에 이렇게 설계하지 못해서 테스트할 때 살짝 번거로움을 느끼는 중이다.

    그래도 여러번의 유닛테스트를 하면서 나름의 노하우가 쌓이고 있다.

     

    댓글

Designed by Tistory.