Chromium Chronicle #17: 브라우저 테스트 믹스

에피소드 17: 캘리포니아주 샌프란시스코의 Toby Huang (2021년 1월)
이전 에피소드

브라우저 테스트는 단위 테스트보다 엔드 투 엔드에 가까운 Chromium 코드에 대한 자동화된 테스트의 한 형태입니다. 브라우저 테스트는 단위 테스트와 같이 순수한 입출력 기능을 테스트하는 대신 브라우저 인스턴스를 만들고 다양한 UI 요소를 테스트합니다. 통합 자동 테스트는 사용자의 엔드 투 엔드 환경을 시뮬레이션하는 데 중요합니다. 브라우저 테스트를 작성할 때 사용자가 수동으로 실행할 수 있는 설정 작업을 프로그래매틱 방식으로 실행해야 하는 경우가 많습니다. 이를 위해 믹신은 재사용 가능한 방식으로 중요한 브라우저 테스트 설정을 실행하는 도구 모음입니다.

유용한 믹스인의 예는 다음과 같습니다.

  • 시크릿 모드 테스트: GuestUserMixin
  • 서버의 사용자 정책을 모의 처리하기 위한 UserPolicyMixin
  • FakeGaiaMixin: Gaia 서버의 응답 모의 처리

다양한 용도로 나만의 맞춤 믹스를 만들 수 있습니다.

아래 스니펫은 테스트의 게스트 사용자로 로그인합니다. 기능이 시크릿 모드에서 작동하는지 확인해야 합니다.

권장사항
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

LoggedInUserMixin를 사용하면 테스트에 Family Link 사용자로 편리하게 로그인할 수 있습니다. 기능이 자녀 감독 기능과 관련된 모든 사항에 영향을 미치는 경우 관리 대상 사용자를 위한 기능을 테스트해야 합니다. 하위 사용자가 시크릿 모드를 사용 중지했거나 부모의 승인 없이는 확장 프로그램을 설치할 수 없는 경우를 잊어버리는 버그일 수 있습니다. LoggedInUserMixin는 다른 믹스인으로 구성된 복합 믹스인입니다.

권장사항
class MyChildBrowserTestClass : public MixinBasedInProcessBrowserTest {
 protected:
  void SetUpOnMainThread() override {
    MixinBasedInProcessBrowserTest::SetUpOnMainThread();
    logged_in_user_mixin_.LogInUser();
  }

 private:
  LoggedInUserMixin logged_in_user_mixin_{&mixin_host_,
                                          LoggedInUserMixin::LogInType::kChild,
                                          embedded_test_server(), this};
};

믹스인의 주요 이점 중 하나는 상속 대신 컴포지션을 사용하고 다이아몬드 다중 상속 문제를 방지하는 것입니다. 둘 이상의 테스트 기본 클래스에서 상속하면 다이아몬드 문제가 발생하지만 이 문제를 피하면서 믹스인을 혼합할 수 있습니다. 믹스인을 사용해도 상속이 완전히 삭제되는 것은 아닙니다. 브라우저 테스트 클래스가 여전히 MixinBasedInProcessBrowserTest에서 상속해야 하기 때문입니다. 하지만 다행히 기본 클래스는 범용이며 가볍습니다.

자료