WWDC 2017 - Engineering For Testability 의 두번째 세션인 "Scalable Test Code" 에서 보여주셨던 UI Test 리팩토링 예시가 좋아서 기록해둡니다 첫번째 예제 이런 코드를 이렇게 리팩토링하여 확장가능하게 만들자 두번째 예제 난이도를 beginner로, 사운드를 off로 한 상태에서 어떤 것을 테스트하는 코드 입니다 // test code 뒤에는 아마 Assert문이 들어가겠죠?! 이렇게 난이도 설정과 사운드 설정을 분리해서 확장가능성을 높여줍시다 더 나아가 설정가능한 값이 제한되어있는 난이도와 사운드이니 enum을 활용하면 더 좋을 것입니다~= 짠! 이렇게 훨씬 깔끔하고 읽기 좋은 UI Test 코드가 되었습니다 더 확장가능하게 만들어봅시다!!!!!!! 이렇..
collectionView의 이 세가지 메소드에 들어가보면 모두 다음과 같은 설명이 있습니다..!! 여러 개의 변경을 동시에 animate하고 싶을 때, performBatchUpdates(_:completion:) 를 사용하는 것을 권장하고 있네요 performBatchUpdates는 collectionView의 메소드 입니다. 설명을 보면 많은 insert, delete, reload, move 연산을 그룹으로 묶어서 animate한다 라고 나와있습니다 그럼 performBatchUpdates를 테스트해보기 위해 간단히 사전 세팅을 해줍시다 그리고 insert&delete 메소드를 구현해줍시다 index 1에 100이라는 Cell을 추가해주고 다시 지워주는 시나리오를 만들어봅시다 먼저, perform..
어제 테스트 관련 세미나를 듣고 왔는데, 스피커분들이 경험담을 말씀해주시면서 테스트 코드를 작성하고 나서 무엇이 좋았고 달라졌는지, 그래서 테스트는 왜 필요한지에 대해 나눠주셨습니다. 그 중에서 "불안 요소를 제거하는 것이 잘하는 개발이다. 그래서 테스트가 필요하다…!" 라고 하셨던 것이 가장 기억에 남네요 그럼 구체적으로 테스트의 필요성에 대해 살펴봅시다 1. 리팩토링에 대한 확신 테스트는 이전의 동작이 변경되지 않았음을 담보할 수 있는 장치 입니다. 예를들어 Calculator의 add함수를 테스트하는 코드가 있다면, 이렇게 위 함수에서 아래 함수로 add함수를 리팩토링해도 동작이 잘되는구나!! 라는 확신을 가질 수 있겠죠. 리팩토링 한 후 테스트를 돌려서 기존 동작이 잘 돌아가는 지 쉽게 확인할 수..
테스트 피라미드라는 개념은 애플에서 제시한 아이디어 인 줄 알았는데, 안드로이드 테스트 세미나(이름: 안드로이드 탐구영역)를 듣고 와서 두루 쓰이는 개념이라는 것을 알게 되었습니다 그래서 덧붙여서 다시 정리...!! 테스트 피라미드는 이렇게 생긴 것 입니다 세미나에서 우섭님(뱅.샐)이 테스트 피라미드를 이런 그림으로 정리해주셨는데요, y축부터 봅시다..! 위로 올라갈 수록 실제로 돌아가는, 유저가 쓰는 영역이라 믿을 만한 영역입니다. 하지만 실행시간이 오래 걸리고 유지보수, 디버깅 하기 더욱 어려운 영역입니다. 그 다음 x축을 봐봅시다..! 밑으로 내려 올 수록 더 많은 테스트 코드를 작성하게 됩니다 이런 피라미드 접근법은 어떤 유익이 있을 까요?! 애플에 의하면, 피라미드 모델 접근법은 철저성(thor..
나는 아직 입장정리 안함. 테스트 코드에 대한 다양한 의견들을 모아두고 이러저러 써보고 결정할 것임. [1] 테스트 함수 네이밍 좋은 테스트 이름들 : 무엇을 테스트하고 있는지 명확합니다. 어떤 때 테스트가 통과하거나 실패하는지 명확합니다. 라고 생각하고 엄청 자세하게 테스트 이름을 짓는 파(?)가 있다. test2Add5WillBe7() 이런식으로...?! 또 이런 파 중에 스네이크케이스로 짓는 분들도 계시다 애플 WWDC 2019 Testing in Xcode 세션 데모에서는 그냥 이렇게 간단하게 테스트 함수 이름을 정했다. 간단 네이밍 파(?)가 있다 [2] 네트워크 Request를 테스트하느냐 안하느냐 오로지 더미데이터랑 Mock 객체들만 가지고 테스트하는 파(?)가 있다. 이런식으로 reques..
- Total
- Today
- Yesterday
- Flutter 로딩
- Dart Factory
- Django Firebase Cloud Messaging
- Django Heroku Scheduler
- METAL
- github actions
- flutter deep link
- Django FCM
- 플러터 싱글톤
- DRF APIException
- PencilKit
- flutter 앱 출시
- 장고 URL querystring
- flutter build mode
- Flutter Text Gradient
- Sketch 누끼
- ribs
- 장고 Custom Management Command
- ipad multitasking
- SerializerMethodField
- 구글 Geocoding API
- Watch App for iOS App vs Watch App
- drf custom error
- flutter dynamic link
- cocoapod
- Flutter getter setter
- 플러터 얼럿
- Flutter Clipboard
- Flutter Spacer
- Python Type Hint
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |