What is TDD?
선 개발 후 테스트 방식이 아닌 선 테스트 후 개발 방식의 프로그래밍 방법
자동화된 테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식
TDD Cycle
- Add a test
- requirement를 만족하기 위한 test code를 작성하는 단계
- 코드를 짜고 테스트하는 것보다 테스트 코드를 구현한 뒤에 코드를 짬으로써 requirement에 더 집중할 수 있음
- Run all tests and check fails
- 코드를 테스트해서 fail이 나오는 것을 확인해라
- 왜냐하면 아직 기술 구현을 안했는데 fail나오는 것은 당연
- fail이 나와야 test code를 잘짠거임
- Write the codes
- 새로운 test만 "어떻게든" pass 코드를 짬
- 코드의 효율성 같은 건 따지지말고 더도 말고 덜도 말고 test만 통과하는 코드를 짜야함
- Run tests
- 통과할 때까지 코드짜세요
- Refactor code
- 여기서 코드를 더 예쁘게 만들어야함(변수 이름 통일, 중복 삭제, 가독성, 지속성)
- test 통과하기 위한 위치 말고 원래 위치로 가야함
- Repeat
- 작은 사이즈로 cycle을 돌기
- 남의 라이브러리도 test code를 짜서 확인해보기
TDD Principle
- unit은 class나 group이어야 함
- 작은 unit => reduced debugging effort, self-documenting tests
TDD in Python
Test Case: 입력을 주고 결과를 확인할 딱 하나!
Test Suite: test case의 집합
Test runner: 실행을 조정하고 사용자에게 결과를 제공하는 요소
unittest & unittest.mock
mock objects: 진짜 objects 처럼 행동하는 가짜 object
unittest.mock을 통해 진짜 객체가 없더라도 테스트 해볼 수 있다.
Profiling & Profiler
profiling
- 프로그램의 메모리공간, 시간복잡도, 함수호출 등등을 분석하는 것
- 프로그램을 최적화하는데 쓰임
profiler
- 이벤트, 통계 등을 다양한 기술을 사용하는 것
- 성능을 분석하는 도구
3rd-party profiling tools for python
- profiler visualization opensource for python
- RunSnakeRun, SNAKEVIZ
Coding Guideline(or Convention)
- 공백, 변수명, 들여쓰기, 주석 등등은 readability의 핵심적 요소
- 구조적 quality와 easy software maintenance 를 위한 것
- 어떤 회사에서는 convention을 안지키면 checker가 컴파일이 안되게함
- 하지말란 것은 하지 말것
'수업 내용 정리 > 오픈소스SW개발방법및도구' 카테고리의 다른 글
13. Project Planning & Management (0) | 2023.06.14 |
---|---|
12. Opensource License (0) | 2023.06.09 |
11. Design Pattern (0) | 2023.06.08 |
9. Online Co-work & Eduacation (0) | 2023.06.07 |