miércoles, 18 de enero de 2017

10 Conocimientos para especializarte en automatización de pruebas de software

¿Quieres aprender como utilizar Selenium para automatizar tus pruebas de software? Inscríbere en el curso: Automatiza tu navegador. Selenium WebDriver con Python icon


Conocimientos para especializarte en automatización de pruebas de software

La automatización de pruebas de software es considerada una de las más efectivas metodologías de Testing. Se ha convertido en tendencia y necesidad obligada de aprendizaje para Analistas de pruebas e Ingenieros de pruebas de software.

Para especializarte en automatización de pruebas de software, necesitas dominar una serie de conocimientos básicos y metodologías. También, necesitas aprender a programar software y a manejar algunas de las herramientas de automatización de pruebas de software.

A continuación te presentamos los 10 principales conocimientos y habilidades que debes aprender para convertirte en Ingeniero de pruebas de software automatizadas, tales como aprender a programar, arquitectura de software y bases de datos, herramientas de pruebas automatizadas, ejecución y debugging, como producir reportes de resultados, prácticas para desarrollar los casos y su integración continua entre otros aspectos.

1.- Metodologías de pruebas de software manuales y conocimientos del área de negocio


Antes de incursionar en la automatización de pruebas de software, es recomendable tener conocimientos en metodologías y pruebas de software manual. También, no está demás tener algo de experiencia como Tester de software.

Esto implica que tengas el Know how en pruebas de software, en diversas metodologías predictivas y en Agile Testing.

También son importantes los conocimiento del área de dominio, los procesos y prácticas del área de negocio o sector industrial en el que estas especializado, por ejemplo aplicaciones de atención al cliente en telecomunicaciones, bancos, comercio minorista, etc.

El conocimiento del área de dominio es indispensable para el diseño casos de pruebas y seguir la pista de los errores, habilidades que también necesitaras al realizar pruebas automatizadas de software.

Muy poco te servirán los conocimientos técnicos sino tienes el dominio del área de negocio.

2.- Técnicas y herramientas de automatización de pruebas


Existen diversas técnicas de automatización de pruebas, las más básicas consisten en desarrollar componentes de bajo nivel que envían datos de prueba a los componentes de software, otras hacen uso de herramientas de automatización de pruebas de software.

La mayoría se basan en invocar las interacciones con el sistema, las cuales son dependientes de la plataforma y consisten en manipular el control de interfaz gráfica (UI) en tiempo de ejecución.

Algunos ejemplos para distintas plataformas son:

  • Aplicaciones web: Selenium WebDriver, desencadenamiento de eventos JavaScript, Webkit de Debugging Remoto, entre otros. Selenium WebDriver es uno de los principales exponentes de herramientas de automatización de pruebas de software. 
  • Aplicaciones de escritorio: Reflection, API de Windows (usar la API SendInput para simular clicks de mouse manuales o teclado), Microsoft UIA, manipulación Java in-process, entre otros.

¿Buscas formación en automatización de pruebas de software con Selenium?




La automatización de pruebas funcionales se ha convertido en una necesidad y como Software Tester necesitas estar preparado. Inscríbete ahora.


3.- Programación de software


Para convertirte en Ingeniero de pruebas de software automatizadas, será necesario convertirte en un programador de software competente, para lo cual debes seleccionar y aprender uno o varios lenguajes de programación.

Si posees experiencia previa en programación puedes comenzar con lenguajes de mayor dificultad como Java o C++. Sino posees mucha experiencia (¿vienes del área de pruebas de software manuales?) existen lenguajes de menor dificultad como Python y Ruby que también funcionan con los frameworks y herramientas de automatización de prueba.

Aquí te compartimos un excelente tutorial de Ruby dirigido a Analistas de pruebas de software:

> Tutorial de Ruby en español

Escoge tu lenguaje favorito, busca tutoriales en Internet y comienza a aprender a programar. Aquí te compartimos un artículo con recursos donde puedes aprender a programar.

> 10 Sitios web para aprender a programar gratis

4.- Bases de datos y tecnología web


Especializarte en automatización de testing Base de datos y tecnología web

Como Ingeniero en automatización de pruebas de software, no te bastará con poseer conocimientos sobre el funcionamiento y flujo de procesos de las aplicaciones que pruebes, sino también necesitarás conocer sobre de sus componentes internos y arquitectura de software.

De allí que es recomendable que estudies lo básico de tecnologías de bases de datos como por ejemplo Microsoft SQL Server, MySQL, Oracle, etc. 

Como Analista de pruebas de software manual probablemente ya tienes conocimientos del lenguaje de consultas estructurado (SQL), solo necesitas ampliar esos conocimientos con administración y arquitectura de bases de datos, así como aprender los patrones y antipatrones, errores comunes en el desarrollo de bases de datos.

También es recomendable aprender la tecnología web, pues la gran mayoría de las aplicaciones empresariales están basadas en esa tecnología, aquí resultan de gran utilidad conocimientos como HTML5, XML, XPath, Javascript, REST/SOAP (Arquitectura orientada a servicios). Entre otros. En este punto, es conveniente que te familiarices con herramientas de testing de web services.

Otro conocimiento previo que te puede ayudar a incursionar en automatización de pruebas de software, es aprender a realizar pruebas de carga y estrés usando una herramienta con SoapUI.

5.- Identificación de elementos en software de aplicaciones


Para realizar un diseño de pruebas automatizadas, necesitas conocer como está construida internamente la aplicación, y los componentes de software que la integran, como pueden ser páginas web HTML, clases Java, interfaces de Windows (WPF).

