GTAC 2015: 프레젠테이션

시작 문구

Yvette Nameth (Google)

기조연설

위르겐 알가이어 (Google)

교차 애플리케이션/교차 기기 테스트의 Uber 챌린지

Apple Chow (Uber) 및 Bian Jiang (Uber)

링크: 동영상, 슬라이드

2015년 3월에 Uber에 가입하자마자 모바일 애플리케이션의 UI 테스트 도구를 조사하는 과정에서 Uber만의 문제가 발생했습니다. 다수의 상태 테스트를 완료하려면 탑승자 애플리케이션과 운전자 애플리케이션이 엔드 투 엔드 테스트 시나리오를 완료하기 위해 사용자의 행동을 서로 통신/조정해야 합니다. 이 강연에서는 Octopus라는 플랫폼에 구애받지 않는 솔루션을 설명하고 이 솔루션이 여러 기기에서 실행되는 여러 앱 간의 통신을 조정하는 방법을 설명합니다. 이 솔루션은 다양한 앱 또는 기기 (예: 멀티 사용자 게임, 멀티 사용자 메시지/커뮤니케이션 앱 등) 간의 조정/통신이 필요한 모든 테스트에 채택할 수 있습니다.

로봇 지원 테스트 자동화

한스 쿠스마넨(OptoFidelity) 및 나탈리아 라이노넨(OptoFidelity)

링크: 동영상, 슬라이드

OptoFidelity는 R&D 테스트 자동화 솔루션 개발 및 제공 분야에서 10년의 경험을 가진 핀란드의 첨단 기술 기업입니다. 이 강연에서는 휴대기기 UI 성능 테스트에 사용된 방해가 되지 않는 테스트 방법의 경험과 향후 전망을 설명합니다. Chrome OS팀에서 Android 및 ChromeOS 기기의 엔드 투 엔드 지연 시간을 측정하기 위해 OptoFidelity의 로봇 솔루션을 사용한다는 것을 알고 계셨나요?

즐거움과 이익을 위해 체인으로 감기: 모바일 교차 플랫폼 통합 테스트에서 얻은 교훈

댄 조반넬리 (Google)

링크: 동영상, 슬라이드

모바일 개발은 어렵습니다. 테스트 인프라를 빌드하는 것은 어렵습니다. 크로스 플랫폼 업무는 쉽지 않습니다. 이 세 가지를 결합하면 재해에 대비한 레시피를 얻을 수 있습니다. 이 강연에서 댄 조반넬리는 크로스 플랫폼 모바일 테스트 인프라 프로젝트를 수행한 자신의 경험을 공유합니다. 무엇이 제대로 작동했는지, 무엇이 잘못되었는지, (매우) 잘못되었는지, 그리고 지금 알고 있었으면 하는 내용이 무엇인지 토론합니다. 모바일이 아닌 엔지니어를 위한 모바일 도구 설계에 관한 유용한 정보를 확인하려면 매트릭스가 무엇인지, 그리고 게임에서 어떻게 이기는지 알아보세요.

실제 기기를 사용한 모바일 게임 테스트 자동화

Jouko Kaasila(비트바/테스트드로이드)

링크: 동영상, 슬라이드

모바일 게임은 오늘날 앱 스토어에서 가장 많은 수익을 창출하는 카테고리이므로 모든 기기에서 모든 게임의 모든 버전이 원활하게 작동하도록 하는 것이 게임 개발자에게 매우 중요합니다. 이를 검증하는 것의 중요성에도 불구하고 게임 개발자는 모바일 게임의 테스트를 자동화하기 위한 몇 가지 예 또는 프레임워크가 거의 없습니다. 따라서 게임 개발자는 글로벌 기업이 게임 시장을 커버해야 하는 범위까지 확장할 수 없는 수동 테스트에 의존해야 합니다. 한 가지 주된 이유는 게임이 모바일 앱으로 독특하다는 특성입니다. 화면에 직접 액세스하고 OS에서 제공하는 모든 UI 서비스를 우회하며, 기존 객체가 노출되지 않기 때문에 대부분의 테스트 자동화 프레임워크가 쓸모없게 렌더링되기 때문입니다.

