728x90
반응형
SMALL
단위 테스트(Unit Test)와 통합 테스트(Integration Test)
소프트웨어 개발에서 테스트는 프로그램이 잘 작동하는지 확인하는 중요한 단계입니다. 여기에서 많이 쓰이는 두 가지 테스트 종류를 살펴볼게요.
1. 단위 테스트(Unit Test)
- 단위 테스트란?
- 프로그램의 작은 단위(한 함수나 메서드)가 예상대로 동작하는지 확인하는 테스트입니다.
- 단위 테스트는 "작은 조각"을 확인하는 데 초점이 맞춰져 있어서 독립적으로 수행됩니다.
- 왜 필요한가요?
- 코드가 잘 작동하는지 빠르게 확인할 수 있습니다.
- 문제가 생기면 바로 해당 부분을 고칠 수 있습니다.
- 쉬운 예로 비유하면?
- 컴퓨터 키보드의 한 키(예: A)가 제대로 눌리는지 테스트하는 것과 비슷합니다. 한 번에 키보드 전체를 테스트하지 않고, A키 하나만 확인합니다.
예시 코드 (Python)
# 테스트할 코드: 간단한 계산기 함수
def add(a, b):
return a + b
def subtract(a, b):
return a - b
# 단위 테스트
import unittest
class TestCalculator(unittest.TestCase):
def test_add(self):
self.assertEqual(add(2, 3), 5) # 2 + 3 = 5
self.assertEqual(add(-1, 1), 0) # -1 + 1 = 0
def test_subtract(self):
self.assertEqual(subtract(5, 3), 2) # 5 - 3 = 2
self.assertEqual(subtract(0, 5), -5) # 0 - 5 = -5
if __name__ == '__main__':
unittest.main()
설명
add
와subtract
함수는 각각 더하기와 빼기를 수행합니다.TestCalculator
는
테스트 클래스
입니다.
test_add
와test_subtract
는 각각 함수가 올바르게 작동하는지 확인합니다.
테스트를 실행하면 함수가 예상대로 작동하는지 결과를 알려줍니다.
2. 통합 테스트(Integration Test)
- 통합 테스트란?
- 여러 개의 작은 단위(함수, 모듈)를 합쳤을 때 잘 작동하는지 확인하는 테스트입니다.
- 서로 연결된 부분들이 문제가 없는지 확인합니다.
- 왜 필요한가요?
- 단위 테스트를 모두 통과했더라도, 여러 부분이 합쳐지면 예상치 못한 문제가 생길 수 있습니다.
- 예를 들어, A 함수는 잘 작동하고, B 함수도 잘 작동하지만, 두 함수를 함께 사용하면 오류가 날 수 있습니다.
- 쉬운 예로 비유하면?
- 컴퓨터 키보드의 모든 키를 합쳐서 "전체 키보드"가 잘 작동하는지 테스트하는 것과 비슷합니다.
예시 코드 (Python)
# 테스트할 코드: 간단한 사용자 인증 시스템
def login(username, password):
if username == "admin" and password == "1234":
return "Login successful"
return "Login failed"
def access_dashboard(user_role):
if user_role == "admin":
return "Access granted"
return "Access denied"
# 통합 테스트
def test_integration():
# Step 1: 로그인 테스트
login_result = login("admin", "1234")
assert login_result == "Login successful", "Login failed when it should have succeeded"
# Step 2: 대시보드 접근 테스트 (로그인 성공 후)
dashboard_result = access_dashboard("admin")
assert dashboard_result == "Access granted", "Admin access failed when it should have succeeded"
# 실행
if __name__ == '__main__':
try:
test_integration()
print("Integration test passed!")
except AssertionError as e:
print(f"Integration test failed: {e}")
설명
login
함수는 로그인 기능을 제공합니다.access_dashboard
함수는 사용자가 관리자(admin)인지 확인하고 대시보드에 접근을 허용합니다.통합 테스트 과정
:
- 먼저, 로그인 테스트(
login
)를 실행합니다. - 로그인 성공 결과를 바탕으로 대시보드 접근 테스트(
access_dashboard
)를 실행합니다. - 모든 과정이 문제없이 진행되면 테스트가 성공했다고 판단합니다.
- 먼저, 로그인 테스트(
단위 테스트 vs 통합 테스트
구분 | 단위 테스트(Unit Test) | 통합 테스트(Integration Test) |
---|---|---|
테스트 범위 | 하나의 함수/메서드 | 여러 함수/모듈의 조합 |
목적 | 작은 단위가 올바르게 동작하는지 확인 | 여러 단위가 함께 잘 동작하는지 확인 |
문제 발견 시 | 특정 코드 조각의 문제를 쉽게 찾을 수 있음 | 어떤 조합에서 문제가 발생했는지 확인 |
실행 속도 | 빠름 | 상대적으로 느림 |
비유 | 키보드의 A키 하나 테스트 | 키보드 전체 테스트 |
결론
단위 테스트와 통합 테스트는 각각 다른 목적을 가지고 있습니다.
- 단위 테스트는 코드를 작게 나눠서 문제를 빠르게 찾는 데 유리합니다.
- 통합 테스트는 전체 시스템이 올바르게 작동하는지 확인하는 데 중요합니다.
두 테스트를 함께 사용하면, 코드 품질을 높이고 예상치 못한 문제를 줄일 수 있습니다!
반응형
SMALL
'소프트웨어 개발 및 설계' 카테고리의 다른 글
테스트 자동화 : 예시 코드 (0) | 2024.12.13 |
---|---|
소프트웨어 설계 원칙 (0) | 2024.12.05 |
소프트웨어 개발 방법론 (0) | 2024.12.05 |