Mai mult decât un meme: Google folosește TheVerge.com pentru a evalua dispozitivele Nexus

Se pare că Google încarcă pagina de pornire a The Verge atunci când efectuează testarea Workload Automation pe toate dispozitivele sale Nexus.

Sapă în AOSP este o modalitate excelentă de a face noi descoperiri despre Android și de data aceasta am întâlnit ceva destul de hilar. De ceva timp, utilizatorii au raportat că site-ul de tehnologie TheVerge.com a oferit performanță lentă pe dispozitivele mobile.

Acum, spre meritul lor, performanța site-ului lor s-a îmbunătățit de-a lungul timpului din experiența mea. În plus, nu este ca și cum alte site-uri (inclusiv al nostru) nu au probleme la care să ne străduim să lucrăm, dar cu toate acestea mi s-a părut destul de amuzant faptul că în set oficial de valori de referință pentru volumul de muncă, Google a decis să folosească The Verge în testarea lor.


Automatizarea sarcinii de lucru Android

Automatizarea sarcinii de lucru (WA) este un cadru dezvoltat de BRAŢ pentru colectarea datelor de performanță pe dispozitivele Android prin executarea unei suită de multe sarcini de lucru repetabile. Google evaluează performanța pe dispozitivele lor făcând multe dintre aceste teste de volum de muncă și colectând un rezumat al acestora consumul de energie, pe care apoi o importă într-o foaie de calcul pentru a vedea cum optimizările lor au îmbunătățit performanța timp. Compania alege și alege ce aplicații să includă în suita sa de testare, dar, în general, se limitează la majoritatea aplicațiilor populare Google. Acesta este esența modului în care funcționează, dar vom arăta dovezile din codul sursă și vom descrie testul suite mai detaliat, astfel încât să puteți obține o imagine mai bună a testelor automate pe care Google le face pentru a măsura performanţă.

În cadrul AOSP, există un directorul dedicat la testele de automatizare a sarcinii de lucru. Aplicațiile care sunt utilizate pentru testare sunt definite în defs.shși, în general, se încadrează în una dintre cele două categorii: aplicația Google implicită, preinstalată sau browser web terță parte. O aplicație de referință iese în evidență de celelalte și este com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity care presupun că se referă la Revizor BrueBench ST benchmark care se bazează pe Unreal Engine 4.

# default activities. Can dynamically generate with -g.
gmailActivity='com.google.android.gm/com.google.android.gm.ConversationListActivityGmail'
clockActivity='com.google.android.deskclock/com.android.deskclock.DeskClock'
hangoutsActivity='com.google.android.talk/com.google.android.talk.SigningInActivity'
chromeActivity='com.android.chrome/_not_used'
contactsActivity='com.google.android.contacts/com.android.contacts.activities.PeopleActivity'
youtubeActivity='com.google.android.youtube/com.google.android.apps.youtube.app.WatchWhileActivity'
cameraActivity='com.google.android.GoogleCamera/com.android.camera.CameraActivity'
playActivity='com.android.vending/com.google.android.finsky.activities.MainActivity'
feedlyActivity='com.devhd.feedly/com.devhd.feedly.Main'
photosActivity='com.google.android.apps.photos/com.google.android.apps.photos.home.HomeActivity'
mapsActivity='com.google.android.apps.maps/com.google.android.maps.MapsActivity'
calendarActivity='com.google.android.calendar/com.android.calendar.AllInOneActivity'
earthActivity='com.google.earth/com.google.earth.EarthActivity'
calculatorActivity='com.google.android.calculator/com.android.calculator2.Calculator'
calculatorLActivity='com.android.calculator2/com.android.calculator2.Calculator'
sheetsActivity='com.google.android.apps.docs.editors.sheets/com.google.android.apps.docs.app.NewMainProxyActivity'
docsActivity='com.google.android.apps.docs.editors.docs/com.google.android.apps.docs.app.NewMainProxyActivity'
operaActivity='com.opera.mini.native/com.opera.mini.android.Browser'
firefoxActivity='org.mozilla.firefox/org.mozilla.firefox.App'
suntempleActivity='com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity'
homeActivity='com.google.android.googlequicksearchbox/com.google.android.launcher.GEL'