다행히 표준 모바일 테스트 자동화 프레임워크를 사용하여 창의성과 공개적으로 사용 가능한 라이브러리를 활용해 게임의 실제 휴대기기에서 테스트 자동화를 구동하는 방법이 있습니다. 프레젠테이션에서 Testdroid의 Jouko Kaasila는 실제 사례와 샘플 코드를 사용하여 세 가지 접근 방식을 논의합니다.

수프 만두를 구성요소로 테스트하는 방법

토니 창(Google)

링크: 동영상, 슬라이드

불안정한 테스트를 안정화하는 데 너무 많은 시간을 할애한 사람들은 테스트를 분해해야 한다는 데 동의합니다. 그러나 어떤 일은 어렵고 방법을 잘 모를 수도 있고, 모든 시나리오를 검증하기 위해 E2E 테스트가 필요하다고 생각하는 팀원이 어려움을 겪을 수도 있습니다. 구성요소에서 제품을 보는 데 익숙하지 않을 때 아이디어를 얻기가 어려울 수 있으므로 수프 만두의 추상적 예를 사용하여 구성요소와 분리할 수 없는 제품을 분석하고 테스트를 적용하는 방법을 보여줍니다.

최종 제품에 대한 자신감을 심어줄 수 있도록 E2E 테스트를 구성요소 테스트로 변환하는 과정을 재미있게 살펴보겠습니다. 제품 자체를 살펴볼 때 새로운 관점을 얻으시길 바랍니다.

Chromecast 테스트 자동화

브라이언 고건 (Google)

링크: 동영상, 슬라이드

사물 인터넷으로 인해 연결된 기기가 급증했습니다. 다양한 상호 운용 기기의 동작 검증은 중요한 테스트 과제입니다. Chromecast를 테스트하기 위해 몇 가지 접근 방식을 취했습니다. Google에서는 제품에서 신뢰할 수 있는 품질 신호를 생성하기 위해 개발한 테스트 프레임워크, 실험실 인프라, 테스트 도구에 대해 간략히 설명합니다. 노이즈가 많은 네트워크 환경에서 작동하는 제품을 테스트할 때의 어려움을 자세히 설명합니다. Chromecast와 같은 기기를 위한 테스트 도구는 아직 초기 단계에 있으며, 소프트웨어 테스트 엔지니어링을 혁신할 수 있는 기회가 있습니다.

Android 앱 테스트에 로봇 사용

샤우비크 로이 초우다리 박사(조지아 기술/체크로이드)

링크: 동영상, 슬라이드

Monkey와 같은 소프트웨어 로봇을 사용하면 수작업 없이 Android 애플리케이션을 테스트할 수 있습니다. Android 애플리케이션을 구동하기 위한 테스트 입력을 자동으로 생성하는 것이 목표인 학계에서 이러한 도구를 몇 가지 제안합니다. 이 강연에서는 대표적인 테스트 입력 생성 도구 세트를 소개하고 비교 연구를 통해 강점과 한계를 중점적으로 설명합니다. 이러한 도구의 내부 기능과 이를 사용하여 애플리케이션을 테스트하는 방법을 알아봅니다. 도구를 사용하는 VM 설정과 함께 연구에 대한 자세한 내용은 http://bear.cc.gatech.edu/~shauvik/androtest/에서 확인할 수 있습니다.

검사가 불안정하지 않음

Alister Scott(자동화)

링크: 동영상, 슬라이드

불안정 테스트는 모든 자동 테스트 엔지니어의 버그입니다. 누군가 (앨리스터일 가능성이 있음)가 '이런이 같은 테스트를 반복해서 여러 결과를 받음'이라고 말했듯이, 불안정한 테스트에서는 문제 해결의 끝이 보이지 않지만 불안정하거나 불안정하지 않은 테스트는 존재하지 않습니다. 아마 다른 관점에서 이 문제를 살펴봐야 할 것입니다. 복원력이 우수한 영구 테스트를 빌드하는 것보다 더 확정적이고 테스트 가능한 시스템을 빌드하는 데 더 많은 시간을 할애해야 합니다. 테스트의 결함으로 인해 시스템 아래에 실제 문제가 숨겨진 사례와 더 나은 시스템을 빌드하여 테스트 결함을 해결하는 방법을 공유하는 예시를 소개합니다.

