- 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
테크 이야기