LINE Corporation이 2023년 10월 1일부로 LY Corporation이 되었습니다. LY Corporation의 새로운 기술 블로그를 소개합니다. LY Corporation Tech Blog

Blog


Test Automation Workshop 2018 Tokyo 참석기

Welcome to Test Automation Workshop

안녕하세요. LINE+ Platform Engineering, Software Engineer in Test 팀의 김모세입니다. 지난 2018년 10월 18일부터 2018년 10월 19일까지 LINE 도쿄 오피스에서 Test Automation Workshop 2018를 개최하였습니다. LINE 글로벌 그룹 내의 테스트 자동화 조직들이 모여 다양한 사례와 아이디어를 공유하는 이 이벤트를 짤막하게 여러분께 전해드리려고 합니다.

LINE 글로벌 그룹의 여러 테스트 자동화 조직은 'Closing the distance between development and test'라는 미션을 필두로 다양한 자동화 사례를 통해 LINE 글로벌 그룹이 사용자에게 제공하는 서비스의 품질을 향상시키고, 개발자들이 보다 나은 가치를 만들어 내는 데에 집중할 수 있도록 개발 환경을 개선해 나가고 있습니다. Test Automation Workshop(이하 TAW)은 이러한 사례와 아이디어를 공유하기 위한 목적으로 2017년 6월부터 LINE 글로벌 그룹의 각 지역 오피스에서 개최하고 있습니다.

  • 2017년 6월 - LINE Taiwan office
  • 2018년 1월 - LINE Fukuoka office
  • 2018년 10월 - LINE Tokyo office

Grow with Test Automation

LINE 글로벌 그룹의 각 로컬 오피스에서는 LINE 메신저를 중심으로 다양한 환경에서 사업을 진행해 나가고 있습니다. 그에 따라 개발 방법은 물론 테스팅 방법까지도 매우 다양한데요. 그래서 여러 로컬 오피스에서 모인 이번 TAW를 통해 각 로컬 오피스의 테스팅 조직과 자동화 조직은 물론 개발 조직까지 함께 성장할 수 있는 인사이트를 얻을 수 있었습니다. 

3회째를 맞이하는 이번 TAW에선 Grow with Test Automation라는 슬로건 아래 다음과 같이 행동 강령을 정했습니다.

  • 우리는 테스트 자동화를 통해 우리 스스로 성장합니다.
  • 우리는 경험과 지식을 적절한 방법으로 공유함으로써 서로를 보다 잘 이해하고 격려하며 함께 어려움에 도전합니다.
  • 우리는 기술적인 측면뿐만 아니라 프로세스적인 측면으로도 우리의 시야를 넓힙니다.
일자 2018년 10월 18일(목요일) ~ 2018년 10월 19일(금요일)
세션 수 10개
참석자 수 총 42명
  • 한국: 10명
  • 대만: 10명
  • 일본(후쿠오카): 7명
  • 일본(도쿄): 7명
  • 태국: 3명
  • 베트남(하노이): 5명

Sessions

이번 TAW는 아래와 같은 세션들로 채워졌습니다. 총 10개의 세션이 이틀에 걸쳐 진행되었는데요. 세션 하나하나가 전부 알찬 내용으로 준비되어 있어서 정말 많은 것들을 서로 배워갈 수 있었습니다. 

Day
제목
발표자
로컬 오피스
1 Ayaperf: New Performance Testing Framework for Microservices Ikeda Ryotaro 일본(도쿄)
How QA Improves Development Velocity Pomuang Krittidech
Tantipichainkun Autuaporn
태국
Introduction of Test Automation Sessions at STAREAST Ikenoue Akari 일본(도쿄)
Test Automation using Cypress Lee Pei-Yun
Miki Liao
대만
QA in Agile with Android and iOS Native Test Frameworks Lin Kuan-Wei 대만
Effective Code Review & Metrics Liu Po-Feng 대만
The Growth of Test Automation in LINE Tech VN Mai Hanh
Huong Trang
베트남(하노이)
2 Saving Release Master: Deployment Process Automation 김모세 한국
Database Testing Pham Thi Mai
Le Thi Thoa
베트남(하노이)
Test Multiple Devices with JUnit5 Chang Yuhao 일본(후쿠오카)

Day 1

첫 번째 날에는 총 7개의 세션이 진행되었습니다. 모든 세션은 영어로 진행되었으며, 준비한 내용을 발표하는 데에서 끝나지 않고 다양한 질의 응답까지 이어졌습니다. 너무 크지 않은 규모의 워크숍에서 만날 수 있는 즐거운 시간이었으며, 잘 몰랐던 각 로컬 오피스의 활동에 대해 알아갈 수 있는 좋은 시간이었습니다. 

