Chromium Chronicle nr 10: wyłapywanie regresji interfejsu użytkownika dzięki testom Pixela

ścieżka_projektu: /blog/_projekt.yaml Book_path: /_book.yaml page_type: blog Odśwież_date: 5.02.2020 opis: Strategia testowania w Chrome opiera się w znacznym stopniu na automatycznych testach poprawności funkcjonalnych i testach ręcznych, ale żadne z tych narzędzi nie wykrywa drobnych regresji interfejsu użytkownika. Wykorzystaj testy pikselowe, aby zautomatyzować testowanie interfejsu użytkownika przeglądarki na komputerze. image_path: ../images/chromiumchronicle.jpg słowa kluczowe: docType:Blog,chromiumchronicle

Odcinek 10: Sven Zheng in Bellevue, Waszyngton (styczeń 2020 r.)
Poprzednie odcinki

Strategia testowania w Chrome w dużym stopniu opiera się na automatycznej poprawności funkcjonalnej testy i testy ręczne, ale żadne z nich nie wychwytuje poprawnie interfejsu użytkownika. regresji. Wykorzystaj testy pikselowe, aby zautomatyzować testowanie interfejsu użytkownika przeglądarki na komputerze.

Podczas pisania testu pikseli unikaj niestabilności obrazu przez: (1) wyłączenie animacji, (2) użycie próbek danych i (3) przetestowanie minimalnego obszaru powierzchni.

Oto przykładowy obraz, który służy do sprawdzania poprawności pikseli w omniboksie:

Obraz omniboksu służący do porównywania pikseli.

A kod sprawdzający, czy przeglądarka pasuje do tego obrazu:

IN_PROC_BROWSER_TEST_F(SkiaGoldDemoPixelTest, TestOmnibox) {
  // Always disable animation for stability.
  ui::ScopedAnimationDurationScaleMode disable_animation(
      ui::ScopedAnimationDurationScaleMode::ZERO_DURATION);
  GURL url("chrome://bookmarks");
  AddTabAtIndex(0, url, ui::PageTransition::PAGE_TRANSITION_FIRST);
  auto* const browser_view = BrowserView::GetBrowserViewForBrowser(browser());
  // CompareScreenshot() takes a screenshot and compares it with the
  // golden image, which was previously human-approved, is stored
  // server-side, and is managed by Skia Gold. If any pixels differ, the
  // test will fail and output a link for the author to triage the
  // new image.
  bool ret = GetPixelDiff().CompareScreenshot("omnibox",
      browser_view->GetLocationBarView());
  EXPECT_TRUE(ret);
}

Kod ten znajduje się pod adresem chrome/test/pixel/demo/skia_gold_demo_pixeltest.cc. W przypadku testów jednostkowych odpowiednie nagłówki to skia_gold_pixel_diff.h oraz browser_skia_gold_pixel_diff.h na potrzeby testów przeglądarki.

Proces zatwierdzania i różnicowania pikseli jest realizowany przez Skia Gold. Pixel Gold jest wizualnym procesem zatwierdzania i pozwala programistom aby nie były widoczne w przypadku małych płatków, zatwierdzając kilka złotych zdjęć.

Obecnie pakiet testowy działa w oparciu o bota Windows FYI. Testy przeglądarki Testy jednostkowe i Wyświetlenia są obsługiwane.