Automatice las pruebas de JSL utilizando Hamcrest (2019-EU-45MP-061)Nivel: Avanzado
Función laboral: Programador
Justin Chilton, ingeniero de pruebas asociado sénior de JMP, SAS
Evan McCorkle, desarrollador de software JMP, SAS
¿Has escrito algo de JSL y te has cansado de realizar pruebas manualmente después de cada cambio? ¿Ha roto sin darse cuenta alguna parte de su aplicación o el miedo a hacerlo le ha impedido realizar los cambios que desea realizar? Con las pruebas automatizadas, puede tener más confianza en sus cambios.Ahora está disponible un conjunto de herramientas para automatizar las pruebas de JSL. Este framework incluye la creación de pruebas y casos de prueba, así como una implementación de la conocida biblioteca de aserciones Hamcrest. Hamcrest proporciona formas flexibles de afirmar lo que usted sabe que es cierto sobre el comportamiento de su JSL. Estas herramientas tienen todas las funciones y pueden especializarse según sus necesidades. De hecho, el desarrollo de JMP incluso los utiliza para probar el propio JMP.La presentación cubrirá este marco y su uso para probar una aplicación JSL de ejemplo, desde funciones individuales hasta la automatización de interacciones GUI.
FugarseDesarrollo de aplicaciones JSLRe: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)Hola @Justin_Chilton , Gracias por su respuesta. Había encontrado la solución que escribes como ejemplo antes de leerte, así que me confirmas que estaba en el camino correcto. Ya que vuelvo a este proyecto es posible que tenga nuevas preguntas en unos días... Gracias de nuevo por sus respuestas.
Re: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)Hola @carola ,
Disculpas por la demora en la respuesta, ya que no vi tu respuesta. En este escenario, agregaría un argumento opcional a la función 'openfile' que podría pasar durante la prueba para evitar la necesidad del cuadro de diálogo emergente.
A continuación se muestra una actualización de su secuencia de comandos donde puede pasar argumentos opcionales. Otra alternativa es tener algún tipo de indicador como 'isTest' que pueda verificar en su código para evitar cuadros de diálogo modales como este.
openfile = function ( {path = Empty()},
strPathOpen = If(IsEmpty(path),
PickFile("Select the Data Set Table","$SAMPLE_DATA",{"JMP DATA TABLE|JMP"}),
path
);
If(strPathOpen != "", Open(strPathOpen), Empty());
);
ut test("Pickfileok", "Open Big Class File", Expr(
dt = openfile("$SAMPLE_DATA/Big Class.jmp");
ut assert that(Expr(dt), ut n col(5), "opened table should have 5 columns");
));Re: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)Perdón por mi ejemplo muy simple. @Justin_Chilton . Intenté simplificar mi problema. ¿Cómo puedo hacer para evitar hacer clic en la ventana de selección de archivo durante la siguiente prueba?
openfile = function ( {},
strPathOpen = PickFile("Select the Data Set Table","$SAMPLE_DATA",{"JMP DATA TABLE|JMP"});
return(strPathOpen)
);
ut test("Pickfileok", "Open Big Class File", Expr(
ut assert that(Expr(openfile()), "/C:/Program Files/SAS/JMP/15/Samples/Data/Big Class.jmp");
));
Re: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)Ok, gracias por la precisión, está claro. Voy a probarlo en una aplicación sencilla. Tal vez tenga algunas otras preguntas...
Re: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)@carola , siempre y cuando solo escriba pruebas con nuestros comparadores existentes, no necesita usar clases. Necesitaría usar Define Class() y Method() si necesitara escribir sus propios comparadores, pero proporcionamos una gran cantidad con la biblioteca, por lo que probablemente no necesite más.
Re: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)Muchas gracias @Justin_Chilton . Encontré el complemento, por supuesto, ¡gracias! Para las preguntas, me pregunto si usar Definir clase () y Método () es esencial para usar pruebas de Hamcrest para una aplicación con una interfaz de usuario. No estoy familiarizado con esa forma de secuencias de comandos...
Re: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)Hola @carola , los ejemplos de JMPMan se encuentran en el complemento, pero los he subido en un archivo zip para que sea más fácil acceder a ellos. ¡Hazme saber si tienes alguna pregunta!
Re: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)Hola @Justin_Chilton Gracias por la presentación de Hamcrest. ¿Podría compartir el ejemplo que desarrolló en su presentación: aplicación JMPMan y JMPManGuiTests.jsl? Debería resultarme más fácil reproducir la lógica de los scripts en otras aplicaciones. Muchas gracias. carole
Re: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)¡Gracias! Me puse al día con la conversación y creo que están en el camino correcto. ¡Espero ver en qué se fusiona!
Re: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)Hola @nathan-clark ,
Hemos estado discutiendo cómo podría funcionar un comparador de tablas de datos en GitHub aquí: https://github.com/sassoftware/jsl-hamcrest/pull/57
Creo @vince_faller Quizás ya esté trabajando en algo.
-Justin
Re: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)Justo estaba pensando en esto el otro día. @vince_faller .¿Ya has encontrado una respuesta? Estaba pensando en usar la plataforma Comparar tablas de datos, pero no vi un resultado que pudiera usar en una prueba unitaria.
Re: Automatizar las pruebas de JSL usando Hamcrest (2019-EU-45MP-061)¿Existe una práctica recomendada para comparar tablas de datos?No hay ninguna coincidencia que pueda encontrar.