Ayaperf: New Performance Testing Framework for Microservices

발표자인 Ikeda Ryotaro 님(GitHub, twitter)은 LINE Corp.의 Software Engineer in Test TF로 일하고 있습니다. Ikeda 님은 마이크로 서비스에 대한 효과적인 부하 및 성능테스트(load/performance testing)를 수행할 수 있는 사내용 자체 개발 프레임워크, Ayaperf를 소개했습니다. Ayaperf는 JUnit과 비슷한 형태의 부하 테스트 프레임워크에 Kubernetes의 분산 테스트 프레임워크를 조합하여 만든 프레임워크입니다. 부하 테스트 시나리오는 JUnit 테스트와 비슷한 형태로 작성할 수 있으며 로컬환경은 물론 원격환경에서도 실행할 수 있습니다. 테스트 시나리오를 포함한 테스트 클라이언트는 k8s(Kubernetes) 클러스터에 배포되어, 클라이언트 수에 제한 없이 원하는 만큼의 부하를 손쉽게 생성해 테스트 대상 서비스에 걸 수 있게 됩니다. 테스트 결과는 Prometheus Pod에 수집되고 Grafana로 전달됩니다.

 

How QA Improves Development Velocity

 발표자인 Pomuang Krittidech 님과 Tantipichainkun Autuaporn 님은 LINE Thailand의 Quality Management 팀에서 일하고 있습니다. Pomuang, Tantipichainkun 님은 개발 프로세스의 속도를 향상시킨 QA 프로세스에 대해 소개했는데요. 개발 프로세스를 지연시키는 네 가지 요소 — 리소스 부족, 비효율적인 릴리스 프로세스, 커뮤니케이션 문제, 기술부채 — 를 개선한 내용이었습니다. 테스트 수행에 필요한 데이터를 효율적으로 확보하기 위해 faker.js 등을 활용했고, UI 테스트를 효과적으로 사용할 수 있도록 코드의 구조를 개선하거나, 테스트 스크립트의 구조를 변경했다고 말했는데요. 이를 통해 자동화 테스트 수행에 걸리는 시간을 25% 이상 단축시켰고, 자동화 테스트를 개발 주기에서 이전보다 일찍 실행함으로써 스프린트 내의 리소스를 확보했다고 말했습니다. 그리고 그렇게 확보한 시간은 개발자와 QA 부서 간 밀접한 협업을 이루는데 사용할 수 있게 되었다고 말했습니다.

 

Introduction of Test Automation Sessions at STAREAST

발표자인 Ikenoue Akari 님은 LINE Corp.의 Service QA팀에서 일하고 있습니다. Ikenoue 님은 지난 2018년 4월에 개최된 STAREAST에 참가하면서 얻게 된 두 가지 인사이트를 세션을 통해 공유했습니다. 이번 STAREAST 2018에서는 AI(Artificial Intelligence, 인공지능)에 관한 세션이 총 12.7%를 차지할 정도로 AI에 대한 관심이 높아졌다고 말했는데요(STARTEAST 2017, 0%). 테스팅 영역에서의 AI의 행보, 특히 자동화 테스트 영역에서 AI가 미칠 영향에 대한 다양한 시각들을 알 수 있었다고 말했습니다. 특히, AI 중에서도 기계 학습(Machine Learning, ML)을 기반으로 자동화 테스팅 프레임워크(Selenium, Appium 등 UI element detection을 통해 테스트를 수행하는 프레임워크)가 가지고 있던 아래 4가지 큰 문제점들을 어느 정도 해결했다는 점이 매우 인상 깊었다고 말했습니다.

  • 코드를 직접 작성해야 함
  • UI 요소를 식별해야 함
  • 테스트 스텝을 지정해야 함
  • 재사용성이 낮음

Test Automation using Cypress

 발표자인 Lee Pei-Yun 님, Miki Liao 님은 LINE Taiwan의 QA팀에서 일하고 있습니다. Lee Pei-Yun 님과 Miki Liao 님은 Cypress를 활용한 테스팅 자동화 사례를 공유했습니다. Cypress를 활용해 기존 자동화 테스트 운영의 애로사항(개발 초기 설정, 수행 시간 증가, 스크립트 작성 및 유지 보수의 어려움)을 해결하고, 한정된 시간과 자원을 활용해 효과적인 테스트 하네스(test harness)를 구성했다고 말했습니다. Cypress는 웹 기반의 End-to-End JavaScript testing 프레임워크로 Selenium에 의존하지 않으며, MochaChai 등을 직접 활용해 assertion을 보다 간결하게 작성하고 운용할 수 있는 특징을 가진 도구입니다. 발표자들은 이 프레임워크를 활용해 네트워크 트래픽을 제어하거나 API 테스팅을 보다 효과적으로 수행하고 있다고 말했습니다.

 

QA in Agile with Android and iOS Native Test Frameworks

발표자인 Lin Kuan-Wei 님(GitHubtwitter)은 LINE Taiwan의 QA팀에서 일하고 있습니다. Lin Kuan-Wei 님은 네이티브 테스트 프레임워크(안드로이드의 Espresso, iOS의 XCTest)를 활용한 테스팅 효율성 및 신뢰성 개선 사례를 공유했습니다. 구글과 애플에서 제공하는 모바일 네이티브 테스트 프레임워크들은, 서드파티에서 제공하는 테스트 프레임워크와 비교해 눈에 띄는 장점을 가지고 있다고 말했는데요. 그 장점은 테스팅 수행 속도가 매우 빠르며, 개발 프레임워크와 완벽하게 통합되어 있기 때문에 신뢰도가 높다는 점이었습니다. 발표자는 해당 프레임워크를 활용해 자동화 테스트의 효율성과 신뢰성을 높이고, 확보한 리소스를 활용해 탐색적 테스팅(exploratory testing)을 수행함로써 개발하는 서비스의 품질을 향상시켰다고 말했습니다. 또한 네이티브 테스트 프레임워크 수행 결과 확보한 코드 커버리지 정보를 기반으로 회귀(regression) 테스트를 확충해야 할 대상을 찾아냈다고 말했습니다.

  

Effective Code Review & Metrics

발표자인 Liu Po-Feng 님은 LINE Taiwan의 QA팀에서 일하고 있습니다. Liu Po-Feng 님은 공용 대시보드(public dashboard)나 풀 리퀘스트(pull request) 등을 활용한 지표 시각화를 통한 코드 품질 향상 사례를 공유했습니다. "측정할 수 없는 것은 향상시킬 수 없다(If you can not measure it, you can not improve it)"는 격언은 지금도 회자됩니다. 개발 산출물 혹은 개발 과정에서 무엇인가를 향상시켜야 한다고 할 때 머릿속에서 쉽게 떠오르는 단어 중 하나가 '코드 품질'일 것입니다. 그렇지만 때로는 '코드 품질'이 향상되었다는걸 어떤 기준으로 판단할 것인지 고개를 갸우뚱하게 될 때가 많습니다. 발표자는 정적 분석 플랫폼인 소나큐브(SonarQube)를 활용하여 서로 합의된 몇 가지 유용한 지표들을 디지털 대시보드나 풀 리퀘스트에 표시함으로써, 지속적이고 즉각적으로 코드 품질 상태 정보를 모두에게 투명하게 공유한다고 말했습니다. 이와 함께 코드 커밋을 위한 정형화된 템플릿을 제공하여 코드 리뷰어들이 보다 쉽게 코드 컨텍스트를 이해하고 리뷰할 수 있도록 했다고 말했습니다.

The Growth of Test Automation in LINE Tech VN

발표자인 Mai Hanh 님, Huong Trang 님은 LINE Tech Vietnam의 Software Development 팀에서 일하고 있습니다. Mai Hanh 님, Huong Trang 님은 테스트 프레임워크 개선(Creative 프레임워크) 사례를 공유했습니다. 자동화 테스트 초기 단계에 사용하던 예전 테스트 프레임워크의 단점을 극복하기 위해 새로운 테스트 프레임워크를 설계했고, 이를 통해 다음과 같은 장점을 얻었다고 말했습니다.

  • 플러그인을 사용한 입력, 출력 데이터를 별도로 처리(엑셀 등)
  • QA는 테스트 케이스를 작성하는데 집중
  • TestClass에서 Selenium, Appium 드라이버에 직접 접근
  • 네이티브 안드로이드 앱은 물론, PC의 웹 브라우저 및 안드로이드 기반 스마트폰의 웹뷰(WebView) 앱도 지원

특히, 테스트 데이터를 직접 스크립트로 작성해야 했던 문제를 해결함으로써 보다 효율적으로 테스트 케이스를 작성할 수 있게 되었습니다. 이 새로운 테스트 프레임워크는 LINE에서 제공하는 다양한 봇(bot) 테스트에 적용할 예정입니다.

 

Day 2

두 번째 날 오전에는 아래와 같이 총 3개의 세션이 진행되었습니다.

제목
발표자
로컬 오피스
Saving Release Master: Deployment Process Automation 김모세 한국
Database Testing Pham Thi Mai
Le Thi Thoa
베트남(하노이)
Test Multiple Devices with JUnit5 Chang Yuhao 일본(후쿠오카)

Saving Release Master: Deployment Process Automation

저(김모세)는 LINE+의 SET 팀에서 일하고 있고, 이번 TAW에서 안드로이드 빌드 산출물 배포 자동화 개선 사례를 공유했습니다. Software Engineer in Test 팀은 테스트 자동화 업무와 함께 개발 인프라 개선 업무도 진행하고 있는데요. 안드로이드 베타 및 릴리스 버전 빌드 시 apk 파일 및 심볼리케이션(symbolication), 디오퓨스케이션(deobfuscation) 파일들을 오류 분석 시스템 및 Google Play 스토어에 자동으로 배포하도록 프로세스를 개선했습니다. 이를 통해 심볼리케이션, 디오퓨스케이션 정보의 누락을 방지하고, 앱 배포의 종속성을 없앴습니다. 네이버와 LINE 그룹에서 사용하는 오류 분석 시스템인 넬로2(nelo2)의 Nelo2 Open API와 Google Play 스토어의 Google Play Developer Publsihing API메이븐 리포지토리를 활용했습니다.

 

Database Testing

 Pham Thi Mai 님, Le Thi Thoa 님은 LINE Tech Vietnam의 Software Development 팀에서 일하고 있습니다. Pham Thi Mai 님, Le Thi Thoa 님은 데이터베이스 테스팅 사례를 공유했습니다. 이번 사례는 데이터베이스 외부로부터의 테스팅(데이터 무결성 등을 검증하기 위한)이 아닌 데이터베이스 디자인 리뷰, 데이터베이스 쿼리 리뷰 등의 관점에서 테스트를 수행하는 점이 인상적이었습니다. 데이터베이스 설계 시 놓치기 쉬운 제약사항들을 DBA와 QA 동료 리뷰를 통해 보완하고, CRUD에 사용하는 SQL 쿼리를 보다 효율적으로 개선할 수 있도록 개발자와 QA 담당자가 협업을 하는 방식으로 업무를 진행했다고 말했습니다. 개발 초기부터 디자인 및 쿼리 리뷰를 수행함으로써 데이터 성능 저하를 조기에 방지해, 개발 후기의 버그 발생 및 이로 인한 비용 낭비의 가능성을 줄이는 것이 목적이라고 말했습니다. 그리고 이 과정에서 얻은 결과들은 그라운드 룰로 확립해 이후 개발과정에서도 활용했다고 말했습니다.

 

Test Multiple Devices with JUnit 5

Chang Yuhao 님은 LINE Fukuoka의 Test Automation 팀에서 일하고 있습니다. Chang Yuhao 님은 JUnit 5를 활용한 테스트 드라이버 매니저 개선 사례를 공유했습니다. JUnit 4, Appium, Selenium 의 조합으로 구성된 기존의 테스트 드라이버 매니저를 JUnit 5 기반으로 변경하였고, Vintage, Jupiter API를 사용함으로써 JUnit 4 기반의 테스트 케이스를 재활용한 것은 물론, JUnit 5 기반 테스트 케이스의 장점을 모두 활용할 수 있도록 했다고 말했습니다. 다양한 디바이스를 대상으로 하는 경우엔 JUnit 5에서 새롭게 제공하는 extension model, parameter resolver, custom tag 등을 활용해 테스트 자유도를 확보하는 방법도 공유해 주었습니다.

 

마치며

LINE 글로벌 그룹 각 로컬 오피스의 많은 사례들을 충분히 나누기엔 이틀이라는 시간이 좀 짧다는 느낌이 들었지만, 그래도 각 로컬 오피스의 동료들이 함께 모여 즐거운 분위기에서 서로의 관심과 고민, 아이디어를 나눌 수 있었던 소중한 시간이었다고 생각합니다. 테스트 자동화는 여전히 미지의 세계고, '완벽하게 성공했다'고 자신있게 말할 수 있는 사례도 잘 찾기 어렵습니다. 심지어 LINE 내에서조차 각 로컬 오피스에서 개발하고 제공하는 서비스의 성격이 달라서, 동일한 방식을 서로의 업무에 그대로 적용하기도 쉽지 않습니다. 테스트 자동화는 개발 프로세스, 개발 문화 속에 자연스럽게 녹아들어야 하고, 그렇게 될 때만이 testable한 제품과 서비스를 만들어 나갈 수 있을 것입니다.

Grow with Test Automation & Closing Distance between Development and Test.

우리는 길을 찾을 것입니다. 언제나 그래왔던 것처럼 말입니다. :)