brunch

You can make anything
by writing

C.S.Lewis

by Tilltue Jan 31. 2022

테스트 자동화 활용

Github Actions

* 이 글은 Swift 5를 기준으로 작성했다.

* 글의 목적: "클라이언트 개발자의 TDD" 매거진은 그동안 테스트를 위해 학습을 했던 것을 공유하고자 한다.




테스트 자동화에 대해 살펴보자.

테스트 작성을 팀 단위로 실천하기 위해서 즉각 고려해야 했던 것은 자동화 테스트였다.

프로젝트 크기가 크지 않은 상황에서는 로컬 빌드와 테스트 수행에 비용이 얼마 들지 않을 것이지만 이는 곧 한계에 다다른다. PR 과정에서 자동화 테스트가 없다면, 로컬에서 항상 모든 테스트를 확인해야 한다. 

( Xcode의 경우 ) 테스트 타겟이 하나라면 그래도 해볼 만하겠지만 타겟이 2개만 되어도 테스트를 모두 확인하는 건 꽤나 높은 비용이 든다.


팀 단위로 테스트를 작성하기 위해 적어도 어느 단계에서는 ( PR 이든, Commit 이든 ) 테스트 자동화가 필수적으로 구성해야 된다고 생각한다.

*주 CI 관련해서는 나중에 한 번 더 글을 작성하려 한다. 여기서는 테스트 자동화에 집중한다.


테스트 자동화를 구성해보자!


Github Actions는 오픈소스의 경우 비용이 무료이기 때문에 :)

Github Actions로 구현해보자. ( 다른 서비스도 무료가 있긴 하지만 github actions 가 제일 편한 것 같다 )


Actions 메뉴로 들어가자

친절하게도 추천해준다. Swift를 골라본다.

사용 방법은 Github Actions Document를 보면 여러 기능들이 있으니 참고하자.


- 작성하려는 workflow는 master branch에 commit 이 올라오면 테스트를 돌리도록 했다.

- PR은 지금은 고려 대상이 아니어서 작성하지 않았다.


Commit workflow 작성

commit에 트리거 되고 TLLogerTest 수행



커밋으로 workflow가 수행되면 아래와 같이 Actions에서 확인 가능하다

수행된 workflow 들의 결과들을 볼 수 있다.

콘솔로그등 수행과정의 세부 내용들도 실시간으로 볼 수 있다.


위 결과 링크 : https://github.com/tilltue/TLLogger/runs/4998273590?check_suite_focus=true


이와 같이 github actions에서 자동화 테스트는 아주 쉽게 구성이 가능하다.



부록 : 오픈소스들의 workflow

유명 오픈소스들의 workflow를 보는 것도 재미가 있을 것 같다. :D


https://github.com/firebase/firebase-ios-sdk/actions

파이어베이스 ios SDK 워크플로우의 경우 종류도 엄청 많다.

정적 분석, 배포 관련 확인 절차, 테스트 수행등등을 진행한다.

진행 시간을 보니 하루에도 50회 이상의 workflow 가 수행된다.

https://github.com/Alamofire/Alamofire/actions

알라모파이어의 CI workflow는 macOS, iOS, tvOS 등등 os  버전별 여러 환경에서 테스트를 돌려서 검증한다.

https://github.com/onevcat/Kingfisher/actions

킹 피셔도 마찬가지로 여러 환경에서 테스트를 돌려서 검증한다.

( fastlane 으로 테스트를 수행하는 모습 )

https://github.com/ReactiveX/RxSwift/actions

RxSwift 또한 여러 타겟의 테스트를 수행한다.

오픈소스들의 workflow 구성을 보면서 참고할 것들이 많이 있을것 같아 관심이 있다면 한번 살펴보는 것도 좋을것 같다.


마침.

매거진의 이전글 테스트 시작하기 #2
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari