iOS 에서 TDD 도전해보기.
2022년 11월 24일 새싹 세미나에서 공유.
-> 아래 피그마 링크에서 더 보기 편하게 보실 수 있습니다.
https://bit.ly/3ExvmaI
----------------------------
01. TDD 테스트 주도개발
1) TDD의 정의
2) 사용해야하는 이유
3) 장단점
4) TDD 방법
02. XCTest: iOS에서의 TDD
1) XCTest란
2) 작성할 수 있는 테스트
3) setUp, tearDown
03. UNIT TEST 실습: XCTest로 테스트하기
1) XCTest 세팅
2) 테스트 작성 방법
3) 테스트할 기능 미리보기
4) 단위테스트 해보기
04. epliogue: 덧붙이는 말
1) TDD 잘하는 방법
2) 참고문헌 및 링크
3) 감사의 말
11. DOY KIM
TDD가 좀 더 간단하고 유지가능한
설계를 작성하는데 도움을 준다는
사실은 여러 연구를 통해서도
밝혀져있음.
12. DOY KIM
TDD의 장·단점
01 TDD 테스트 주도개발
TDD 개발자들은 블랙박스
기능테스트를 더 통과
하는 . 그러나
개발에 드는
18%
높은 품질의 코드
시간은 16% 더
An Initial Investigation
of Test Driven Develop-
ment in Industry
24. DOY KIM
단위 테스트
앱의 로직을 테스트
단위 테스트
앱의 로직을 테스트
통합 테스트
서로 연결된 작은
파트들을 테스트
통합 테스트
서로 연결된 작은
파트들을 테스트
WWDC 2019
25. DOY KIM
단위 테스트
앱의 로직을 테스트
단위 테스트
앱의 로직을 테스트
통합 테스트
서로 연결된 작은
파트들을 테스트
통합 테스트
서로 연결된 작은
파트들을 테스트
UI 테스트
사용하는 방식의
정확한 동작을
체크하는 테스트
UI 테스트
사용하는 방식의
정확한 동작을
체크하는 테스트
WWDC 2019
26. DOY KIM
XCTest로 작성할 수
있는 테스트 종류
02 XCTest: iOS에서의 TDD
단위테스트 통합테스트
UI테스트 성능테스트
27. DOY KIM
단위테스트
iOS Test-Driven Development, Pablo Villar
코드의 한 단위를 테스트
일반적으로 클래스 안의
메서드와 함수를 테스트.
단위 테스트는 테스트를
진행하는 시스템에서
이루어짐.
28. DOY KIM
Preparation 준비:
Execution 실행 :
Verification 검증:
given - 초기 조
when - 코드를 실행하는 상태, 조건, 환
then - 어떤 결과를 기대하는지
단위테스트
29. DOY KIM
통합테스트
통합테스트는 더 큰 서브 시스템의 동작방식이나, 또는
클래스와 함수를 합쳐서 테스트한다.
예를 들어 컨트롤러로부터 받은
값을 제대로 모델에 저장하는지,
네트워크 요청 오류가 생겼을 때
UI에 잘 표시하는지 여부 등
ART OF TESTING
31. DOY KIM
성능테스트
코드 단위의 실행동안 걸린 시간,
메모리 사용량 등의 정보를 확인
할 수 있다. 여러번 코드를 실행,
측정함. 베이스라인을 세팅할 수
있고 측정 값이 베이스라인보다
현저히 안 좋을 경우 테스트 실패
chimehq - xctest-performance
39. DOY KIM
기존 프로젝트에서 추가
하려면 Xcode 왼쪽에
테스트 네비게이터에서
New Unit Test Target
을 선택
40. DOY KIM
테스트 작성방법
03 UNIT TEST: XCTest로 테스트하기
01 테스트 타겟에 XCTestCase의 서브클래스를 생성
01 테스트 타겟에 XCTestCase의 서브클래스를 생성
02 테스트 메서드를 클래스 안에 선언
02 테스트 메서드를 클래스 안에 선언
03 테스트 Assertion을 테스트 메서드 안에 선언
03 테스트 Assertion을 테스트 메서드 안에 선언
41. DOY KIM
테스트 메서드는 XCTestCase 서브 클래스의 인스턴스 메서드
파라미터와 반환값이 없고, 이름은 반드시 소문자 test로 시작해야한다
테스트 메서드는 Xcode의
XCTest 프레임워크에 의해 자동으로 탐지된다
WWDC 2019
42. DOY KIM
테스트할 기능
미리보기
03 UNIT TEST: XCTest로 테스트하기
휴대전화번호를
입력하면 포맷에 맞게
‘-’를 적절한 위치에
넣어주는 기능
43. DOY KIM
전화번호를 포맷에 맞게 바꿔주는 클래스와 메서드를
만들기. 컴파일을 성공시키는 게 목적이므로 최소한의
코드만 작성.
단위테스트 해보기
03 UNIT TEST: XCTest로 테스트하기
64. DOY KIM
REFACTORING
우리가 만든 테스트케이스를 모두 통과할 경우 해당
코드는 원하는 목표를 달성한 것이기 때문에
리팩토링을 맘 놓고 편안하게 할 수 있다.
추가적으로 리팩토링 할 수 있는 지점
String Extensio
중복되는 코드 수정하
등등....
추가적으로 리팩토링 할 수 있는 지점
String Extensio
중복되는 코드 수정하
등등....
65. DOY KIM
그 외에 추가해야되는 테스트 케이스
숫자 외에 문자가 들어가는 문자열이라면
숫자 사이에 다른 문자가 들어간다면
010과 같은 전화번호 형식이 아니라면?
그 외에 추가해야되는 테스트 케이스
숫자 외에 문자가 들어가는 문자열이라면
숫자 사이에 다른 문자가 들어간다면
010과 같은 전화번호 형식이 아니라면?
이런 루틴을 반복해가며 테스트 주도 개발을
해볼 수 있을 것이다.
71. DOY KIM
좋은 테스트를 작성하기 위해서는
시켜야 한다.
추상화를 최소화하면서
단순성을 최대화해야한다는 것.
테스트코드의 목적과
엔지니어링에 관한 의사결정을
일치
72. DOY KIM
테스트를 잘 만들기
위해서 다음과 같은
순서로 숙련해볼
수 있겠다.
Let’s TDD - 전수열
73. Design patterns: elements of reuseable object-oriented software, E.Gamma, et al
How Test-Driven Development Influences Class Design: A Practitioner’s Point of View, M. F. Aniche, et al
An Initial Investigation of Test Driven Development in Industry, B.George, et al
Extreme Programming Explained, Kent Bec
https://developer.apple.com/documentation/xctes
https://developer.apple.com/documentation/xcode/testing-your-apps-in-xcod
https://developer.apple.com/videos/play/wwdc2019/413
https://www.testresults.io/blog/what-is-black-box-testing-and-how-to-use-it-in-functional-tests
https://mtlynch.io/good-developers-bad-tests
https://youtu.be/meTnd09Pf_
https://youtu.be/ECuc3qoRm9
https://www.slideshare.net/PabloVillar5/ios-testdriven-development
참고문헌 및 자료