Aceste activități sunt lansate prin linia de comandă ADB cu următoarele Systrace opțiuni pentru măsurarea performanței aplicației:

dflttracecategories="gfx input view am rs power sched freq idle load memreclaim"

Aplicația Chrome în special este lansată cu un steag pentru a încărca The Verge:

Cât despre motivul pentru care testul pare să difere pentru volantis (Nexus 9), nu sunt exact sigur. Oricum, în ceea ce privește testele prin care trece de fapt această activitate Chrome-with-The-Verge, putem stabili uitându-ne la codul sursă al testelor de automatizare a sarcinii de lucru.


Suite de testare

În primul rând, există systemapps.sh test, despre care Google spune că funcționează ca atare:

# Script to start a set of apps in order and then in each iteration
# switch the focus to each one. For each iteration, the time to start
# the app is reported as measured using atrace events and via am ThisTime.
# The output also reports if applications are restarted (eg, killed by
# LMK since previous iteration) or if there were any direct reclaim
# events.

În continuare, este recentfling.sh test, care funcționează astfel:

# Script to start a set of apps, switch to recents and fling it back and forth.
# For each iteration, Total frames and janky frames are reported.

Și apoi mai este chromefling.sh, care testează performanța Chrome mai degrabă simplu:

# Script to start 3 chrome tabs, fling each of them, repeat
# For each iteration, Total frames and janky frames are reported.

Un alt test amuzant din suita Workload Automation, deși nu are legătură cu The Verge, este youtube.sh test de performanță care măsoară UI jank

#
# Script to play a john oliver youtube video N times.
# For each iteration, Total frames and janky frames are reported.
#
# Options are described below.
#
iterations=10
app=youtube
searchText="last week tonight with john oliver: online harassment"
vidMinutes=15

În cele din urmă, fiecare dintre aceste teste este folosit pentru a măsura consumul de energie din lumea reală, parcurgându-le pe o anumită perioadă de timp, așa cum este definit în pwrtest.sh:

# Script to gather perf and perf/watt data for several workloads
#
# Setup:
#
# - device connected to monsoon with USB passthrough enabled
# - network enabled (baseline will be measured and subtracted
# from results) (network needed for chrome, youtube tests)
# - the device is rebooted after each test (can be inhibited
# with "-r 0")
#
# Default behavior is to run each of the known workloads for
# 30 minutes gathering both performance and power data.

Google poate colecta apoi aceste date folosind pwrsummary.sh și importați-le într-o foaie de calcul:

# print summary of output generated by pwrtest.sh
#
# default results directories are -[-experiment]. By default
# match any device and the year 201*.
#
# Examples:
#
# - show output for all bullhead tests in july 2015:
# ./pwrsummary.sh -r "bh-201507*"
#
# - generate CSV file for import into spreadsheet:
# ./pwrsummary.sh -o csv
#

Toate acestea sunt teste de performanță a interfeței de utilizare destul de comune în lumea reală, nu spre deosebire de tipurile pe care le-ați vedea propriile noastre teste. Se pare că schimbarea de încărcare a paginii de pornire a lui The Verge la deschiderea Chrome a fost destul de recentă, deoarece până anul trecut Google deschidea o filă nouă în Chrome doar în timpul acestor teste. O schimbare făcută în 28 mai 2015 a introdus însă utilizarea lui The Verge la testarea Chrome. Pe cât de amuzant este că Google folosește The Verge of all places atunci când realizează Workload Automation testare, rețineți că acest lucru nu înseamnă că The Verge este cel mai rău infractor de pe web performanţă.

Departe de asta, de fapt, deoarece multe alte pagini web suferă de performanțe mediocre datorită proliferării din ce în ce mai multe reclame pentru a compensa creșterea blocatorilor de anunțuri. Într-adevăr, este cel mai probabil că decizia de a folosi The Verge a fost pur și simplu una din comoditate, având în vedere modul în care tehnologia priceput este Googler-ul obișnuit și gluma din interior printre mulți entuziaști cu privire la pagina web The Verge performanţă.