TDD: Test-Driven Development
test를 기반으로 한 개발방법론을 말한다
아래 블로그에 쉽게 설명되어있다
https://academy.realm.io/kr/posts/ios-tdd-test-driven-development/
기존에는 구현 후 프로그램을 여러 번 실행하여 test case를 돌렸는데
TDD는 테스트 과정을 기반으로 구현함으로써 개발기간을 단축할 수 있을 것으로 기대된다
그래서 앞으로 개발할 때 TDD를 사용해 보려한다
아래는 TDD에 대한 위키 글이다
https://en.wikipedia.org/wiki/Test-driven_development
---
python unittest 사용이유
python unittest는 JUnit을 기반으로 한 unit test 자동화 라이브러리이다
유닛 테스트란, 프로그램 전체 테스트를 유닛별로 쪼개서 테스트하는 것을 의미한다
테스트의 목적은 컴파일 에러가 아닌, 런티암 에러(access violation, logic error)를 테스트하는 것이다
unittest나 junit이나 그러한 원념에 기반하고있으므로, junit에 대한 글을 한번 살펴보자
아래는 junit에 대한 stackoverflow 유저의 재밌는 답변이다
https://stackoverflow.com/questions/10858990/why-use-junit-for-testing
이 글에서는 다음과 같이 이야기하고있다
만약 unit test를 하지않는다면, 코드를 조금이라도 수정할 때마다 프로그램 전체를 테스트 해야할 것이다
이것은 문제가 많고 에러가 발생하기쉽다 (problematic and error-prone)
이것은 프로그램 규모가 커질수록 이것은 힘들 뿐만 아니라(unpleasant) 불가능해지기까지 한다
unit test는 프로그램 전체 test의 반대 개념이고
코드를 수정할 때마다 테스트 할때 편리함을 제공해준다
이것은 프로젝트 규모가 커질수록 unit이 많아질수록 필요성이 커진다
개인프로젝트로 접하기 가장 쉬운 프로젝트는 안드로이드 프로젝트일 것이다
안드로이드 스튜디오에서는 기본적으로 JUnit 사용이 내장되어있다
안드로이드는 웬만한 프로젝트들에 비해 빌드시간이 굉장히 오래걸린다
즉 기능을 하나 추가할 때마다 앱을 빌드하고 실행해서 테스트해보는 것은 굉장히 시간 비효율적이다
안드로이드 프로젝트에 있는 JUnit을 잘 활용한다면 unit test가 왜 개발기간 단축에 효과적인지 비교적 쉽게 이해할 수 있을것이다
Caffe2 python binding에서도 operator_test를 할때 unittest 라이브러리를 사용하고 있다
결론적으로 unittest 라이브러리를 사용하는 이유는 위에서 언급한 내용과 동일하다
unit test를 사용하는 이유 관점에서 원론적인 이야기를 했다
caffe2 사용 중에 python unittest를 보고 이걸 사용하면 뭐가 좋은지 궁금하여 찾아보았고
필자는 파이썬으로 규모가 큰 프로젝트를 진행할 때 unittest 라이브러리를 활용해볼 계획이다
'Language' 카테고리의 다른 글
[git] github에 push(commit)하는 command (0) | 2017.12.04 |
---|---|
non block IO의 advantage는 무엇인가? [번역] (0) | 2017.12.04 |
C언어 Calling Convention (0) | 2017.11.26 |
binary data 처리 이슈 (vs string data) (0) | 2017.11.26 |
Windows API - CreateProcess() Function (1) | 2015.12.02 |
WRITTEN BY
- hojongs
블로그 옮겼습니다 https://hojongs.github.io/