대규모 자동 시각적 테스트

Adam Carmi (Applitools)

링크: 동영상, 슬라이드

자동화된 시각적 테스트는 개발 / 테스트 커뮤니티에서 새롭게 부상하는 주요 추세입니다. 이 강연에서는 시각적 테스트가 무엇이며 자동화해야 하는 이유를 알아봅니다. 시각적 테스트 자동화와 관련된 몇 가지 기술 문제를 자세히 살펴보고 최신 도구가 이를 어떻게 해결하는지 보여줍니다. 교차 브라우저 및 교차 기기 시각적 테스트를 실행할 수 있는 최첨단 기술을 시연하고 대규모 시각적 테스트로 성공을 위한 핵심 팁을 제공합니다.

핸드오프 회귀 테스트

카린 룬드버그 (트위터) 및 푸니 칸두리 (트위터)

링크: 동영상, 슬라이드

팀에서 서비스의 주요 리팩터링을 마쳤으며 모든 단위 및 통합 테스트가 통과되었습니다. 훌륭합니다. 하지만 아직 끝이 아닙니다. 이제 문제가 발생하지 않았는지, 아직 발견하지 못한 버그가 없는지 추가로 확인해야 합니다. 이제 디피를 실천에 옮길 시간입니다.

단위 또는 통합 테스트와 같이 코드가 올바른지 확인하는 도구와 달리 Diffy는 새 서비스와 이전 서비스의 인스턴스를 나란히 배치하여 수정된 서비스의 동작을 비교하고 예시 요청을 각각 라우팅하고 응답을 비교하고 이러한 비교에서 드러난 모든 회귀를 제공합니다.

또한 이 도구는 오픈소스로 제공되었으며, Twitter의 오픈소스 프로젝트 중 가장 인기 있는 도구로 빠르게 자리잡고 있습니다.

Android 애플리케이션을 위한 자동 접근성 테스트

Casey Burkhardt(Google)

링크: 동영상, 슬라이드

이 강연에서는 Android 플랫폼의 핵심 접근성 어포던스를 소개하고 접근성과 관련된 몇 가지 일반적인 함정을 설명합니다. 새로운 Android 접근성 테스트 프레임워크와 Espresso 및 Robolectric 테스트 프레임워크로의 통합에 관해 알아봅니다. 마지막으로 기존 Android 프로젝트 테스트에 자동화된 접근성 확인을 추가하는 것이 얼마나 쉬운지 알아보겠습니다.

통계 데이터 샘플링

셀랄 지프치 (Google), 벤 그린버그 (MIT 대학원생)

링크: 동영상, 슬라이드

테스트에서 프로덕션 데이터 샘플을 사용하는 것이 일반적입니다. 예를 들면 다음과 같습니다.

  • 상태 테스트: 시스템에 프로덕션 데이터 샘플을 제공하여 실패가 있는지 확인합니다.
  • A/B 테스트: 대규모 프로덕션 데이터 청크를 가져와서 시스템의 현재 및 새 버전을 통해 실행하고 검사를 위해 출력을 비교합니다.

팀은 프로덕션 데이터 샘플을 얻기 위해 일반적으로 다음과 같은 임시 솔루션을 사용합니다.

  • 특정 필드 (예: 숫자 필드)의 분포를 수동으로 살펴봄
  • 무작위 샘플 선택

