Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
C++ 프로젝트에 단위 테스트 도입하기
Next
Download to read offline and view in fullscreen.

23

Share

Download to read offline

C++과 TDD

Download to read offline

휴먼 디자인 프로젝트 스터디 자료

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

C++과 TDD

  1. 1. C++과 TDD NHN NEXT 이선협
  2. 2. TDD (Test-Driven Development)  테스트 주도 개발  소프트웨어 개발 방법 중 하나  반복 테스트를 이용하여 소프트웨어를 개발한다. 코딩 / 리팩토링 테스트 실패 성공
  3. 3. TDD의 목표
  4. 4. Clean code that works TDD의 목표
  5. 5. TDD의 목표를 이루기 위해서는?
  6. 6. TDD의 목표를 이루기 위해서는? 1. 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다.
  7. 7. TDD의 목표를 이루기 위해서는? 1. 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다. 2. 중복을 제거한다.
  8. 8. TDD의 목표를 이루기 위해서는? 1. 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다. 2. 중복을 제거한다. 3. 즉 불필요한 기능 구현을 하지 않는다.
  9. 9. TDD의 목표를 이루기 위해서는? 1. 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다. 2. 중복을 제거한다. 3. 즉 불필요한 기능 구현을 하지 않는다. Clean code that works!!!
  10. 10. TDD 개발법 1. 빨강 - 실패하는 작은 테스트 케이스를 작성한다. 2. 초록 - 테스트를 통과하는 코드를 작성한다. 3. 리팩토링 - 테스트를 통과하기 위해 만든 코드의 모든 중복을 제거하고, 불명확한 것을 명확히 한다.
  11. 11. TDD 개발법 1. 빨강 - 실패하는 작은 테스트 케이스를 작성한다. 2. 초록 - 테스트를 통과하는 코드를 작성한다. 3. 리팩토링 - 테스트를 통과하기 위해 만든 코드의 모든 중복을 제거하고, 불명확한 것을 명확히 한다. 코딩 / 리팩토링 테스트 실패 성공
  12. 12. TDD란 xUnit과 같은 프레임워크를 사용하지 않아도 상관없다!
  13. 13. TDD란 xUnit과 같은 프레임워크를 사용하지 않아도 상관없다! 로직의 완성상태를 검증할 수 있는 코드가 존재하면 충분하다
  14. 14. TDD란 xUnit과 같은 프레임워크를 사용하지 않아도 상관없다! 로직의 완성상태를 검증할 수 있는 코드가 존재하면 충분하다 True True False True
  15. 15. TDD란 xUnit과 같은 프레임워크를 사용하지 않아도 상관없다! 로직의 완성상태를 검증할 수 있는 코드가 존재하면 충분하다 True True False True
  16. 16. CppUnit에 대해 알아봅시다!
  17. 17. CppUnit  xUnit으로 통칭되는 테스트 프레임워크에서 파생됨.  실제 존재하는 프레임워크는 아님.  C++언어에서 사용되는 테스트 프레임워크
  18. 18. CppUnit  환경  Visual Studio 2013
  19. 19. CppUnit – 예제 1  간단한 클래스를 작성한다.  오른쪽의 클래스는 잡다한 기능을 가지고 있는 정체성이 없는 클래스이다.  이 클래스가 잘 동작하는지 테스트 해보도록 한다.
  20. 20. CppUnit – 예제 2
  21. 21. CppUnit – 예제 3  테스트 프로젝트를 생성하면 다음 예제가 생성된다.
  22. 22. CppUnit – 예제 4  예제 코드를 ‘MyClass’ 클래스를 테스트 하도록 수정하자
  23. 23. CppUnit – 결과  위 메뉴에서 `테스트 -> 창 -> 테스트 탐색기`를 선택하여 테스트 항목을 볼 수 있다.  테스트를 실행하면 실패, 성공 여부를 확인 할 수 있다.
  24. 24. CppUnit – 마치며  예제에서는 미리 Class를 설계한 후 테스트 코드를 실행하였지만 미리 테스트를 만들어 둔 후 클래스를 만드는 것이 좋다. 테스트 `주도` 개발이기 때문이다.
  25. 25. 그래요 다 좋아요  그런데...
  26. 26. 아까 굳이 사용하지 않아도 된다면서...
  27. 27. 왜 사용하지?  테스트 코드와 로직 부분을 분리하기 편하다.  클릭 한 번으로 테스트 실행이 가능하다.  단위 테스트와 인수 테스트로 나누어서 테스트가 가능하다.
  28. 28. 프로그램에서 중요한 것
  29. 29. 프로그램에서 중요한 것 Flow
  30. 30. A 클래스 B 클래스 C 클래스 D 클래스
  31. 31. A 클래스 B 클래스 C 클래스 D 클래스 테스트 성공 테스트 성공 테스트 성공 테스트 성공
  32. 32. A 클래스 B 클래스 C 클래스 D 클래스 테스트 성공 테스트 성공 테스트 성공 테스트 성공 이것이 단위 테스트 (Unit Test)
  33. 33. A 클래스 B 클래스 C 클래스 D 클래스 테스트 성공 테스트 성공 테스트 성공 테스트 성공 하지만 정작 프로세스를 진행하면?
  34. 34. A 클래스 B 클래스 C 클래스 D 클래스 프로세스 1 / A, B 클래스 프로세스 2 / A, B, C 클래스 프로세스 3 / A, D 클래스
  35. 35. A 클래스 B 클래스 C 클래스 D 클래스 프로세스 1 / A, B 클래스 프로세스 2 / A, B, C 클래스 프로세스 3 / A, D 클래스 동작 에러
  36. 36. A 클래스 B 클래스 C 클래스 D 클래스 프로세스 1 / A, B 클래스 프로세스 2 / A, B, C 클래스 프로세스 3 / A, D 클래스 동작 에러 유닛 테스트 만으로는 동작을 안하네?
  37. 37. A 클래스 B 클래스 C 클래스 D 클래스 프로세스 1 / A, B 클래스 프로세스 2 / A, B, C 클래스 프로세스 3 / A, D 클래스 테스트 테스트
  38. 38. A 클래스 B 클래스 C 클래스 D 클래스 프로세스 1 / A, B 클래스 프로세스 2 / A, B, C 클래스 프로세스 3 / A, D 클래스 테스트 성공 테스트 성공
  39. 39. A 클래스 B 클래스 C 클래스 D 클래스 프로세스 1 / A, B 클래스 프로세스 2 / A, B, C 클래스 프로세스 3 / A, D 클래스 테스트 성공 테스트 성공 이것을 인수 테스트(Acceptance Test)라 한다.
  40. 40. 단위 테스트 + 인수 테스트
  41. 41. 단위 테스트 + 인수 테스트 품질 높고 테스트한 항목에 대해서 버그 없는 제품 완성
  42. 42. 단위 테스트 + 인수 테스트 품질 높고 테스트한 항목에 대해서 버그 없는 제품 완성 테스트한 항목은 개발자들에게 좋은 문서가됨
  43. 43. 단위 테스트 + 인수 테스트 품질 높고 테스트한 항목에 대해서 버그 없는 제품 완성 테스트한 항목은 개발자들에게 좋은 문서가됨 테스트 코드를 성공하면 자신감이 상승한다
  44. 44. TDD의 단점  코드를 변경할 때마다 유닛 테스트를 변경해줘야한다.  데이터가 많고, 크고, 다양하면 테스트를 작성하기 힘들다.  유닛 테스트가 실패했는데도 동작할 경우가 있다.  하나의 유닛을 수정하면 다른 메소드에 문제가 생길 수 있다.  테스트 코드가 추가 되기 때문에 관리해야 하는 코드가 많아진다.
  45. 45. TDD의 단점  코드를 변경할 때마다 유닛 테스트를 변경해줘야한다.  데이터가 많고, 크고, 다양하면 테스트를 작성하기 힘들다.  유닛 테스트가 실패했는데도 동작할 경우가 있다.  하나의 유닛을 수정하면 다른 메소드에 문제가 생길 수 있다. 결국 귀찮고 시간이 오래걸린다...
  46. 46. TDD의 단점  코드를 변경할 때마다 유닛 테스트를 변경해줘야한다.  데이터가 많고, 크고, 다양하면 테스트를 작성하기 힘들다.  유닛 테스트가 실패했는데도 동작할 경우가 있다.  하나의 유닛을 수정하면 다른 메소드에 문제가 생길 수 있다. 결국 귀찮고 시간이 오래걸린다... 즉 비용이 많이듬!!!!
  47. 47. TDD의 단점  코드를 변경할 때마다 유닛 테스트를 변경해줘야한다.  데이터가 많고, 크고, 다양하면 테스트를 작성하기 힘들다.  유닛 테스트가 실패했는데도 동작할 경우가 있다.  하나의 유닛을 수정하면 다른 메소드에 문제가 생길 수 있다. 결국 귀찮고 시간이 오래걸린다... 즉 비용이 많이듬!!!! 하지만 이것은 일반적인 단점이고 단점이 느껴지지 않는 개발자가 있을 수도 있다 결국 자신에게 맞는 개발 방법이 최고다 
  48. 48. 감사합니다
  49. 49. 참고 자료  http://soulpark.wordpress.com/2012/09/12/test-driven-development/  http://www.slideshare.net/doortts/tdd-testable-design-and-tdd  http://ko.wikipedia.org/wiki/%ED%85%8C%EC%8A%A4%ED%8A%B8_%EC%A3%BC%EB%8F% 84_%EA%B0%9C%EB%B0%9C  http://ko.wikipedia.org/wiki/XUnit  http://nyolong.egloos.com/viewer/2250020  http://gusspia.egloos.com/509710  http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/SoftWare_engineering/TDD
  • movingmt

    Aug. 30, 2020
  • YushiBai

    Dec. 5, 2018
  • alexnetster

    Jan. 19, 2018
  • ssuser25cfcd

    Aug. 31, 2017
  • LusainKim

    Apr. 13, 2017
  • wonchurizoo

    Jan. 26, 2017
  • jangsupark2

    May. 24, 2016
  • KyuRakLee

    May. 14, 2016
  • seok0721

    Nov. 10, 2015
  • jaygoo13

    Jul. 8, 2015
  • innurman

    Apr. 22, 2015
  • isambar

    Feb. 10, 2015
  • hojungj

    Jan. 23, 2015
  • songgon

    Aug. 20, 2014
  • gwangwhima

    May. 7, 2014
  • jihyeonkim92123015

    Apr. 16, 2014
  • yunseokl1

    Apr. 6, 2014
  • Uabout

    Apr. 2, 2014
  • SohyunAhn

    Apr. 2, 2014
  • finchpark

    Apr. 2, 2014

휴먼 디자인 프로젝트 스터디 자료

Views

Total views

7,141

On Slideshare

0

From embeds

0

Number of embeds

766

Actions

Downloads

146

Shares

0

Comments

0

Likes

23

×