Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 트라이
- 알고리즘
- 크레인 인형뽑기 게임
- 징검다리 건너기
- Python
- 튜플
- 가사 검색
- 카카오 인턴
- 티스토리 open api
- 프로그래머스
- Tistory
- trie
- pycon
- 보행자 천국
- bulk update
- Spring Boot
- jdbc
- 불량 사용자
- CleanCode
- Open API
- 티스토리
- 호텔 방 배정
- 트라이 #trie #알고리즘
Archives
- Today
- Total
택시짱의 개발 노트
pycon - 우아하게 준비하는 테스트와 리팩토링 ( 테스트 ) 본문
아래의 글은 PyCon을 참고 하였습니다.
!https://www.youtube.com/watch?v=S5SY2pkmOy0&t=382s
잠깐, 테스트 코드 작성이 정말 필요한가요?
- 생각보다 실제 환경에서 동작하는 코드는 복잡하다.
- 하나의 가장 적은 단위의 코드를 추가하거나 수정했다고 가정한다.
- 만약 그 코드가 문제가 있으면 그건 정말로 큰 부작용(Side-Effect)를 발생시킨다.
- 특정 조건에서만 발생하는 버그로 인해, 일부는 동작하고 일부는 동작하지 않는다면 사람이 검수로 버그를 발견하기도 힘들어진다.
- 이렇게 되면 코드 하나를 추가하는 것이 두려워지고 신뢰할 수 없게 된다.
- 테스트 코드는 이런 기능 추가와 수정이 발생할 때 발생할 수 있는 사이드 이펙트 탐지를 돕고 코드를 신뢰할 수 잏게 만들어준다.
일반적으로 고려하는 테스트
- 단위 테스트 (Unit Test)
- method, function을 테스트 세부적으로 테스트 할 수 있는 방법
- 함수와 메서드의 최소 단위와 각 비즈니스 코드의 테스트 등 일반적인 테스트 코드들에 해당
- 통합 테스트 (Intergration Test)
- DB, 이미 통합된 코드를 테스트
- 각종 함수와 메서드가 모여진 코드의 잡합을 전체적으로 테스트 실제 사용하는 사용자 기능 위주의 테스트 가능
- E2E 테스트 (End-To-End Test)
- UI 관점에서 실제로 테스트 하는 방법 (Form에 데이터를 직접 입력 한다거나, 등등 사용자 입장에서 테스트 하는)
- 사용자가 실제로 사용하는 UI와 같은 복잡한 환경에서 테스트 코드와 관계없이, 사용자의 OS와 레지스트리, 메모리 등에 의한 모든 결함 탐지
테스트 코드 별 특징
- White Box Test
- 코드의 내부를 들여다보고 코드를 테스트하는 방식
- 구문 커버리지 (커버리지 Coverage)
- 조건/분기 커버리지 (커버리지 Coverage)
- MC/DB 커버리지 (커버리지 Coverage)
- Black Box Test
- 코드의 내부를 모르는 상태에서 입력 값과 출력 값으로 코드를 테스트하는 방식
- 동등 클래스 분할 (테스트 케이스 TC)
- 경계 값 분석 (테스트 케이스 TC)
순수 함수 (Pure Function)
__VERSION__ = '0.0.1'
def sum(a, b):
return a + b
def get_version():
return __VERSION__
함수에 제공된 입력 값에 의해 출력 값이 결정되는 함수
입력 값 외에 어떤 상태나, 환경에 의해서 출력 값이 결정되지 않는 함수이기 때문에 테스트를 진행하기에 적절 하다.
단위 테스트 assert 함수들
assertEqual - 두 값의 일치 여부를 검증
assNotEqual - 두 값의 불일치 여부를 검증
assertTrue - 값이 참임을 검증
assertFalse - 값이 거짓임을 검증
assertIs - 두 값의 참조 일치 여부를 검증
assertIsNot - 두 값의 참조 불일치 여부를 검증
assertIsNotNone - 값이 None이 아님을 검증
assertIn - 값의 포함 관계를 검증
assertNotIn - 값의 비포함 관계를 검증
assertIsInstance - 값의 인스턴스 타입 일치 여부를 검증
assertNotIsInstance - 값의 인스턴스 타팁 불일치 여부를 검증
unittest 모듈에서 제공하는 주요 메소드들
단위 테스트를 작성할 때 위와 같은 검증 메소드를 사용할 수 있다.
반응형
'python' 카테고리의 다른 글
python decorator의 실행 순서는 어떻게? (2) | 2022.02.20 |
---|---|
classmethod vs staticmethod (0) | 2022.01.16 |
pycon - 우아하게 준비하는 테스트와 리팩토링 ( 클린코드 ) (0) | 2021.07.24 |
Python 기본 개념 공부.. (0) | 2020.11.22 |
python으로 Trie 구현 with defaultdict (0) | 2020.09.08 |
Comments