📋

1. 단위 테스트 (Unit Test) 알아보기

요청 이미지
(단위 테스트)(단위 테스트)
(단위 테스트)
단위 테스트단위 테스트
단위 테스트
지금까지 우리는 코드가 정상적으로 동작하는지 확인하기 위해 코드 전체를 실행하거나 직접 함수를 호출하며 오류가 발생하는지 확인해야 했습니다. 코드의 양이 작은 경우에는 크게 문제가 없을 수도 있지만, 복잡해질수록 수동으로 테스트하는데 시간이 오래 걸리고 빠뜨릴 수 있는 부분이 생길 수 있습니다.
단위 테스트(및 유닛 테스트)는 코드의 일부분을 독립적으로 실행시켜 정상적으로 동작하는 지 검증하는 테스트입니다.
함수마다 테스트 케이스를 만들어, 값을 입력한 후 예상되는 실행결과가 반환되는 지 알려줍니다.
 
Colab 노트북을 만들어 직접 살펴봅시다.

테스트 함수

def add(a, b): return a + b

테스트 케이스

def test_add(): assert add(3, 5) == 8
assert는 영단어로 '주장' 이라는 뜻을 가지고 있습니다. 가정 설정문이라고도 불리는데, assert 뒤에 따라오는 코드가 True가 아니라면 AssesertionError 를 발생시킵니다.
여기서는 3 더하기 5가 8인지 동등 연산자(==)로 비교해 맞다면 True를 반환하기 때문에 오류 없이 정상적으로 실행되어야 합니다.

테스트 실행

test_add() print("테스트 성공")
🔨
전체 코드 실행: Runtime -> Run all
이렇게 단위 테스트를 작성하면 코드의 문제점을 빠르게 발견할 수 있습니다. 코드를 리팩토링하거나 새로운 부분을 추가하더라도 테스트만 돌리면 작동 여부를 확인할 수 있기 때문에 디버깅이 쉬워집니다.
그러나 아직 덧셈 함수를 위한 모든 테스트를 적지 않았습니다. 테스트가 효과적이기 위해서는 다양한 케이스를 시험해보아야 합니다. 지금 막 작성한 테스트는 두 개의 인자가 모두 양수인 정수일 때만 테스트했기 때문에 다른 자료형을 전달했을 때도 작동하는지 확인해 봅시다.
 
새로운 블록을 생성하고 소수점이 있는 float형 숫자와 정수를 더해서 테스트하는 케이스를 작성해 봅시다.
def test_add_float_and_int():  assert add(5, 8.0002) == 13.0002
이 코드는 int(정수)형인 5와 float(부동소수점)형인 8.0002를 더하면 13.0002라는 결과값이 나오는지 테스트합니다.
 
아래의 테스트 실행 블록으로 내려가 test_add()아래에 지금 막 작성한 test_add_float_and_int()를 추가한 후 전체 코드를 다시 실행해 봅시다.
🔨
전체 코드 실행: Runtime -> Run all
테스트 함수를 적을 때 자세한 함수명을 적는 것이 매우 중요합니다. 그냥 단순히 test1은 충분하지 않습니다. 코드 가독성 등 여러 이유가 있지만, 테스트 할 때는 특히 더 중요한 이유가 바로 테스트가 실패할 시 함수명이 표기되기 때문에 함수명을 통해 오류가 발생한 곳을 빠르게 찾을 수 있기 때문입니다.
처음 적은 test_add() 함수명을 자세하게 변경해봅시다. 저는 test_add_int_and_int() 로 변경해 보겠습니다. 아래의 테스트 실행 블록에도 변경된 이름을 적용해봅니다.
이제 네이밍의 중요성을 확인해 봅시다. 일부러 틀린 결과값으로 변경해 오류를 발생시키고 테스트를 실행해보면 오류를 확인해 보면 함수명이 노출되기 때문에 일어나는 오류를 정확히 파악할 수 있는 것을 정확하게 확인할 수 있습니다.