그러나 이러한 접근 방식은 심각한 단점이 있습니다. 드물게 발생하는 이벤트 (예: 특이 사례)를 놓칠 수 있어 프로덕션에서 포착되지 않는 버그가 발생할 위험이 커집니다. 이러한 위험을 완화하기 위해 팀에서는 매우 큰 샘플을 선택합니다. 그러나 이렇게 큰 샘플에는 더 많은 단점이 있습니다.

  • 드물게 누락된 이벤트가 있을 수 있습니다.
  • 테스트 런타임이 크게 증가함
  • 차이점이 너무 커서 사람이 이해하기 힘들고 반복이 많습니다.

이 강연에서는 프로덕션 데이터에서 '좋은' 샘플을 '지능적으로' 선택하기 위한 새로운 통계 데이터 샘플링 기법을 제안합니다.

  • 드물게 발생하는 이벤트를 놓치지 않도록 보장
  • 중복을 제거하여 선택한 샘플의 크기를 최소화합니다.

Google의 기법은 드물게/경계되는 경우를 포착하고, 샘플 크기를 최소로 유지하고, 개발자의 테스트 출력/차이를 확인하는 수고를 덜어줍니다. 또한 병렬 실행 (예: 맵리듀스)을 지원하므로 짧은 기간 내에 방대한 양의 데이터를 처리하여 샘플을 선택할 수 있습니다.

Nest 자동화 인프라

Usman Abdullah(Nest), Giulia Guidi(Nest), Sam Gordon(Nest)

링크: 동영상, 슬라이드

Nest의 사려 깊은 홈 비전에는 상호 연결된 지능형 기기가 함께 작동하여 집이 더 안전하고 효율적이며 인식될 수 있도록 하는 것이 포함됩니다. 이 강연에서는 이러한 비전을 현실로 이루기 위해 빌드된 자동화 인프라와 테스트 도구를 중점적으로 다룹니다. Nest 내의 여러 팀이 자동화된 회귀 테스트 및 분석을 위해 크로스 플랫폼 및 기기/특성별 시스템에서 모두 작업하고 있습니다. 실제 제품 테스트의 구체적인 예시를 사용하여 루프 테스트 인프라 및 전력 회귀 분석 도구의 교차 제품 하드웨어와 카메라 및 움직임 감지 특정 도구 세트를 다룹니다.

이벤트 생성기

Roussi Roussev(Splunk)

링크: 동영상, 슬라이드

이 강연에서는 Splunk의 소프트웨어 이벤트 생성기를 개발하고 사용한 경험을 다룹니다. 대형 실험용 머신을 실행하지 않고도 이벤트 생성기가 실제 세계를 이해하는 데 필수적이었던 입자 물리학에서 영감을 얻은 로그 생성기는 최신 및 레거시 서드 파티 소프트웨어와의 수많은 통합을 테스트하는 방식을 개선했습니다. 이 세션에서는 기본 기능과 실제 로그를 생성하는 데 따르는 어려움을 다룹니다.

멀티스레드 테스트 합성

무랄리 크리슈나 라마나단(인도 인스티튜트 오브 사이언스, 벵갈루루)

링크: 동영상, 슬라이드

부정확하거나 부적절한 동기화로 인해 발생하는 멀티스레드 라이브러리에서 미묘한 동시 실행 오류는 정적 기술만 사용하여 정확히 정확히 파악하기 어려운 경우가 많습니다. 반면 동적 감지기의 효과는 멀티스레드 테스트 모음에 따라 크게 달라집니다. 멀티스레드 테스트 모음은 데이터 경합, 교착 상태 및 원자성 위반을 포함한 동시 실행 버그를 식별하고 트리거하는 데 사용될 수 있습니다. 일반적으로 이러한 다중 스레드 테스트는 버그를 노출하기 위해 적절하게 공유되는 호출과 관련된 객체와 특정 메서드 조합을 호출해야 합니다. 버그에 대한 사전 지식이 없다면 이러한 테스트를 만들기가 어려울 수 있습니다.

