프로그래밍/Python

[Python 강의] 13강 - 테스트와 디버깅 기법

월횽 2024. 10. 16. 06:30
728x90
반응형
SMALL

안녕하세요! 그레이 해커 월횽입니다. 오늘은 Python에서 코드를 테스트하고 디버깅하는 방법에 대해 알아보겠습니다. 테스트는 코드가 올바르게 동작하는지 확인하는 과정이며, 디버깅은 코드에서 발생한 오류나 문제를 찾아 해결하는 과정입니다. 두 가지는 모두 안정적인 소프트웨어 개발에 필수적인 단계입니다.

 

 

1. 테스트의 중요성

테스트는 코드가 예상대로 동작하는지를 확인하는 중요한 과정입니다. 특히, 코드가 복잡해질수록 작은 변경에도 문제가 발생할 수 있으므로, 테스트를 통해 이러한 문제를 사전에 발견할 수 있습니다.

 

테스트의 종류

· 단위 테스트 (Unit Test): 개별 함수나 모듈을 테스트
· 통합 테스트 (Integration Test): 여러 모듈이 통합된 시스템을 테스트
· 종단 간 테스트 (End-to-End Test): 사용자 관점에서 전체 시스템을 테스트

 

 

2. 단위 테스트 (Unit Test)

단위 테스트는 개별 함수나 메서드가 정상적으로 동작하는지를 테스트합니다. Python에서 unittest 모듈을 사용하면 단위 테스트를 쉽게 작성할 수 있습니다.

 

단위 테스트 예시

import unittest

# 테스트할 함수
def add(x, y):
    return x + y

class TestMathFunctions(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(2, 3), 5)
        self.assertEqual(add(-1, 1), 0)

if __name__ == '__main__':
    unittest.main()

 

반응형

출력

.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

 

 

3. 테스트 프레임워크: unittest와 pytest

· unittest: Python 내장 모듈로, 단위 테스트를 지원합니다.
· pytest: 더 간결하고 강력한 테스트 프레임워크로, 확장성과 유연성을 제공합니다.

 

pytest로 테스트 작성

def add(x, y):
    return x + y

def test_add():
    assert add(2, 3) == 5
    assert add(-1, 1) == 0

 

728x90

pytest를 사용하여 테스트를 실행하려면 pytest 명령어로 테스트 파일을 실행하면 됩니다.

pytest test_file.py

 

 

4. 디버깅 (Debugging)

디버깅은 코드에서 발생하는 버그나 오류를 추적하고 해결하는 과정입니다. Python은 디버깅을 돕는 다양한 도구를 제공합니다.

 

주요 디버깅 기법

· print() 문: 가장 기본적인 방법으로, 변수를 출력하여 상태를 확인
· assert 문: 조건이 참이 아닐 경우 오류를 발생시켜 코드의 상태를 확인
· pdb (Python Debugger): Python의 내장 디버거로, 코드 실행을 중단하고 변수 상태를 실시간으로 확인할 수 있습니다.

SMALL

pdb 사용법

import pdb

def divide(a, b):
    pdb.set_trace()  # 디버깅 중단점 설정
    return a / b

divide(10, 2)

 

pdb가 실행되면 코드를 한 줄씩 실행하거나, 변수 값을 확인할 수 있습니다.

 

· n: 다음 줄로 이동
· c: 코드 실행 계속
· q: 디버깅 종료

 

 

5. 예외 처리와 디버깅

코드를 작성할 때 발생할 수 있는 예외 상황을 처리하는 것도 중요합니다. try, except 블록을 사용하여 예상치 못한 오류에 대비할 수 있습니다.

 

예외 처리 예시

def divide(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        print("0으로 나눌 수 없습니다.")
        return None

print(divide(10, 0))  # 0으로 나눌 수 없습니다. 출력

 

 

 

6. 로깅 (Logging)

로깅은 실행 중 발생한 정보를 기록하여 나중에 분석할 수 있게 도와줍니다. Python의 logging 모듈을 사용하면 다양한 로그 메시지를 남길 수 있습니다.

로깅 사용 예시

import logging

# 로그 설정
logging.basicConfig(level=logging.INFO)

def add(x, y):
    logging.info(f"Adding {x} and {y}")
    return x + y

add(2, 3)

 

 

출력

INFO:root:Adding 2 and 3

 

 

 

7. 테스트와 디버깅 정리

· 테스트는 코드의 올바른 동작을 보장하고, 유지 보수성을 높입니다.
· 단위 테스트는 작은 단위의 코드를 테스트하는 좋은 방법입니다.
· 디버깅은 코드 오류를 찾고 해결하는 필수적인 과정입니다.
· 로깅을 사용하여 코드 실행 중의 정보를 기록하고 분석할 수 있습니다.

 

다음 시간에는 Python에서 활용할 수 있는 다양한 데이터 분석 기법에 대해 알아보겠습니다!

 

 

 

 

 

- 이전 수업 목록

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST