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

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

브라우저 테스트는 Chrome 코드에 대한 자동화된 테스트의 한 형태로 더 높은 성능을 발휘할 수 있습니다 브라우저 테스트는 브라우저 인스턴스를 생성하고 순수한 입력/출력 기능만 테스트하는 대신 다양한 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에서 상속해야 하지만 다행히 기본 클래스는 범용이며 경량입니다.

리소스