The Chromium Chronicle n. 10: rilevare le regressioni dell'interfaccia utente con i test di Pixel

project_path: /blog/_project.yaml book_path: /_book.yaml page_type: blog refresh_date: 2020-02-05 description: La strategia di test di Chrome si basa molto sui test automatici di correttezza funzionale e sui test manuali, ma nessuno di questi rileva in modo affidabile le regressioni dell'interfaccia utente minori. Utilizza i test dei pixel per automatizzare i test dell'interfaccia utente del browser desktop. image_path: ../images/chromiumchronicle.jpg keywords: docType:Blog,chromiumchronicle

Episodio 10: di Sven Zheng a Bellevue, WA (gennaio 2020)
Puntate precedenti

La strategia di test di Chrome fa grande affidamento sui test automatici di correttezza funzionale e sui test manuali, ma nessuno dei due rileva in modo affidabile le regressioni dell'interfaccia utente minori. Utilizza i test dei pixel per automatizzare i test dell'interfaccia utente del browser desktop.

Quando scrivi un test dei pixel, evita le irregolarità: (1) disattivando l'animazione, (2) utilizzando dati fittizi e (3) testando la minima area di superficie possibile.

Di seguito è riportata un'immagine di esempio utilizzata per verificare la correttezza dei pixel per la omnibox:

Immagine nella omnibox utilizzata per il confronto dei pixel.

Inoltre, il codice per verificare che il browser corrisponda a questa immagine:

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);
}

Il codice si trova all'indirizzo chrome/test/pixel/demo/skia_gold_demo_pixeltest.cc. Le intestazioni pertinenti sono skia_gold_pixel_diff.h per i test delle unità e browser_skia_gold_pixel_diff.h per i test del browser.

La differenza e la procedura di approvazione dei pixel si basano su Skia Gold. I test sui pixel Skia Gold forniscono un flusso di lavoro di approvazione visiva e consentono agli sviluppatori di accettare piccole scaglie approvando più immagini dorate.

Attualmente la suite di test è in esecuzione con il bot FYI di Windows. Sono supportati i test del browser e i test delle unità di Visualizzazioni.