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 구성을 보면서 참고할 것들이 많이 있을것 같아 관심이 있다면 한번 살펴보는 것도 좋을것 같다.


마침.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari