Afirmar lo obvio: no todos podemos trabajar en I + D. Pero aún podemos aprender algo de la jerga. Aquí hay una frase: marco de pruebas unitarias JSL. ¿Qué es? ¿Cómo surgió? ¿Y porque es importante?
Desmitifiquemos el marco de pruebas unitarias JSL.
Gracias a Nicole Jones ( @Nicole_Jones ), Director sénior de pruebas analíticas avanzadas, para esta explicación:
"El término unidad se refiere al componente comprobable más pequeño de un producto de software y la frase examen de la unidad es el proceso de validación para garantizar que las unidades funcionen como se espera. La frase marco de prueba unitaria ha llegado a referirse al mecanismo utilizado para facilitar las pruebas unitarias automatizadas ".
Estadístico de investigación principal Joseph Morgan ( @Joseph Morgan ) introdujo estos términos a JMP cuando comenzó a trabajar como probador estadístico en 2005. (Ahora trabaja en el grupo del DOE). La experiencia de Joseph es en ingeniería de software y ciencias de la computación, así como en matemáticas y estadísticas discretas.
"Él concibió todo el concepto, un marco de prueba central", dice la gerente sénior de ingeniería de pruebas Audrey Shull ( @Audrey_Shull ). "Tiene muchas grandes ideas y esta fue una de ellas".
“Una vez que se familiarizó con JMP y JSL, pudo desarrollar el marco de pruebas unitarias JSL, teniendo en cuenta la naturaleza estadística del software”, dice Nicole.
Joseph Morgan explica (4:38)
'Beber nuestro propio champán'
Un marco de pruebas unitarias se puede escribir en otros lenguajes, pero ¿qué mejor herramienta que nuestro propio JSL?
Con el marco de pruebas unitarias JSL, "estamos usando JMP para probar JMP", explica Audrey. En otras palabras, estamos "bebiendo nuestro propio champán". Y eso no es posible con todas las herramientas.
"Podemos usar nuestro software para probar nuestro software porque tenemos este versátil lenguaje JSL", continúa Audrey. “Ampliamos los límites de lo que JSL puede hacer para respaldar el marco. Eso es algo muy especial. Y el marco en sí mismo sirve como una gran prueba de regresión para la compatibilidad con versiones anteriores de JSL.
"Si el personal de desarrollo cambia el funcionamiento de las secuencias de comandos, el grupo de prueba lo encuentra primero porque somos el primer cliente del lenguaje JSL.
“Todas las empresas intentan utilizar la automatización, pero a menudo utilizan otras herramientas de terceros para hacerlo. No siempre tendrán el lujo de utilizar su propio software ".
Un marco ampliable
Una captura de pantalla del cuadro de diálogo original. El marco de pruebas unitarias JSL se utiliza en todas las plataformas JMP. Por ejemplo, se puede utilizar para probar la funcionalidad de arrastrar y soltar en Graph Builder. O los menús del triángulo rojo. O cualquier unidad de código en la plataforma de distribución.
“No solo podemos usarlo para probar JSL en sí, sino que también podemos usar el marco para probar todas las demás plataformas”, dice Audrey.
Nicole elabora:
“En el momento en que Joseph estaba desarrollando el marco, su objetivo principal era encontrar una manera de crear un conjunto de pruebas de regresión para las plataformas estadísticas en JMP. Sin embargo, pudo crear un marco que era ampliable: el conjunto de pruebas de regresión incluye plataformas de estadísticas y plataformas de gráficos, funciona en Macintosh y Windows, prueba los comandos de la tabla de datos y las estructuras de los informes ”.
Trabajar con 'una red de seguridad'
El marco se puede ejecutar manualmente: los probadores y desarrolladores pueden iniciar, señalar y hacer clic y ejecutar. Pero la automatización es clave para la mejora continua.
El marco está automatizado a través de Perforce (un repositorio de trabajo), donde vive el trabajo de los desarrolladores, donde se implementa el código. Los probadores de JMP escriben casos de prueba y los cargan en una sección dedicada en Perforce.
Captura de pantalla del cuadro de diálogo de prueba tal como se ve hoy.
Un proceso automatizado nocturno, ejecutado por el desarrollador principal de sistemas Jim Borek, toma todas las pruebas cargadas ese día, toma todo el código enviado ese día, ejecuta los casos de prueba en el código actualizado y notifica al equipo cuando algo falla. Jim es fundamental para automatizar este proceso y mantener las máquinas.
Audrey describió la enormidad de las pruebas que se llevan a cabo: cada noche se ejecutan 2,4 millones de pruebas. Y eso está sucediendo en todos los sistemas operativos (por ejemplo, Windows, Catalina, BigSur) tanto para JMP 17 como para JMP 16.2. El proceso para ejecutar las pruebas en una sola máquina toma de 6 a 10 horas, dependiendo de qué tan rápido vayan las máquinas.
“Ese es el conjunto de pruebas de regresión: sin este marco tendríamos que probar estas cosas todos los días para ver si se rompen o no”, dice Audrey. “No puede ser manual. El conjunto de pruebas está automatizado para que el sistema nos advierta que ocurrió una falla.
"A veces nos gusta llamarlo red de seguridad. Sé que funcionó la última vez que lo probé, escribí un caso de prueba y, si se rompe, el sistema me avisa. Puedo pasar a otras cosas. Estamos tratando de probar las novedades y las novedades que se agregarán al software ".
El flujo de trabajo del marco de pruebas JSL


