CI/CD
Closed this issue · 0 comments
Youngminah commented
Build vs Archive
Build
: 소스코드가 프로젝트를 실행할 수 있도록 하는 것Archive
(= 패키지): 결과물은 .ipa파일이며 앱과 resource들을 포함하는 통합 패키지
CI ( Continuous Integration)
- (빌드 테스트를 실시하는 프로세스) 통합 프로세스를 지속적으로 실시
- 지속적 통합
- 코드레벨 테스트 자동화
CD (Continuous Deploy 혹은 Continuous Delivery)
- 프로덕션 환경으로 배포작업을 자동화하는것
- 앱에 적용한 변경사항이 버그 테스트를 거쳐 레포에 자동으로 업로드되고 언제든 실시간으로 배포가능
- 변경사항의 배포에 대한 비용 시간 위험을 줄일수 있다
Continuous Delivery
: 프로덕션은 수동 배포Continuous Deployment:
프로덕션까지 자동 배포
Fastlane
- Fastlane은 Android 및 iOS배포를 단순화하기 위한 오픈소스 플랫폼
- fastlane을 사용하면 개발 및 릴리즈 워크 플로우의 모든 측면을 "자동화" 할 수 있다
Test Pyramid
User interface Test
: UI관련 테스트, 시간이 오래걸림Integration Test
: Unit 테스트를 합쳐서 테스트 하는 것Unit Test
: 함수 하나하나 테스트 가능- 유닛 테스트의 주요 목적은 애플리케이션이 설계된 대로 동작하는지를 결정하는 것이며, 화이트박스 테스팅 기법이 보통 사용
- 유닛 테스트의 가장 큰 이점 중 하나는, 프로그램의 작은 부분이 바뀔 때마다
- 전체 테스팅 과정을 다시 수행하여 문제가 발생했을 경우 빠르게 이슈를 해결할 수 있다는 점
알아두기
testExample
: 함수이름은 바꿀수 있다. test는 붙여야함setUpWithError
: 초기화 셋업 함수tearDownWithError
: 테스트 끝났을때testLaunchPerformance
: 성능관련 지금은 지워도 무방.
UI Test 해보기
- 2015년에 나왔음.
- XCUIApplication
- XCUIElement
- XCUIElementQuery
- 세 가지 새로운 클래스 생김
- Uber에서 나온 Snapshot 참고 (픽셀이 조금만 틀어져도 테스트가 실패했다고 뜸)
- 이미지 기반으로 테스트가 진행됨.
- 조금틀어지는건 성공으로 두긴함 5%정도?
예제 1
Simulator.Screen.Recording.-.iPhone.11.-.2022-02-28.at.10.40.13.mp4
예제 2
Simulator.Screen.Recording.-.iPhone.11.-.2022-02-28.at.11.01.35.mp4
Unit Test 해보기
- WWDC에서 소개된 완전 기본예제
- Input -> 가공 -> Output인 형태
- WWDC2017에서
Testable app code
,Scalable test code
한 코드를 짜라고 가이드라인이 나옴 Testable app code
: 의존성 바깥에서 주입하기 등등Scalable test code
: 확장성을 고려하여 테스트 코드를 짯는지- 테스트 코드는 짜는것이 중요한것이아니라 위에서 2가지를 가이드라인으로 구현할 수 있어야함
- 그럴라면 테스트 코드를 짜기전에 코드를 테스터블하게 구현해두는 것이 어려움.
- Unit Test Code를 잘 짜는 것은 그래서 어렵고, TDD를 이용한 개발은 오래걸리고 더욱 어렵 ( <-현업에서도 적용을 하기 어려운 이유 )
- Test Code에서 100% 성공이 떠도 bug가 없는것 아님 모든 케이스를 테스트 할순 없다
Quick
,Nimble
같은 라이브러리를 쓰면 네이밍 문제, 역할, 실패 워닝 등등 깔끔해짐
import XCTest
@testable import CICDTest //test할때 internal이라하더라도 접근가능.
- import하는 이유 public으로 선언 안해도됨
Code Coverage
- 얼만큼 코드를 테스트하고 있는지 나타내줌
- Product -> Scheme -> Edit Scheme -> Test -> Gather Coverage