본문 바로가기

수업 내용 정리/오픈소스SW개발방법및도구

10. Test and Enhancement

What is TDD?

TDD

선 개발 후 테스트 방식이 아닌 선 테스트 후 개발 방식의 프로그래밍 방법

자동화된 테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식

TDD Cycle

  1. Add a test
    • requirement를 만족하기 위한 test code를 작성하는 단계
    • 코드를 짜고 테스트하는 것보다 테스트 코드를 구현한 뒤에 코드를 짬으로써 requirement에 더 집중할 수 있음  
  2. Run all tests and check fails
    • 코드를 테스트해서 fail이 나오는 것을 확인해라 
    • 왜냐하면 아직 기술 구현을 안했는데 fail나오는 것은 당연
    • fail이 나와야 test code를 잘짠거임
  3. Write the codes
    • 새로운 test만 "어떻게든" pass 코드를 짬
    • 코드의 효율성 같은 건 따지지말고 더도 말고 덜도 말고 test만 통과하는 코드를 짜야함
  4. Run tests
    • 통과할 때까지 코드짜세요
  5. Refactor code
    • 여기서 코드를 더 예쁘게 만들어야함(변수 이름 통일, 중복 삭제, 가독성, 지속성)
    • test 통과하기 위한 위치 말고 원래 위치로 가야함
  6. 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