이 강연에서는 스레드 안전 위반을 감지하기 위한 테스트를 합성할 수 있는 가볍고 확장 가능한 기술을 제시합니다. 멀티스레드 라이브러리와 순차적 테스트 모음을 고려하여 순차 실행 추적을 검사하고 라이브러리 메서드 호출을 통해 공유 객체를 구동하는 동시 클라이언트 프로그램을 동시 실행 버그 트리거의 결과로 생성하는 완전 자동화된 분석을 설명할 것입니다. 잘 테스트된 다양한 자바 라이브러리에 대한 실험 결과를 통해 여러 복잡한 버그를 발견하는 데 Google 접근 방식의 효과를 입증합니다.

Netflix에서 스트리밍 실험 사용 설정하기

Minal Mishra (Netflix)

링크: 동영상, 슬라이드

6,900만 명이 넘는 사용자의 스트리밍 환경이 Netflix에 가장 중요합니다. 이를 신속하게 개선하기 위해 적응형 스트리밍 알고리즘을 자바스크립트 레이어로 이동했습니다. 이로 인해 클라이언트 자바스크립트 소프트웨어가 자주 출시되어 소비자의 스트리밍 경험에 직접적인 영향을 미치는 독특한 문제가 발생했습니다. 서비스 애플리케이션에 널리 받아들여져 온 지속적 배포 패러다임을 도입하여 체크인 수명 주기 동안 리스크를 없애고 업데이트를 자주 제공했습니다. 이 강연에서는 소프트웨어 업데이트를 가능하게 하는 이 패러다임의 주요 구성요소를 설명합니다. 자바스크립트 클라이언트와 도구의 출시 절차를 자세히 살펴보며 상태를 현재 버전과 정확하게 비교합니다. 이 과정에서 직면한 과제도 알려 드리겠습니다.

인터넷 확인하기

야빈 강 (LinkedIn)

링크: 동영상, 슬라이드

서비스 수준 통합 테스트를 위한 모든 아웃바운드 트래픽을 모의 처리하는 데 도움이 되는 Linkedin의 새로운 모의 시스템에 관해 이야기하고 인터넷을 모의 처리합니다. Linkedin 모의 전략의 개요도 설명합니다. 지식과 Google이 얻은 교훈을 모든 사용자와 공유합니다.

GPS 모니터링 스테이션 수신기의 효과적인 테스트

앤드류 크노트 (Lockheed Martin)

링크: 동영상, 슬라이드

공군에서 사용하는 기존 GPS 모니터링 스테이션은 유지관리가 어려워졌으며 GPU 가속 소프트웨어 정의 라디오 (SDR) 접근 방식으로 대체하기 위한 작업이 진행 중입니다. 이 테스트용 GPS 수신기의 고유한 테스트 과제와 여러 테스트 방법에 대한 개요를 제공합니다. 이러한 테스트 접근 방식은 GPS 애플리케이션에 집중하는 반면 다른 프로덕션 수준의 SDR 작업에도 쉽게 적용될 수 있습니다.

웨어러블 기기의 자동화

Anurag Routroy(Intel)

링크: 동영상, 슬라이드

웨어러블 기술이 개인 및 비즈니스 용도로 점점 더 많이 사용되고 있기 때문에 Android 시장에서 탄탄한 공간을 확보한 모든 회사는 이 새로운 기술에 초점을 맞추었습니다. 따라서 웨어러블 지원으로 앱을 만들면 웨어러블 기기에서 앱을 테스트하는 노력이 늘어납니다. 따라서 웨어러블 기기의 자동화는 테스트 작업을 줄이고 효율성을 높이는 데 중요합니다.

통합 인프라 및 CI 통합 테스트 (Docker/Vagrant)

Maxim Guenis (초음파)

링크: 동영상, 슬라이드

개발자는 지속적인 개발 주기를 개발, 디버깅, 진행할 때 로컬 개발 환경을 준비하는 데 매일 어려움을 겪습니다.CI 도구와 함께 사용하도록 docker와 vagrant를 통합하면 이 문제를 해결할 수 있습니다. 이 조합을 통해 개발 머신에서 스택 수준으로 애플리케이션을 제어하는 동시에 통합 테스트에서 동일한 스택을 사용할 수 있습니다. 이 강연에서는 다음과 같은 내용을 다룹니다.

  • CI 통합 테스트에 Docker 사용
  • 단일 Docker 또는 앱 대신 스택 제어.
  • git 및 docker 도구로 쉽게 배포되는 개발 및 테스트 환경의 버전 제어
  • Mac 및 Windows에서 Docker를 실행하기 위한 원활한 지원

