Usa ApexUnit y Selenium para acelerar el desarrollo en Salesforce
Las pruebas unitarias y funcionales son una parte clave de cualquier flujo de integración continua. Estas son algunas herramientas que facilitan las pruebas en Salesforce.
Por Randalyn Hill-Coffer·Revisado por el equipo de Blue Canvas··3 min de lectura
Pocos temas generan tanto escepticismo en la comunidad de desarrolladores de Salesforce como las pruebas unitarias. A estas alturas, la mayoría de los desarrolladores de Salesforce reconocen y valoran sus beneficios.
La mayoría coincide en que las pruebas unitarias realmente te ahorran tiempo a largo plazo. Como señala Kevin Poorman en el video anterior, la vida útil promedio de un proyecto de software es de 12 años. El tiempo promedio que un desarrollador permanece en una empresa es de unos 2 años y 3 meses. Por eso, la mayor parte del tiempo dedicado a un proyecto de software se destina al mantenimiento, no al desarrollo de software nuevo. Aunque a veces parezcan poco atractivas, las pruebas unitarias son muy útiles para mantener una base de código. Sirven como un tipo de documentación que puede ayudar a los desarrolladores que se incorporan más adelante a entender qué intenta hacer el código.
Las pruebas unitarias también son fundamentales para la integración continua. Ejecutar pruebas automatizadas te permite implementar tu código con confianza mucho más rápido que si probaras todo manualmente.
DESAFÍOS DE LAS PRUEBAS UNITARIAS CON FORCE.COM
Aun así, pese a que el valor de escribir pruebas unitarias es prácticamente incuestionable y universalmente reconocido, Force.com no facilita mucho su ejecución. Aunque se exige una cobertura de pruebas del 75% para el código Apex implementado, las pruebas unitarias en Force.com presentan una serie de desafíos particulares que no enfrentan los desarrolladores de otras plataformas.
Primero, Salesforce no te permite simular tus clases u objetos como podrías hacerlo en otro entorno. Es difícil crear stubs. Y, al ser una plataforma en la nube, no hay forma de ejecutar pruebas localmente.
Lo más difícil del desarrollo en Salesforce es lo desesperadamente lentas que son las pruebas unitarias en la plataforma. Los equipos pueden esperar hasta 24 horas o más solo para ejecutar un conjunto completo de pruebas. En esas condiciones, es prácticamente imposible trabajar con entrega continua.
También hay problemas específicos de Apex. A pesar del requisito de cobertura de código de Salesforce, Force.com no facilita mucho la visualización de la cobertura de tus clases y objetos. Agrupar y filtrar también es difícil. ¿Cómo puedes reunir pruebas y crear conjuntos? ¿Cómo configuras tus pruebas unitarias para que funcionen con un servidor de integración continua como Jenkins o Bamboo? ¿Y cómo usas los informes de tus pruebas unitarias para ver qué sucede a lo largo del tiempo?
APEXUNIT MEJORA LAS PRUEBAS UNITARIAS PARA LOS DESARROLLADORES DE SALESFORCE
ApexUnit es un framework de pruebas unitarias de código abierto creado por Salesforce para ayudar a resolver algunos de los problemas mencionados anteriormente, aunque lamentablemente no todos. ApexUnit está diseñado para facilitar la gestión de pruebas unitarias de Apex, al igual que otros frameworks populares de pruebas unitarias, como TestNG y JUnit hacen para Java y NUnit hace para C#.
ApexUnit es una interfaz de línea de comandos (CLI) implementada en Java. Se integra “sin problemas” con servidores de integración continua como Jenkins y TeamCity, ya que puedes usar la CLI para crear pasos de compilación. ApexUnit te permite programar y ejecutar pruebas unitarias de forma asíncrona. También puedes usarlo para filtrar y agrupar pruebas en conjuntos.
ApexUnit te ayuda a cumplir los requisitos de cobertura de código con métricas e informes de pruebas en JUnit XML, incluida una función que te permite profundizar en los errores para depurarlos. La herramienta de cobertura de código proporciona información línea por línea e incluye un útil resaltado en rojo y verde para identificar qué áreas necesitan mayor cobertura. Todo esto se integra bien con herramientas de integración continua como Jenkins gracias a los formatos estándar utilizados, como los informes JUnit xml, y a la CLI. El registro de pruebas en vivo te permite tener una visión más clara de lo que sucede con tus pruebas unitarias en tiempo real.
Para saber más sobre ApexUnit, consulta la página de GitHub.
MÁS ALLÁ DE LAS PRUEBAS UNITARIAS CON SELENIUM
Las pruebas unitarias de Apex son excelentes, pero ¿qué hay de las pruebas de integración completas para garantizar que tu código funcione de principio a fin? Selenium Webdriver es una herramienta útil para hacerlo. Las pruebas con Selenium son excelentes porque te permiten probar la experiencia del usuario de principio a fin en varios navegadores. Jitendra Zaa, MVP de Salesforce, tiene una excelente serie de publicaciones sobre integrar Salesforce con Selenium aquí, que son un excelente punto de partida para cualquier desarrollador de Salesforce que quiera ir más allá de las pruebas unitarias.
¡Felices pruebas!



