Extensiones para Selenium webdriver

Si trabajas con Selenium y necesitas tener disponible cierta extensión en el navegador lanzado desde el driver, puedes hacerlo fácilmente añadiendo algunas líneas de código a la configuración del driver utilizado. Para hacerlo más elegante, nada como utilizar distintos profiles

  •  Firefox:
FirefoxProfile firefoxWithExtensions = new FirefoxProfile()
File myExtension = new File("/path/to/extension/extension.xpi");
firefoxWithExtensions.addExtension(myExtension)
  • Chrome:
ChromeOptions chromeWithExtensions = new ChromeOptions();
File myExtension = new File("/path/to/extension/extension.crx");
chromeWithExtensions.addExtensions(myExtension)

Pruebas como validación de la ingeniería del software


Excelente texto donde se pone de manifiesto la verdadera importancia y repercusión de las pruebas de software. Se puede debatir muy mucho sobre la similitud o no de la ingeniería del software contra otras ingenierías, pero lo que si debemos tener claro es que por su propia naturaleza, los métodos y procesos aplicados a un desarrollo software distan en gran medida de los empleados en una ingeniería clásica.

 Durante los últimos miles de años, los ingenieros han desarrollado las matemáticas y física que usan para una solución estructural sin tener que construirlo para ver lo que hace.

Seguir leyendo

Modularizar con JMeter

En esto del desarrollo, es por todo conocidos que dividir, importar, reutilizar, … son acciones que nos reportarán un gran beneficio en el futuro, haciendo que nuestro código sea mucho más simple, se mantenga de una manera más sencilla, se eviten inter-dependencias, etc. Trabajando con JMeter en proyectos de cierto tamaño, es normal que el plan de pruebas de rendimiento empiece a crecer a poco que diseñes unos cuantos workflows o tengas numerosas peticiones a tu sistema.

En estos casos, es muy útil identificar aquellos escenarios genéricos que utilices en múltiples sitios, bien sea configuración para distintos escenarios, un conjunto de peticiones que siempre deben hacerse conjuntamente y en el mismo orden, o cualquier otro que consideres reutilizable.  Una vez identificados estos casos, podemos crear un pequeño repositorio de funciones que posteriormente podrás incluir en cualquier punto de tu plan de pruebas, así, si algo cambia, solo tendrás que tocar en un sitio, reduciendo el trabajo y sobre todo la posibilidad de cometer errores.

Cómo modularizar en JMeter

Haremos uso de un par de controladores. El primero de ellos, “Controlador simple”, nos servirá para agrupar todos aquellos recursos que queramos reutilizar, este será nuestro pequeño repositorio. Solo añade un controlador simple, desactiva su ejecución y bajo el, añade los módulos que quieras tener disponibles en el resto del plan de pruebas, utilizando también controladores simples

jmeter_1

Una vez tengamos nuestro repositorio creado, cuando necesitemos incluir ese “trozo” de código en nuestro plan de pruebas, bastará con añadir un “Controlador de módulo” y seleccionar el módulo que queramos incluir en ese punto, quedando el plan de pruebas como sigue.

jmeter_2

Además, tal y como se hace para el resto de controladores, si necesitas añadir alguna particularidad en un determidado punto, bastará con añadir como hijo del controlador aquel elemento que necesites, de modo que sus valores sobrescribirán a los definidos en el módulo importado. Por ejemplo, en la imagen anterior podemos ver como se ha añadido un elemento de configuración de cabecera HTTP, cuyos datos sobrescribirán a los definidos en el módulo inicial.

Con estos pequeños cambios, conseguiremos tener un plan de pruebas mucho más simple y facil de mantener.

Testing – Síndrome del queso suizo