쓸모없는 테스트 비트 제거

패트릭 람 (워털루 대학)

링크: 동영상, 슬라이드

테스트 모음의 정적 분석 기술을 전문화한 덕분에 흥미로운 결과를 얻을 수 있었습니다. 앞서 대부분의 테스트가 간단한 직선 코드, 즉 어설션으로 구성된 페이로드가 뒤따르는 설정 문 시퀀스라는 사실을 배웠습니다. 정적 분석에서 어떻게 쓸모없는 설정 문을 찾아내면 개발자가 테스트 사례를 간소화하고 속도를 높일 수 있는지 알 수 있습니다.

적용 범위는 테스트 모음의 효과와 상관관계가 높지 않음

로라 이노젬체바(워털루 대학)

링크: 동영상, 슬라이드

테스트 모음의 커버리지는 종종 결함을 감지하는 기능의 프록시로 사용됩니다. 그러나 코드 커버리지와 테스트 도구 모음 효과 사이의 상관관계를 조사한 이전 연구에서는 이러한 테스트 모음 특성 간의 관계의 특성과 강도에 관한 합의에 도달하지 못했습니다. 또한 많은 연구가 소규모 또는 합성 프로그램을 사용하여 진행되었기 때문에 결과가 대규모 프로그램으로 일반화되는지 불분명해졌으며 일부 연구에서는 테스트 모음 크기의 잔인한 영향을 설명하지 않았습니다. Google은 테스트 모음 크기, 커버리지, 실제 자바 프로그램에 대한 효과 간의 관계를 평가하여 이러한 연구를 확장했습니다. 이 연구는 문헌에서 가장 규모가 큰 연구입니다. 이러한 스위트의 문 커버리지, 결정 커버리지, 수정된 조건 범위를 측정했고 변이 테스트를 사용하여 결함 감지 효과를 평가했습니다. 테스트 모음의 테스트 사례를 제어할 때 커버리지와 효과 사이에 낮은-중간 상관관계가 있는 것으로 나타났습니다. 또한 더 강력한 노출 범위가 제품군의 효과에 대한 유용한 정보를 제공하지 않는다는 사실을 발견했습니다.

RpcReplay를 사용한 가짜 백엔드

Matt Garrett(Google)

링크: 동영상, 슬라이드

테스트를 빠르고 안정적으로 유지하는 것이 매우 중요합니다. 서버가 많은 백엔드에 의존하는 경우에는 이것이 어렵습니다. 개발자는 길고 불안정한 테스트 또는 가짜 구현 작성 및 유지 관리 중에서 선택해야 합니다. 대신 이러한 백엔드에서 기록된 트래픽을 사용하여 테스트를 실행할 수 있습니다. 이를 통해 두 가지 장점을 모두 활용할 수 있으므로 개발자가 실제 백엔드에 대해 빠르게 테스트할 수 있습니다.

ChromeOS 테스트 자동화 실험실

Simran Basi (Google), Chris Sosa (Google)

링크: 동영상, 슬라이드

ChromeOS는 현재 자체 소프트웨어를 실행하는 60개 이상의 다양한 Chromebook/상자를 배송 중입니다. 이 현장에서는 6주마다 고객에게 새로운 시스템이 도입됩니다. 200명 이상의 개발자가 강력한 지속적 통합 시스템 점검을 하지 않으면 가능합니다. 이 강연에서는 테스트 자동화 실험실을 구체적으로 중심으로 전반적인 아키텍처를 설명합니다. 또한 단일 Chromebox에서 실행되는 전체 테스트 자동화 인프라인 Moblab(모바일 약식 실험실의 줄임말)에 관해 논의합니다. 많은 파트너가 이 시스템을 사용하여 Google과 같은 방식으로 테스트를 실행할 수 있습니다.