Luego necesitas identificar cuáles son las propiedades que debes buscar para identificar los controles de interfaz gráfica (UI), estructurando estas definiciones de elementos de forma estructurada para un acceso más fácil.

6.- Reportes de resultados y Data Driven Test


En el uso de herramientas de automatización de pruebas de software, es recomendable que aprendas también como desarrollar aserciones de pruebas en el framework de tu elección (como podría ser JUnit por ejemplo), con la finalidad de imprimir (en archivo de texto) los resultados de tus pruebas.

Sin el componente de reporte, podrás ejecutar las pruebas pero no obtendrás reportes detallados de los resultados.

Por otro lado en la mayoría de los casos necesitaras ejecutar repetidas veces las mismas pruebas pero con combinaciones distintas de datos, por lo cual también es necesario aprender a parametrizar dichas combinaciones en el framework o herramienta de automatización de pruebas de software, así como también saber cómo diseñar sus datos de prueba.

Curso de SoapUI



¿Te gustaría aprender a realizar pruebas funcionales y automatizadas de servicios web?

Inscríbete en el curso: 

WebServices/REST API Testing with SoapUI+ Real Time Projects icon

Más cursos >>

7.- Ejecución y debugging de pruebas automatizadas


Otro conocimiento importante que debes adquirir es cómo configurar las ejecuciones de casos de prueba y como identificar la causa raíz de los errores.

El reto es poder entender el flujo de extremo a extremo (ver punto 1) de la aplicación y sus reglas de negocio.

Fallas como por ejemplo tiempo de espera insuficiente, ventanas emergentes no esperadas y eventos que no se desencadenaron, son difíciles de identificar y corregir, especialmente cuando no se tiene un ambiente de pruebas con la configuración exacta para reproducir el problema.

8.- Principios de ingeniería de software aplicados a la automatización de pruebas de software


Especializarte en automatización de testing - Principios de ingeniería de software

Al igual que los desarrolladores de software necesitan aplicar prácticas de ingeniería de software y evitar los errores comunes en programación, los Ingenieros de pruebas de software automatizadas también necesitan producir código limpio.

En tal sentido deben aplicar buenas prácticas de Ingeniería de software, como por ejemplo:

  • Facilidad de lectura: Crear casos de prueba que puedan ser leídos fácilmente desde la perspectiva del negocio. Para ello puedes valerte de tu conocimiento del área de dominio.
  • Escalabilidad: Pensar en el largo plazo y hacerte preguntas "que pasa sí" al diseñar y programar pruebas de software automatizadas. ¿Qué sucede si se incorporan integrantes al equipo de pruebas? ¿Qué sucede si la aplicación sujeta a pruebas va a ser migrada desde el escritorio a la web, Windows, Linux, iOS, Android o cualquier otro? ¿Pueden reusarse los casos de prueba y así reducir el trabajo de desarrollo a futuro?
  • Mantenibilidad: Debes aprender métodos para que tus desarrollos de casos de prueba puedan manejar situaciones como que la aplicación sujeta de pruebas sea sujeto de nuevos desarrollos, incorporando nueva lógica de negocio y cambios a la interfaz gráfica de usuario (GUI), los cuales podrían “romper” tus casos de prueba actuales. Deben explorarse vías para parametrizar los casos y evitar la duplicidad.

9.- Integración de código


Al igual que los desarrolladores y su código, el Ingeniero de automatización de pruebas debe poder integrar sus pruebas automatizadas a una herramienta de Gestión de ciclo de vida de aplicación, en la cual el software se desarrolla, prueba, entrega y se instala en ambiente de producción, esto de forma continua (Integración continua, Entrega continua o DevOps).

El Ingeniero de pruebas de software automatizadas no debe saber solamente como automatizar las pruebas, sino también como usar las herramientas para automatizar el ciclo de vida del Testing.

10.- Mini herramientas de apoyo


Debes aprender a usar todas las herramientas que puedan apoyarte y facilitarte el diseño y ejecución de pruebas de software automatizado, algunos ejemplos:

  • Inspect: Herramienta de Windows que te permite seleccionar un elemento de interfaz y gráfica y ver sus datos de accesibilidad.
  • UIVerify: Framework que facilita las pruebas de software automatizadas y manuales de interfaces de usuario Windows.
  • Spy++: Permite ver las propiedades de cualquier ventana Windows.
  • Chrome DevTools (F12): Serie de herramientas de autoría y debugging web construídas dentro del navegador Google Chrome. Otros navegadores como por ejemplo FireFox también tienen su versión para desarrolladores.
  • POSTMan: Herramientas para desarrollo de interfaces de programas de aplicación (API).
  • Curl: Herramienta para transferir datos desde y hacia servidores utilizando alguno de los protocolos manejados, como son DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, entre otros.
  • WireShark: Analizador de protocolos de redes para Unix y Windows.

¿Y qué opinas tú?


¿Estás estudiando para especializarte en automatización de pruebas de software? ¿Cuáles son los principales conocimientos que consideras más importantes para incursionar en el área?

¿Buscas más información de pruebas de software?


¿Quieres obtener completamente gratis y directamente en tu correo electrónico plantillas, artículos y otros recursos de pruebas de software?, entonces presiona "suscríbete" a continuación.

Suscríbete a la lista de correo electrónico:


Vía FeedBurner, se abrirá una nueva ventana

También puedes seguirnos vía Twitter, Facebook o Linkedin:

  
Artículos relacionados

1 comentario :

Pmoinformatica.com," La Oficina de Proyectos de Informática ", es un participante en el Programa de Servicios de Amazon Associates LLC, un programa de publicidad de afiliación diseñado para proporcionar un medio para que sitios web puedan ganar honorarios por la publicidad y enlaces a amazon.com y amazon.es.