Echando un vistazo a la programación del próximo Swiss Testing Day (http://www.swisstestingday.ch/) me he encontrado con una conferencia sobre un concepto y conocido, pero no por su nombre «oficial». Se trata del, Síndrome del queso suizo (The Swiss Cheese Syndrome)

En testing, es conocido que un sistema no puede ser probado al 100%. Es muy difícil, por no decir imposible conseguir reproducir todas las casuísticas de uso posibles, por ello, siempre hay huecos (agujeros) que nunca han sido testeados. Que no se vean a simple vista no quiere decir que no existan, o que no pueda darse un caso en el que te encuentres con uno de ellos, de ahí la similitud con un queso suizo.

Evidentemente, a más agujeros, menor calidad de sistema …

Seguir leyendo

SoapUI desde línea de comandos

Si has diseñado un completo plan de pruebas con SoapUI en tu PC y necesitas lanzar este en un sistema sin entorno gráfico, ejecutarlo desde un sistema de integración continua como Jenkins o desde algún script en bash, puedes hacerlo desde línea de comandos de una manera sencilla.

 Instalar SoapUI en Linux

Tan fácil como descargar la versión necesaria desde su web oficial http://sourceforge.net/projects/soapui/files/soapui/4.5.1

# wget http://sourceforge.net/projects/soapui/files/soapui/4.5.1/
soapui-4.5.1-linux-bin.zip/download

# unzip soapui-4.5.1-linux-bin.zip

# cd soapui-4-5-1

Ejecutar una test suite

Podremos lanzar la test suite que deseemos en cada momento, o todas si así lo necesitamos. Si no queremos modificar ningún parámetro de los ya configurados en las pruebas, bastará con ejecutar

# ./bin/testrunner.sh [nombre_proyecto.xml]

Si se quiere lanzar un test case concreto, bastará con indicarlo del siguiente modo

# ./bin/testrunner.sh –s[nombre_test_suite] 
–c[nombre_test_case] [nombre_proyecto.xml]

Seguir leyendo

Gestión de riesgos en pruebas de software

Al igual que un jefe de proyecto debe identificar riesgos y buscar soluciones durante la etapa de desarrollo del software para conseguir los objetivos marcados, el test manager debe identificar los riesgos relacionados con el proceso de pruebas, así como evaluar la criticidad y probabilidad de los mismos. Gracias a este análisis se podrá generar un plan de contingencia.

Algunos de los riesgos más comunes durante la fase de pruebas suelen ser:

  • Falta de recursos y baja competencia en pruebas
  • Falta de los recursos necesarios para ejecutar las pruebas según el plan
  • Tiempo reducido asignado a la fase de pruebas
  • Cambios frecuentes en la definición de los objetivos y alcance del plan de pruebas
  • Falta de coordinación entre los equipos de desarrollo y testing
  • Falta de experiencia con nuevas tecnologías, herramientas, lenguajes de programación, …

Una característica muy deseable de un equipo de pruebas es la pro-actividad, Incluso antes de que el software comience a desarrollarse, el equipo puede involucrarse en las distintas etapas de definición para conocer más en profundidad el proyecto así como comenzar a definir estrategias de pruebas.

Medidas a tomar para obtener los mejores resultados podrían ser:

1. Intervención temprana del equipo de pruebas en el proyecto

La inclusión del equipo de pruebas en las etapas iniciales del desarrollo del producto ayudará a obtener mayor conocimiento del mismo así como permitirá detectar posibles defectos en etapas tempranas, por lo que el coste de resolución de los mismos será inferior.

Seguir leyendo

Pruebas de rendimiento, workflows

Leia en Google Testing Blog “If you can’t build a web service that scales, testing is not your biggest problem!”  Pero, para definir la vía de escalada a seguir, debemos conocer cómo se comporta el sistema bajo una gran carga de trabajo.

La definición del plan de pruebas deberá hacerse con el objetivo de simular del modo más exacto posible el uso real del sistema bajo distintas situaciones. Para ello se definen workflows, basados en el comportamiento habitual de los usuarios frente a la aplicación. Los datos para su definición pueden ser obtenidos mediante sesiones de interacción, del análisis de log, gestión de auditoría, etc. Estos flujos serán las guías a seguir para el diseño de los scripts, planes de trabajo, etc, del plan de pruebas.

Para diseñar un detallado plan de pruebas de rendimiento, existen numerosos conceptos y variables con las que podemos jugar para conseguir el workflow requerido. Entre ellos, destacan los siguientes como los más importantes:

Seguir leyendo

Actitudes de un QA

Como se suele decir, hay cosas que no se aprenden en la escuela, y en el mundo del testing, hay bastantes de esas. No son metodologías, no son conocimientos de software específicos, son actitud, compromiso, y buen hacer.

  • Escribe, escribe, escribe: Da igual dónde lo hagas, con papel y lápiz, en un diario de trabajo, en un gestor de notas, pero mantén tus apuntes escritos. De este modo no dudarás en cualquier momento acerca de una decisión del pasado, también te servirá para afianzar la información en tu cabeza mientras lo pasas al papel.
  • Automatiza aquello que hagas más de dos veces: instalaciones en el entorno de test, generación de informes de métricas, reglas en el cliente de correo, optimización de búsquedas, … Por pequeña que sea la ganancia en tiempo, multiplícala por cada vez que realizas dicha tarea y obtendrás un practico y útil tiempo al final del día. Haz que las máquinas trabajen por ti!
  • 360º de conocimiento: debes conocer todos los aspectos del producto y tener una visión global del mismo, esto hará que tus pruebas estén enfocadas de mejor modo. Es una de las ventajas de la gente quality, no estás atado a un módulo específico, sino que conoces cual es la interacción con el resto del producto, cual es su objetivo, qué implicaciones puede tener un pequeño cambio en él, cuales son los posibles cuellos de botella, integración con terceros, etc, etc
  • Seguir leyendo