Actualmente el número de herramientas a disposición de los equipos de desarrollo para probar software es muy amplio. Para cualquier tipo de prueba que queramos realizar (funcionales, rendimiento, regresión, etc.) el número de opciones disponibles, tanto gratuitas como comerciales, es muy grande. De entre todas estas he elegido 12 herramientas imprescindibles para probar software (y sus alternativas).
En unos casos son programas desarrollados para probar software. En otros, son programas que aunque no nacieron con ese propósito, han demostrado ser perfectos para realizar determinadas pruebas.
Hemos decidido incluir al menos una alternativa a cada uno, para que podáis comparar y elegir cual es la opción que mejor se adapta a vuestro caso.
SoapUI - Postman
SoapUI pertenece a las herramientas que nacieron para probar software. Está desarrollada en Java, y se utiliza para pruebas funcionales de APIs y servicios web. SoapUI tiene una versión gratuita de código abierto, y una versión de pago con algunas funcionalidades que hacen que sea mucho más productiva. Se trata de una opción absolutamente madura, cuya primera versión es de septiembre de 2005. Prácticamente imprescindible para los expertos en pruebas sobre APIs.
SoapUI tiene muchas funcionalidades interesantes: Permite crear conjuntos de pruebas tan complicados como queramos, analizar la cobertura de tests sobre nuestro servicio SOAP o REST, cambiar el entorno de pruebas de forma rápidamente, crear mocks a partir de un WSDL o incluso facilitar ciertas pruebas de seguridad.
La alternativa a SoapUI es Postman, mucho más popular entre los desarrolladores que SoapUI. Postman nos permite construir y gestionar de una forma cómoda nuestras peticiones a sevicios API REST.
Apache JMeter - HP LoadRunner - Octoperf
Apache JMeter y HP LoadRunner son 2 de los mejores programas para realizar pruebas de rendimiento y stress. JMeter es de código abierto y se puede descargar gratuitamente. Se utiliza para generar un gran volumen de carga que nos permita analizar y medir el rendimiento de aplicaciones web.
Load Runner es la alternativa para pruebas de rendimiento de HP. Existe la opción de utilizar LoadRunner en versión SaaS, de forma gratuita con su Community Edition, y ver de esta forma si es la herramienta adecuada para nosotros, sin ningún coste.
Una tercera opción para pruebas de rendimiento, también como SaaS es Octoperf. Basándose en JMeter, han creado una herramienta que no necesita de ninguna instalación y que nos permite crear escenarios, monitorizar nuestros entornos, ejecutar pruebas y analizar los resultados desde un mismo punto.
Sonarqube - Kiuwan
Sonarqube es una de las utilidades más populares para realizar análisis estático de código. Es open source, por lo que en principio es gratuito. Eso si, tendremos que instalarlo en una máquina, y mantenerlo actualizado. Además, determinados plugins son de pago, como por ejemplo el plugin para analizar código Swift, que cuesta 5.000 euros al año por instancia de Sonarqube.
Kiuwan es otro analizador estático de código, pero en este caso se trata de un servicio que podemos usar para analizar nuestro código sin preocuparnos por instalaciones ni actualizaciones. Podemos subir nuestro código a la nube para analizarlo, o descargar una aplicación que analizará nuestro código localmente y subirá los resultados a Kiuwan.
Tanto Sonarqube (sonarlint) como Kiuwan tienen integración con distintos IDEs, que nos permiten detectar incidencias en nuestro código mientras lo escribimos, sin tener que esperar a análisis posteriores. También en ambos casos existen plugins para herramientas de integración continua como Jenkins.
Wget - Curl
Se trata de 2 programas que permiten descargar contenido de servidores web. No son utilidades de testing propiamente, pero dadas sus múltiples posibilidades, se usan habitualmente en combinación con otras para realizar ciertas tareas durante las pruebas, como por ejemplo simular las acciones de usuarios.
La principal característica diferenciadora de wget es su recursividad, que permite usarlo como una araña web que extrae enlaces de las páginas web y los descarga, repitiendo el proceso recursivamente hasta que todas las páginas han sido descargadas, o hasta que se haya alcanzado en nivel de repetición máxima especificado por el usuario.
Curl por su parte tiene como ventajas el estar disponible para prácticamente cualquier plataforma, el tener una libreria con un API, soportar muchos más protocolos (SCP, SFTP, TFTP, TELNET, LDAP(S), FILE, POP3, IMAP, SMTP, RTMP y RTSP) y además permitir subir o enviar archivos.
Charles - Fiddler
Charles y Fiddler son 2 aplicaciones que se utilizan como proxy para hacer debug web o para capturar el tráfico de sesión de dispositivos móviles. Permiten capturar y grabar tráfico http/https, obteniendo información muy importante para nuestras pruebas. Fiddler cuenta con una versión totalmente funcional de forma gratuita, mientras que Charles dispone de una versión de prueba de 30 días, pero después necesitaremos comprar una licencia.
Sus utilidades son múltiples y, además de para capturar el tráfico de nuestra aplicación móvil, también podemos capturar tráfico http/https que después podemos utilizar para crear nuestras pruebas de rendimiento con Octoperf.
Greenshot - Jing - Shutter
A la hora de comunicar errores o comportamientos que no son correctos, una imagen claramente vale más que mil palabras. Sobre todo porque los desarrollos nunca van sobrados de tiempo, y si podemos evitarnos teclear una sola palabra de más, mejor. Es por eso que, un buen programa que nos permita tomar pantallazos de un área de la pantalla específica, o de una ventana, y destacar ciertos elementos o escribir notas, es muy importante.
Greenshot es una muy buena opción, pero sólo está disponible para Windows. Cuenta con un editor que nos permite, entre otras cosas, ofuscar determinadas áreas, para ocultar determinados elementos, recortar, añadir efectos, rotar imágenes, añadir textos, destacar áreas, o incluso añadir un efecto lupa sobre las zonas sobre las que queremos llamar la atención.
Jing tiene 2 cosas que la hacen muy interesante: Disponible para Windows y Mac, y permite grabar vídeos de hasta 5 minutos (en formato flash (.swf)).
Por último, para quienes trabajen con Linux, mi recomendación es Shutter.
Beyond compare - Kdiff3
A la hora de comparar archivos hay muchas opciones. Podemos simplemente necesitar comparar 2 archivos de texto con notepad++, o podemos comparar 2 archivos para ver si son exactamente iguales o no. Beyond Compare nos permite comparar archivos o carpetas, incluso archivos Microsoft Word o PDF, y realizar comparaciones de archivos byte a byte para asegurarnos de si son o no exactamente iguales. Además está disponible para Windows, Mac y Linux. Eso si, a partir de un cierto número de usos tendrás que pasar por caja (30$ la versión standard).
Una alternativa interesante y gratuita es Kdiff3. Está disponible para Windows, Mac y Linux y entre sus funcionalidades están el poder comparar 2 o 3 archivos de texto o directorios, y la posibilidad de combinar archivos de forma automática, o a través de su editor integrado.
Crashlytics - Testfairy
Estas 2 herramientas nos permiten distribuir versiones beta de nuestras aplicaciones para iOS y Android y extraer información de las pruebas que hagan nuestros testers.
Crashlytics nos permite distribuir nuestra aplicación, y además obtener información muy detallada de lo que los usuarios hacen. Testfairy, también facilita distribuir nuestra aplicación entre nuestros testers, acceder a logs, obtener feedback de los usuarios, grabación en vídeo de lo que hacen los usuarios e informes de error cuando la aplicación se rompe.
Si queremos una tercera opción, Appsee incluye muchas de las funcionalidades de las 2 anteriores. Además permite grabar en video sesiones de usuarios, para poder ver como utilizan la aplicación exactamente. Otra funcionalidad interesante es la de los mapas de calor de las zonas de toque, indicativos de las áreas dónde más atención ponen nuestros usuarios:
Jenkins - Travis CI
Jenkins y Travis CI son 2 de las opciones más interesantes en cuanto a servidores de integración continua, aunque hay más opciones como TeamCity, CircleCI y Bamboo.
En cuanto a las diferencias, entre Jenkins y Travis CI, una de las más importantes es que Travis es un servicio en la nube (salvo la versión Enterprise, que se puede alojar en nuestra infraestructura), mientras que en el caso de Jenkins nosotros tenemos que alojar esa máquina, mantenerla y actualizarla. Otra diferencia es que Jenkins es gratuito, y Travis es de pago, salvo para proyectos Open Source. El funcionamiento también es diferente, puesto que en Jenkins configuramos jobs para realizar tareas, mientras que con Travis los comandos los especificamos en un archivo que está junto con nuestro código (archivos .travis.yml).
Nightwatch.js - Webdriver.io
En cuanto a frameworks para automatización de pruebas, he elegido 2 opciones que funcionan sobre Node.js, Nightwatch.js y Webdriver.io. Los 2 nos van a permitir escribir pruebas que utilizarán Selenium Webdrver para realizar comprobaciones en sitios y aplicaciones web, pudiendo utilizar para ello distintos navegadores web. El código, como veis en el siguiente ejemplo, es bastante asequible:
Tanto Nightwatch.js como Webdriver.io incluyen un runner que nos permite lanzar las pruebas desde nuestro sistema de integración continua. También pueden integrarse con otros aplicativos,como appium, para pruebas en dispositivos móviles.
La principal diferencia, a favor de Webdriver.io es que cuenta con una utilidad qu nos permitirá configurar nuestro proyecto simplemente respondiendo a algunas preguntas.
HP Quality Center - Jira - Redmine
A la hora de gestionar las pruebas, HP Quality Center se puede considerar la opción estándar (si el presupuesto lo permite). Incluye gestión de requisitos, gestión de pruebas, gestión de defectos, paneles con métricas y mucho más. Forma parte de HP Application Lifecycle Management, relativamente habitual en grandes corporaciones.
Otra opción que podemos utilizar para gestionar nuestras pruebas es Jira. Simplemente con Jira, creando diferentes tipos de tareas y subtareas, o bien con plugins como Zephyr, tendremos gestión de requisitos, gestión de pruebas, gestión de defectos y paneles con informes, utilizando una herramienta que es bastante habitual en los equipos de desarrollo.
Redmine está más enfocada en equipos de QA. Es un software para la gestión de proyectos que incluye un sistema de seguimiento de errores. Redmine destaca por ser software libre y de código abierto, disponible bajo la Licencia Pública General de GNU.
mRemoteNG - MobaXTerm - RoyalTS
Por último voy a hablar de mRemoteNG, para mi, software de uso intensivo a diario. mRemoteNG es una aplicación que permite conexiones a equipos remotos. Soporta lo siguientes tipos de conexión: RDP (Remote Desktop), VNC (Virtual Network Computing), ICA (Independent Computing Architecture), SSH (Secure Shell), Telnet (TELecommunication NETwork), HTTP/S (Hypertext Transfer Protocol) y Rlogin (Rlogin). Podemos tener conexiones a diferentes tipos de máquinas, a las que nos conectaremos simplemente haciendo doble click. Además, podremos tener abiertas las conexiones que queramos en diferentes pestañas. Eso si, sólo disponible para windows.
MobaXTerm es una alternativa a mRemoteNG muy interesante. Permite conexiones SSH, Telnet, Rlogin, RDP, VNC, XDMCP, FTP, SFTP o sesiones por puerto serie. Esta opción también, sólo disponible para windows.
Una de las cosas más interesantes es la opción de multi ejecución, que permite ejecutar los mismos comandos en diferentes servidores, con sólo escribir una vez.
Por último, una opción para Windows y Mac, y para dispositivos iOS y Android es [RoyalTS](https://www.royalapplications.com/ts/osx/features).
Cada uno de estos programas da para varios artículos, y lo que hemos hecho no es más que una breve presentación. Si quieres saber más de alguna en concreto, o crees que alguna de ellas tiene alguna otra alternativa interesante, déjanos un comentario, y le dedicaremos un artículo.