HTTP Debugger: Charles vs Fiddler

Te comparto un post escrito por Andrei Guchín, experto en pruebas de performance gracias a los 7 años que hoy ya venimos trabajando juntos en Abstracta. En este post nos cuenta de su experiencia trabajando con herramientas conocidas como HTTP Debugging Proxy, Web Debugging Proxy o HTTP Debugger, comparando Fiddler y Charles Proxy.



Este tipo de herramientas nos brindan facilidades para capturar y desencriptar el tráfico HTTP/S entre cliente y servidor.  Se utilizan principalmente para:

  • Analizar los pedidos y las respuestas enviadas entre el cliente (típicamente el browser, pero puede ser cualquier cliente) y el servidor.
  • Buscar cuellos de botella y problemas de performance en general, mediante métricas obtenidas durante la captura.
  • También se utiliza en el proceso de pruebas de performance como referencia para el tester en la etapa de automatización.

Por lo general, las herramientas de este tipo muestran en su interfaz la secuencia de pedidos realizados al servidor, con sus correspondientes respuestas, exponiendo información variada como URLs, headers, bodys, tiempos de respuesta, tamaño del paquete, etc.

Dentro de las más populares se encuentran Fiddler y Charles Proxy. Ambas herramientas existen hace más de 15 años y hasta el día de hoy se les sigue dando soporte, por lo que podría decirse que son de las más maduras y estables entre las herramientas de estas características.

Son fáciles de instalar y soportan las características básicas necesarias para realizar un análisis detallado de la comunicación cliente-servidor de cualquier aplicación que se comunique por HTTP (incluyendo soporte para SSL).

A continuación se presentan ventajas y desventajas de cada una en base a mi experiencia utilizándolas en proyectos de pruebas de performance.

Fiddler

Fiddler fue la primer herramienta de estas características que utilicé. Está desarrollada en .Net por lo que funciona solo en Windows. Hay versiones beta para Linux y MacOS pero no he logrado hacer que funcionen bien, ni conozco algún caso de alguien que haya podido.

A continuación se presenta una lista de las ventajas y desventajas de esta herramienta.

Ventajas:

  • Es gratis.
  • Permite realizar comentarios en cada request. Esta característica es realmente útil cuando estamos automatizando, para identificar los pedidos que corresponden a cada paso del flujo.
  • La funcionalidad de buscar permite resaltar los pedidos de la lista en los que se encuentra el texto buscado, esto es muy práctico a la hora de correlacionar variables (o sea, parametrizar datos obtenidos de la respuesta de un pedido anterior).
  • Se pueden generar scripts de JMeter a partir del archivo creado al guardar los pedidos capturados.

Desventajas:

  • Funciona solo en Windows.
  • El diseño de la interfaz puede no ser el mejor para usuarios sin experiencia. Leí algunas reviews donde afirman que la interfaz parece estar hecha por un desarrollador, debido al poco “cariño” que le pusieron al diseñarla. Por otro lado la disposición de izquierda a derecha que utiliza para mostrar la información de los pedidos no es tan práctica como el diseño vertical de Charles.

Charles Proxy

Comencé a usar Charles cuando me pasé al mundo Mac, ya que no pude hacer andar la versión beta de Fiddler para MacOS. Charles es una aplicación Java, por lo que no tiene problemas de compatibilidad con los principales sistemas operativos.

En principio me costó adaptarme a la interfaz de usuario, más que nada porque estaba acostumbrado a la interfaz de Fiddler que venía utilizando hace años. Sin embargo, para gente que no ha usado ninguna de las dos herramientas, la interfaz de Charles resulta más intuitiva.

A continuación se listan las ventajas y desventajas de esta herramienta.

Ventajas:

  • Interfaz de usuario más intuitiva.
  • Cuenta con un tab “Structure” que agrupa los pedidos por servidor y permite filtrar de manera más rápida los request. Esto es útil, por ejemplo, para eliminar los pedidos a servidores que no interesa analizar.
  • Funcionalidad de Throttling, que permite limitar el ancho de banda del cliente para simular otras conexiones (como por ejemplo un módem de 256 kbps, conexión 3G, etc.) y ver cómo impacta en la performance que experimenta el usuario.

Desventajas:

  • Su uso es bajo licencia. Tiene una versión gratuita pero la misma se cierra cada media hora, lo que es bastante molesto cuando se utiliza a diario.
  • No permite comentar los request. Funcionalidad muy útil al automatizar, como comentaba anteriormente.
  • La forma en que devuelve los resultados, al buscar texto dentro de los requests, no es la mejor en los casos en que se está utilizando la herramienta para correlacionar variables (durante una automatización). Los pedidos encontrados no se muestran en orden cronológico sino que están agrupados por servidor.
  • De momento el generador de scripts de JMeter no soporta los archivos generados por esta herramienta.

Conclusión

Ambas herramientas me parecen muy buenas, tanto para análisis como para automatización a nivel de HTTP.

En lo personal me costó un poco adaptarme a Charles, ya que durante años utilicé solamente Fiddler, por lo que estaba muy acostumbrado a su interfaz y a sus comandos, shortcuts, etc.. Por otro lado, expertos en usabilidad afirman que Charles es más intuitiva y recomiendan Fiddler para usuarios un poco más avanzados.

Creo que la gran ventaja de Fiddler es la compatibilidad con el generador de scripts de JMeter, que para automatizar es de uso casi obligatorio. El otro punto importante es el tema de la licencia, si se está trabajando con la versión gratuita de Charles es muy molesto tener que estar abriendo la herramienta cada media hora. En el resto de las funcionalidades me parece que están bastante parejos.

Por lo tanto, concluyo que:

  • Si estoy en Windows preparando una automatización de pruebas de performance, prefiero Fiddler, mientras que para el análisis de performance recomendaría usar cualquiera de las dos.
  • Si se está usando Linux o MacOS iría por Charles sin dudarlo.

¿Cuál es tu experiencia?

Leave a Reply

Your email address will not be published. Required fields are marked *