본문 바로가기

테크 이야기

테스트 자동화와 TDD의 소개



  • 1. 테스트 자동화와 TDD 박경훈
  • 2. 진행순서  자동화 된 테스트가 없다면?  자동화 된 테스트의 정의  TDD의 소개
  • 3. 자동화 된 테스트가 없다면?
  • 4. Fact1. 소프트웨어의 소스는 복잡하게 연결 되어 있다.
  • 5. 작은 한 부분이 수정된다면?
  • 6. 모든 기능을 다시 테스트 해야 한다.
  • 7. Fact2. 소스코드는 시간이 흐르면 녹이 슨다.
  • 8. 끊임없이 OOD(Object Oriented Design)와 패턴 구문들을 적용해가며 리펙토링 해야 한다.
  • 9. 하지만 리펙토링이 어려운 이유
  • 10. 모든 기능을 다시 테스트 해야 한다.
  • 11. 자동화 된 테스트가 없다면?  자체 버그 검출 능력 저하 - 모든 기능을 테스트 하기 어려움  소스 코드의 품질 저하 - 어디서 버그가 생길지 모르기 때문에 잘못 된 코드도 고치지 않으려 하는 현상  자체 테스트 비용의 증가 - 작은 수정에도 모든 기능을 다시 테스트 해 야 되는 문제
  • 12. 자동화 된 테스트란?
  • 13. 자동화 된 테스트란?  모든 테스트 케이스를 코드 스크립트로 변환 한 집합체
  • 14. 통합 테스팅의 예
  • 15. 3rd party testing tools  http://www.youtube.com/watch?v=qsh4zWa 6bE8  http://www.youtube.com/watch?v=4TGkGQo nmy4#t=64
  • 16. 누가 테스트 스크립트를 만드는가? Software Engineers QA Engineers Software Architect
  • 17. 개발 프로세스 요구사항 Software & QA Engineer 테스트 케이스 수립 - 공백입력 하면 오류 메시지 띄우기 - 사용자가 여러 개의 비디오를 옮길 수 있게 개발 통합 테스트 코드 작성 QA Engineer Software Engineer
  • 18. TDD
  • 19. TDD란 무엇인가?  Test-Driven Development - 요구사항의 테스트 요건을 먼저 고려  Test-First Development - 개발 전 테스트 코드를 먼저 작성하여 개발  1999년 XP라는 애자일 기반의 개발 방법론과 함께 소개 됨
  • 20. TDD란 무엇인가? 기존 개발방식 TDD의 개발방식
  • 21. TDD의 장점  높은 소스코드 품질 - MS와 IBM사의 조사 결과 TDD 약 15~35% 정도의 개발시간 증가 결 함율(버그)은 약 40~90% 정도 줄어듬 - http://research.microsoft.com/en-us/ groups/ese/nagappan_tdd.pdf  재설계 시간의 절감  손쉬운 테스트 근거 산출 및 문서화 (test coverage, performance)  디버깅 시간의 절감
  • 22. TDD의 단점  all about 개발 생산성!
  • 23. 1부터 10까지의 수를 출력하는 프로그램 만들기! - 단, 3의 배수에서는 숫자대신 “HOONS”를 출력 - 5의 배수에서는 “JAEDAM”을 출력
  • 24. 통합테스트와 유닛테스트 Dependency Injection = AOP
  • 25. 편의점 카운터에서 물건을 스캔한 뒤에 고객에게 최종 가격을 알려주는 프로그램이 필요합니다. 물건들의 가격은 데이터 베이스에 있으며, 한가지 특별한 것은 현재 모든 물건을 2개 사면 하나 더 주 는 이벤트를 하고 있기 때문에 이 로직을 반영해주 세요.
  • 26. 비지니스 레이어 => 할인점검 유닛테스트 데이터 레이어 => 가격정보 유닛테스트 통합테스트
  • 27. 패턴 문화 Test Automation /TDD AOP Repository Pattern MVC, MVP, MVVM Dependency Injection SOLID, DRY, KISS ORM - Entity Agile – XP/Scrum CI Pair programing Git – code review BDD/DDD Daily Standup User Story & Estimation
  • 28. 결과 중심적 개발 프로세스 Project Manager Software Engineer Tester 요구사항 결과물 개발
  • 29. 품질 중심적 개발 프로세스 ① 요구사항 Project Manager ② 분석/설계 전달 Architect / Lead developer 개발 Software Engineers 결과물 ③ 코드리뷰 요청 (pull request) Architect / Lead developer Tester 테스트 요청 결과물 피드백 코드 리뷰
  • 30. Q&A