tutorial spanish example español python selenium selenium-webdriver protractor performance-testing

python - spanish - Pruebas de rendimiento del navegador a través de selenio.



protractor tutorial español (2)

Es posible hacer pruebas de regresión de rendimiento con Selenium. Sin embargo, como ya habrás notado. La esencia central de Selenium es que imita el comportamiento del usuario. Esto significa que Selenium solo realizará la acción (por ejemplo, al hacer clic en el botón) si el usuario puede realizar la misma acción. También teniendo en cuenta ciertos códigos, soluciones temporales (es decir, esperas duras, varias verificaciones y códigos personalizados), se requieren incluso para poder ejecutar el script de Selenium. Esto significa que la "definición" de las pruebas de rendimiento con Selenium será ligeramente diferente en comparación con las pruebas de rendimiento tradicionales.

Lo que querrá hacer es tener un temporizador (inicio / parar) para cada acción que esté realizando Selenium. Por ejemplo: al hacer clic en un botón y registrarlo en un archivo para su uso posterior.

Usando Selenium puede crear una línea de base de rendimiento y de ahí en adelante comparar cada resultado consecutivo con la línea de base. Esto le dará estadísticas que luego puede usar para un análisis más detallado.

Selenium ni Webdriver (Selenium 2.0) vienen con esta característica fuera de la caja. Entonces, para que esto funcione, es necesario que se produzca una codificación personalizada.

Estamos utilizando un protractor para probar las aplicaciones internas de AngularJS.

Además de las pruebas funcionales, verificamos las regresiones de rendimiento con la ayuda de protractor-perf que se basa en la biblioteca nodejs browser-perf . Porque, "El rendimiento es una característica" .

Con protractor-perf podemos medir y hacer valer diferentes características de rendimiento mientras realizamos acciones del navegador, por ejemplo :

browser.get(''http://www.angularjs.org''); perf.start(); // Start measuring the metrics element(by.model(''todoText'')).sendKeys(''write a protractor test''); element(by.css(''[value="add"]'')).click(); perf.stop(); // Stop measuring the metrics if (perf.isEnabled) { // Is perf measuring enabled ? // Check for perf regressions, just like you check for functional regressions expect(perf.getStats(''meanFrameTime'')).toBeLessThan(60); };

Ahora, para otra aplicación interna, tenemos un conjunto de pruebas basadas en selenio escritas en Python.

¿Es posible verificar las regresiones de rendimiento con selenio-python, o debo reescribir las pruebas usando el protractor para poder escribir pruebas de rendimiento del navegador?


Existe la posibilidad de acercarse a lo que hace browser-perf al recopilar los registros de rendimiento de Chrome y analizarlos.

Para obtener los registros de rendimiento , active los registros de performance mediante el ajuste de la capacidad deseada de registro y las loggingPrefs :

from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities caps = DesiredCapabilities.CHROME caps[''loggingPrefs''] = {''performance'': ''ALL''} driver = webdriver.Chrome(desired_capabilities=caps) driver.get(''https://.com'') logs = [json.loads(log[''message''])[''message''] for log in driver.get_log(''performance'')] with open(''devtools.json'', ''wb'') as f: json.dump(logs, f) driver.close()

En este punto, el archivo devtools.json contendría un montón de registros de rastreo:

[ { "params": { "timestamp": 1419571233.19293, "frameId": "16639.1", "requestId": "16639.1", "loaderId": "16639.2", "type": "Document", "response": { "mimeType": "text/plain", "status": 200, "fromServiceWorker": false, "encodedDataLength": -1, "headers": { "Access-Control-Allow-Origin": "*", "Content-Type": "text/plain;charset=US-ASCII" }, "url": "data:,", "statusText": "OK", "connectionId": 0, "connectionReused": false, "fromDiskCache": false } }, "method": "Network.responseReceived" }, { "params": { "timestamp": 1419571233.19294, "encodedDataLength": 0, "requestId": "16639.1" }, "method": "Network.loadingFinished" }, .. ]

Ahora, la pregunta es, qué hacer con él.

Una opción que se sugirió inicialmente durante la Conferencia de Automatización de Pruebas de Google es enviar los registros a webpagetest.org . Hay un ejemplo en java disponible help , pero, por el momento, no tuve la suerte de implementarlo en Python.

En teoría, el informe de UI generado por webpagetest.org se vería así:

También proporcionan las métricas en JSON / XML y otros formatos que pueden analizarse más a fondo.

Esto es realmente algo, gracias a Vivek Singh por el comentario señalador.

browser-perf también utiliza la funcionalidad de registro para recoger los registros de seguimiento y analiza los datos.