2. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
TESTING USER HAPPINESS
WebPageTest workshop
3. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
import random
import time
import requests
class Speaker(object):
def __init__(self):
born = "Avilés - Asturias"
studies = "Applied Maths and Computability"
jobdescription = "Performance Jedi"
company = "Telefónica I+D"
team = "Product Engineering"
project = "AWAZZA"
talks = [ExpoQA, VLC Testing, DevopsDays, WebPerfDays, Velocity]
def talk(self):
start_timer = time.time()
r = requests.get('http://www.slideshare.net/almudenavivanco')
r.raw.read()
latency = time.time() - start_timer
self.custom_timers[‘VLTesting’'] = latency
if __name__ == '__main__':
speech = Speaker()
speech.talk()
print trans.custom_timers
Almudena Vivanco
(@MrsDaehin)
4. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
• Satisfacción del Usuario
• Qué vamos a medir
• Cómo lo vamos a medir
• Qué queremos tracear
What are we going to focuson?
5. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Medir
Tener un Objetivo
Medir siempre cuanto antes mejor
Continuous Performance Testing
6. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Optimizar
Reducir el Throughput
Reducir el número de recursos críticos
Acortar el Critical Path ( CRP )
7. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Satisfacción del Usuario
8. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Online free tool for synthetic performance testing
#PerfMatters
9. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
http://usingwpt.com
Aimed at Novices and Power Users
Includes:
Basics
Getting started, running tests, understanding waterfall
charts and the metrics WebPageTest captures
Intermediate
Picking the right test parameters, scripting multi-page tests
and using your existing analytics data to help the decisions
Advanced
Using the API, integrating WebPageTest into build and CI
processes, and setting up your own private instances
10. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Qué no es?
WebPageTest NO es una herramienta de carga
No vamos a comprobar el rendimiento en situaciones de saturación
No es una herramienta que nos permita conocer el estado de nuestro servicio
No es una auditoría de código de front end ni consola de errores de javascript
11. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Qué es?
WebPageTest es una herramienta de rendimiento a nivel browser que nos permite determinar y
automatizar resultados de visualización y renderización.
En definitiva, nos permite comprobar cuál es la experiencia de usuario
www.webpagetest.org
12. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Cómo funciona?
Poll por tareas, mide carga y
devuelve los resultados al WPT
server
Carga la página / páginas
13. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Qué nos permite? Mobile Testing
Mobile emulation Mode y Dispositivos móviles
desde distintas localizaciones y con distintos
User Agents
14. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Agentes Móviles
16. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, EspañaFear the Latency
17. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, EspañaFear the Latency
18. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Fear is the path to the
dark side. Fear leads to
Inertia. Inertia Leads to
paralysis. Paralysis leads
to going out of Business.
19. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, EspañaLet’s Aim for Speed
25. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, EspañaOptimizar
https://csswizardry.com/
26. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Vista Waterfall
Una vez ejecutado veremos
Sin
Cache de
Browser
Con
Cache de
Browser
Golden
Performance
Rules
http://bit.ly/2rfmROM
27. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Advanced Settings…
28. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, EspañaTime is Relative
29. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Analytical Review Parameters
Localización
Browser
Velocidad de Conexión
Número de test a ejecutar ( coger un número Impar ;) )
First View and Repeat View ( Cache!!! )
Document Complete vs OnLoad
Ignorar Errores SSL
Capturar tcpdump
User Agent ad Hoc
Custom Headers
Qué tenemos que Medir?
36. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, EspañaNumber of Domains?
37. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
SPOF y Block
La opción de Block nos simula un error tipo 404 mientras que si usamos el SPOF nos simula un timeout.
Por ejemplo podemos comprobar con Block la diferencia entre el tiempo de carga con y sin anuncios ( bloqueando
anuncios o trackers ;) )
En cambio cuando probamos el Single Point of Failure lo que queremos comprobar es que nuestro site es resilient a 3rd
parties como por ejemplo los trackers, cómo se comporta nuestro site si el acceso a google analytics es lento o realmente
no hay servicio.
39. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
“My Mean time is fine."
40. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Apdex Index
t = acceptable response time
satisfied = response time < t
tolerating = t < response time > 4t
frustrated = response time > 4t
Apdex [t] = (satisfied + tolerating/2)/total requests
41. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Afterwards … in PROD ...
42. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Time To
FIRST
BYTE
45. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Waterfall Detalles
46. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Cómo analizar el waterfall
Cuántos Kb tiene el html inicial
En qué segundo comienza el evento render
Cuántos socket connections hay hacia un host en concreto
Cuántas redirecciones
En qué momento hay un socket abierto contra un recurso y por qué
47. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Custom Metrics
[iframe-count]
return document.getElementsByTagName("iframe").length;
[script-tag-count]
return document.getElementsByTagName("script").length;
[meta-viewport]
var viewport = undefined;
var metaTags=document.getElementsByTagName("meta");
for (var i = 0; i < metaTags.length; i++) {
if (metaTags[i].getAttribute("name") == "viewport") {
viewport = metaTags[i].getAttribute("content");
break;
}
}
return viewport
NO se pueden añadir operaciones asincronas :( Timers, Ajax requests etc ...
48. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Performance
It's not just about adding more servers
49. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
http://bit.ly/2sUfZn5
50. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
REAL
USER
MONITO
RING
Bring Up
RUM*
real user monitoring
58. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Analytical Review Parámetros
Localización
Browser
Velocidad de Conexión
Número de test a ejecutar ( coger un número Impar ;) )
First View and Repeat View ( Cache!!! )
Document Complete vs OnLoad
Ignorar Errores SSL
Capturar tcpdump
User Agent ad Hoc
Custom Headers
59. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Custom Metrics
[iframe-count]
return document.getElementsByTagName("iframe").length;
[script-tag-count]
return document.getElementsByTagName("script").length;
[meta-viewport]
var viewport = undefined;
var metaTags=document.getElementsByTagName("meta");
for (var i = 0; i < metaTags.length; i++) {
if (metaTags[i].getAttribute("name") == "viewport") {
viewport = metaTags[i].getAttribute("content");
break;
}
}
return viewport
NO se pueden añadir operaciones asincronas :( Timers, Ajax requests etc ...
60. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Vista Waterfall
Una vez ejecutado veremos
Sin
Cache de
Browser
Con
Cache de
Browser
Golden
Performance
Rules
61. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Waterfall → Har File
62. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Cómo analizar el waterfall
Cuántos Kb tiene el html inicial
En qué segundo comienza el evento render
Cuántos socket connections hay hacia un host en concreto
Cuántas redirecciones
En qué momento hay un socket abierto contra un recurso y por qué
63. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Waterfall Detalles
67. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
SPOF y Block
La opción de Block nos simula un error tipo 404 mientras que si usamos el SPOF nos simula un timeout.
Por ejemplo podemos comprobar con Block la diferencia entre el tiempo de carga con y sin anuncios ( bloqueando
anuncios o trackers ;) )
En cambio cuando probamos el Single Point of Failure lo que queremos comprobar es que nuestro site es resilient a 3rd
parties como por ejemplo los trackers, cómo se comporta nuestro site si el acceso a google analytics es lento o realmente
no hay servicio.
68. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
CÓMO DETECTAR SPOF
con Charles Proxy y WPO
69. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Análisis de Impacto!
API server down?
AdBulk down?
Tracker down?
70. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
https://www.charlesproxy.com/
71. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
http://www.webpagetest.org/
http://bit.ly/2svef6a
74. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Búsqueda en
google
logData 0
navigate http://www.google.es
setvalue id=lst-ib ExpoQA
logData 1
submitformid=tsf
75. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Searching Google
Results page only -
Search and results page -
Waterfall for results page only
76. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Chrome Devtools
80. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
WPT Bulk Tester by Andy Davis
http://calendar.perfplanet.com/2014/driving-webpagetest-from-a-google-docs-spreadsheet/
81. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
https://github.com/andydavies/WPT-Bulk-Tester
82. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Demo - http://man.gl/1UxjYjs
83. @MrsDaehin29 y 30 de Noviembre de 2017. Valencia, España
Private instances too!