Encontrar un error de Apple
Joseph comparte una anécdota temprana que consolidó el valor del marco de pruebas unitarias.
“Poco después de que la implementación inicial del marco de pruebas unitarias JSL estuviera en funcionamiento, su valor se hizo evidente de manera espectacular de una manera bastante inusual. Curiosamente, no fue una regresión de JMP lo que detectó, sino que fue clave para aislar un error bastante grave en MacOS.
“A principios de 2006, Apple comenzó a realizar la transición de la línea Macintosh de CPU PowerPC a CPU Intel y, para ayudar en esta transición, incluyó un emulador con MacOS conocido como Rosetta. Este emulador permitía que las aplicaciones PowerPC se ejecutaran en Intel Macs y, por lo tanto, Apple lo consideraba una pieza clave de software.
“Resulta que hubo un error en el emulador de Rosetta que provocó varias anomalías inusuales en el comportamiento de JMP. Con el marco de pruebas unitarias, pude aislar el problema de un error en la implementación de la función de raíz cuadrada en Rosetta ( ver defecto S0351925 ).
“Michael Hecht y yo tuvimos varias conferencias telefónicas con ingenieros de Apple para explicar el problema, pero los ingenieros insistieron en que se trataba de un error de JMP. No fue hasta que Michael sugirió que escribiera una aplicación C ++ muy simple que esencialmente imitaba una de las pruebas unitarias que mostraban el error que Apple estaba convencido de que el problema era un error de Rosetta. Un año después, en marzo de 2007, Apple lanzó una solución para el error Rosetta en Mac OS X 10.4.8 ”.
¿Quién se beneficia?
“[El marco] se desarrolló pensando en los probadores, pero también ha demostrado ser útil para los desarrolladores”, dice Nicole. "Aprecio la capacidad de Joseph para crear un marco que pueda abordar las necesidades de muchos de nosotros".
Los probadores ubicados en Cary y Beijing dividen las funciones y monitorean ciertas áreas de JMP. Pero no importa qué parte de JMP sean responsables de probar, todos esencialmente también están probando el lenguaje de secuencias de comandos.
Audrey dice: “Cuanto más usamos JMP y JSL, pensamos en 'cosas agradables'. Aunque no somos nosotros los que estamos implementando las cosas, a veces somos los que pedimos '¿pueden agregar esto o aquello?' ”
Y la mejora constante, por supuesto, beneficia a los clientes.
“Es posible que nuestros usuarios avanzados de JSL quieran hacer algunas de las cosas que estamos haciendo. Nos impulsa a pensar en cómo podemos crear secuencias de comandos de una manera más sólida ".
Muchas de las campanas y silbatos que se han agregado se obtuvieron del equipo de ingeniería de desarrollo, pruebas y lanzamiento.
Felicitaciones a los jugadores clave que han agregado funcionalidad a lo largo de los años:
Joseph Morgan @Joseph Morgan
Melanie Drake @melaniedrake
Jim Borek
Xan Gregg @XanGregg
Michael Hecht @hecht_jmp
Justin Chilton @Justin_Chilton
Evan McCorkle @EvanMcCorkle
Nick Holmes @ nickholmes13
Este es solo uno de los muchos ejemplos del ingenio, la colaboración y el compromiso de la división de JMP con la mejora continua. Esperamos destacar más historias como esta. Comuníquese con Jessica Marquardt con ideas.
¿Quieres más información?
Panel de pruebas de JMP
Este artículo del Boletín de I + D de China escrito por la Gerente de Ingeniería de Pruebas, Nala Sun ( @Nala ) proporcionó inspiración para esta publicación: Marco de automatización de pruebas unitarias JSL
Así es como se generan, procesan y utilizan los resultados de las pruebas unitarias JSL para las ejecuciones de pruebas unitarias nocturnas: Canalización de datos de JSL Framework
Un artículo de Joseph Morgan: Unidad JSL: Pruebas JSL automatizadas
Orso, Alessandro y Gregg Rothermel. "Pruebas de software: un diario de viaje de investigación (2000-2014)". Futuro de los procedimientos de ingeniería de software. 2014. 117-132.
Página profesional de Alex Orso: https://www.cc.gatech.edu/home/orso/
Y gracias a @shannon_conners por proporcionar antecedentes y orientación.