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.
- Aplicaciones para celular (Mobile): Androind UIAutomator, iOS UIAutomation, Appium, entre otras herramientas de apoyo a las pruebas de software en móviles.
¿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
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.
4.- Bases 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.
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.
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.
WebServices/REST API Testing with SoapUI+ Real Time Projects
Más cursos >>
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:
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
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.
También puedes seguirnos vía Twitter, Facebook o Linkedin:
Artículos relacionados
Gran artículo, define todas las habilidades y competencias de un tester.
ResponderEliminar