 Buenas tardes, esta soy eu, soy desarrollador web, esperate que está moi alto, no? Soy freelance, vivo en HACA, trabajo en remoto para otros desarrolladores, gente que tiene mucho que hacer, no puede con todo, me pasa algunas cosas. Quando eu empecé en este mundo, eu sabía muy poquito e a medida que ida trabajando en proyectos e ida pendiendo Jungler, WordPress, jquery, codeception, view, eu que sei, lo que hace falta. Vale, primeiro eu vou contar que son os test de asestación, que son e que non son, luego alguns criterios para diseñar un test de asestación, vou apresentar águnas herramientas para automatizar e luego vou hacer um pequeno test, um hello test, usando estas 4 herramientas para ver como se pone en marcha. E vamos saber que son os test, uno hace una página, una aplicación e á la hora de probarlo, se pode probar a distintos niveles, pues probar na parte esencial del programa, un método, unha función. Quando pruebas esa parte pequeñita se habla de test unitarios e logo hay veces que pruebas una función concreta, pues unha resposta, un request, una parte del programa que ya hace algo en si, pero todavía non é todo. E os suelen llamar test funcionales. E logo ya tienes outros test, que lo que hacen es que se ponen ao lugar do usuario e prueban el software todo como conjunto. E os son os test que voy a hablar agora e se llaman test de asestación. Estos test todos son necesarios, porque tú podes tener un programa que todos os test de unitarios pasan e sin embargo os funcionales non. E os es porque cada función del programa está bien hecha, pero logo non se comunican bien entre sí o... hay un problema. O podes tener todos os test funcionales que están pasando e os desestacións non. E podes ser desde que non se comunican bien entre sí e o las partes del programa hasta que hay un fallo de diseño que non se ha planteado bien a funcionalidad. E se ya nos centramos en test de asestación que hay que hacer, hay que definir un conjunto de casos de test que vamos a probar e hay que saber elegir que casos ponemos porque por una parte queremos que sea breve, que acaben rápido e quando hay un cambio pasen en seguida e também queremos que sea xaustivo e lo prove todo e estemos seguros que o programa funcione. E lo hay un criterio que para mí es importante e es que os test tienen que ser mucho má sencillos que os son porque estás intentando probar. Porque senón, se os programas tienen fallos porque son muy complejos e os test que también son muy complejos e os temos os mesmos problemas. E luego hay una cosa que te dicen e eu quero test con 100% de cobertura. Bueno, pues eu creo que se pode tener 100% de cobertura en test unitarios, tienes test en todas as funciones pero ya en un ente complejo como es un proyecto de software que tiene interacciones que non podes controlar 100% pues non podes asegurar 100% e es que bueno que esto funciona pero todo, todo, todo pues non se pode. Que criterio os utilizo para definir ese conjunto de casos de test que van a ser los test de acertación que le voy a pasar ao programa? Pues, hay una cosa importante e es que hace esto e lo defino bien el camino que recorrer por el programa. E tengo que saber dónde empiezo e que quiero que haga. Empiezo aquí, hago esto e luego el resultado tiene que ser este e que sabes que el resultado es xin funciona e que el resultado es xin non funciona porque xin non lo hago pasas los test e fallan pero a veces fallan e a veces non e entonces non es unha herramienta útil e entonces para, a la hora de encontrar estos casos que para mi es unha parte difícil del diseño pues nada coges el programa lo usas, pruebas piensas en la gente que va usar el programa que partes son importantes o que no quieres que fallen de ninguna forma e con toda esta parte ha sido un pouco sutil entonces ya diseñas tus casos e a partir de ahí ya es mecánico, no? Vale, entonces todo esto o puedes hacer a mano tú puedes coger unha libreta escribir todas las cosas que quies probar un bolly e vas marcando lo pruebas e lo marcas es aburridísimo proya patatero e muito melhor que lo haga un programa e entonces se automatiza e hay una serie de herramientas que en realidad lo que hacen de usuario e utilizan os navegadores contra a aplicación e eso son las herramientas de test que voy a presentar os voy a presentar esas 4 herramientas pero hay muchas más a parte de estas 4 e para presentar esas herramientas voy a usar un caso de test súper sencillo pero que recoge los conceptos que se quieren elegir nos imaginamos que eu tengo una página en mi sitio que le ha marcado como privada e entonces que voy a hacer voy a visitar esa página e quero que me salte un error de que esa página entro como entro la condición inicial entro como público general e esa página no la puedo ver pero quero saber además que la web funciona e entonces visito esa página que no funciona e miro que me da el error e visito la página que sí funciona e comprobo que funciona e entonces o que quero es que haya un programa que haga eso e entonces ahora os voy a mostrar un video de un test que hace eso coge abre navegador espera que cargue esa página está no carga e me voy a la outra e comprobo que sí que está así carga e eso é o que quero hacer e aí hay herramientas variadas para hacerlo e entonces voy a presentar 4 e a primera é simplemente un plugin que le pones al navegador e a base o estilo de macro e luego já pasamos a herramientas más de programación co-desception que está base no PHP e un par de herramientas basadas en Javascript que é C++ e Pupitier se empezamos con Selenium Selenium é uma extensión de Firefox o de Chrome e as talas como cualquier extensión de navegador e abaixo está a URL e eu já posto muitos enlaces ok as instalado o plugin te pone um botón 5 aí arriba te oferece te pregunto como queres llamar a tu teste e entonces graba todo o que haces tu pas por aí con o ratón pincha no sé que navegas vou aquí e quando ya estás en el sitio dices eu quero comprobar que é o que quero comprobar te parece un elemento novo no menu dices eu quero comprobar que o texto é este e assim e ya está o botón de par a gravação e ya o tienes listo quando haces ese processo pasan dos cosas por um lado te lo pone na consola o que has hecho te dice ha ido a esta página e ha comprobado que le sale este mensaje e ha ido a outra página e ha comprobado que sale este mensaje e además te crea un fichero en cuanto has hecho 2 ou 3 de estos olvidas na consola e te vas al fichero porque é má rápido de editar e de utilizar una vez que ya o tienes hecho e dices cada vez que queres probar o programa te das o botón tebra a consola e o ejecutas corres como un amacro funciona bien pues te sale en verde e estás encantado e se não funciona pues te sale en rojo e tens que investigar e ver o que pasa vale vamos a por a segunda o problema disto do amacro é que quando queres hacer cosas más completas ou queres reaprovechar pruebas e o má queres algo má avanzado então co-deception é una herramienta está basada em php isso significa que según que cosas queres hacer podes aprovechar o que te ofrece php e por exemplo un programa que manda un correo pues podes usar as herramientas de correo que tiene php para ir a ver o correo vale como conseguimos tener co-deception en marcha usas componser e o instalas cuando queres instalas tienes dos opciones podes utilizar e tens la url utilizas una instalación especial para o orpres que te traia herramientas esta mañana las comentaba como se ia usas esas herramientas que ya tiene funciones definidas especiales para entrar en el administrador para mirar los plugins ou se no puedes hacer una instalación general según que tipo de cosas quieras probar pues ya te conviene más una o outra o composer instalas todas las dependencias e de por si ya trae un navegador o php browser de manera que non tendrías que instalas nada más pero eu personalmente instalado o driver de chrome porque tenho una cosa que me gusta e es que podes activar o desactivar la opción de que te salga la ventana está en navegador con todo o que hace es con el mismo código de test pues abrir la ventana o se estás funcionando en plan de correr los test pues lo tienes oculta e eso a mí me resulta cómodo e aparte estos navegadores aí muntan pero se ya vale, entonces ya tengo que ser instalado e hay que poner las configuraciones pones los módulos que utilizas e pones las opciones de navegador de pero bueno de que URL vas a probar estos ficheros este es el fichero donde se almacena la configuración e hay documentación para saber que tienes que poner etc. el codecemption hecho documentado hay que escribir el test e estoy así es fácil de dizer voy a esta URL comprobo que me sale no sé qué voy a la auto URL comprobo que me sale el outro un montón de comandos que están recogidos a la hora de ejecutar lo tienes que lanzar el driver del navegador lo mandas al fondo e luego ya ejecutas el comando que lanza el test en la consola pues sí funciona te sale en verde e si no pues te sale en rojo te dice en que fallo en que paso se utilizas a la hora de lanzarlo le pones un modificador de bug pues te pone porque pasos estás pasando e si no te genera ficheros pantallazos información para pasamos a estas dos herramientas son as herramientas basadas e javascript entonces estas herramientas las puedes instalar con nodes lo que se recomienda en la instalación la instalas con nodes e instalas con una dependencia del proyecto e lo mueves todo junto los test con el proyecto toda la vez la instalas simplemente con un comando e abres la consola te abre la consola tiene una serie de test de ejemplo e puedes escribir el tuyo e las ideas son las mismas aunque la sintaxis sea outra visitas este sitio esta url comprobo que contienes a cadena visitas este outro sitio comprobo que contienes a outra cadena desde la consola esta que te abre cuando ejecutas el run e lo lanzas el test e te sale se ha pasado bien te sale todo en verde e se no pues te sale en rojo con los comentarios de que ha pasado etc. estes los de la gente de cipres a parte de las herramientas estas que son gratuitas tiene una herramienta de pago cipres dashboard que es un gestor ya mucho más complejo pues almacenar resultados tener un montón de test una herramienta ya moi potente e outra a quarta herramienta que presento e también es de Javascript es Puppetier que es una librería para controlar Chrome e en este caso le ha utilizado usando codecept josaese como para aguas codecept es parecido a codecept e pode funcionar con varias herramientas varias librerías que controlan navegadores e en este caso he usado Puppetier se instala igual que cipres josaese como una dependencia con node e la inicializas con init tienes las URLs de por donde empezar e luego tens una herramienta que me parece muy chula que se más allí e tiene ya estos test puedes probar cambiarlos ver lo que sale está bien a la hora de preparar el test e que se ejecuta un comando para crear el fichero e tienes un fichero de configuración o codecept js en el que le indicas que librería vas a usar para controlar el navegador e luego donde tens el test a que a la derecha está o código del test que es muy parecido visito esta URL veo o mundo e luego en la siguiente porque al preparar las charlas me encontré que a Puppetier no le gusta que haya errores e como golpe este devolve un 404 o cuando la página es privada pues en vez de buscar el texto busco outra condición e lo que hago es que compruebo que en esa URL nos devolve un 404 e lanza con un comando modificadores steps para que te muestre para mi que trabaja codecept js porque esto de igual lo mismo se le pones steps te saca todos os pasos que va haciendo e se encontra todo bien sol en verde e se nos sale en rojo e te dice que ha pasado resumiendo las cosas que he ido contando que son test de aceptación que prueban toda a aplicación en conjunto e que tenebente e diseñar-los que hay que hacer un balance entre velocidad e profundidad e que los casos de test tienen que estar bien definidos donde empiezo o que hago donde acabo e luego podemos usar unas herramientas empezando por selenium id codeceptión cipres codecept js controlando popitía e nada más muchas gracias vamos romper el hielo con las preguntas he trabajado solamente con codeceptión e sempre he tenido muchísimos problemas por ejemplo con el evento mouseover por ejemplo un menú quiero verificar tengo ciertos menús privados o públicos te ha pasado este problema lo has tenido de ser así como lo has solucionado nono me ha pasado es que yo creo que sempre he tenido eventos de click he tenido eventos de over sé como lo soluceraría o que suele pasar es que no llega a ejecultar el evento entonces sempre me devolvi a falso e me rompía la cabeza pero igual eso tendrias que esperar esperar a algo que cambia el domo exactamente lo que tenia me tenias muchas nyapas de weight 300 milisegundos 500 milisegundos hasta que apacidad pero en vez de poner un weight lo que tienes pones un pero no un weight de segundos sino un weight a algo que se haga visible es decir, eu uso mucho por ejemplo o weight for element visible esperas a que un elemento do dom se haga visible e otras veces o que agositarda mucho le pones un pones un try catch e entonces en el try pero no se enrolle mucho quando falla el test no tarde minuto e imedio en fallar es opción que mencionas tiene un segundo parámetro de bueno espero 3 segundos por sáfas quando dices espero por elemento visible le pones un time out espero por elemento invisible 30 segundos se es un evento que tarda mucho pues eu que sepote que ira a preguntar algo e volver o algo de sole que se pone un time out largo porque se está la página cargada o tal tarda pero claro se le pones mucho e o problema funcione te tiras allí un minuto e imedio mirando a ver se falla o non e a veces o que hago es que pones un time out corto e lo metes dentro de un try catch e entonces falla o primeiro e en el catch le pones ese pero largo e entonces non te tiras ahí toda a vida esperando e eso me vea bien non es una pregunta es un comentario a lo que estábais aquí debatiendo no podrias poner un css el selector un xpath selector de python con el selenium e esperar a que estuviera non lo sé imagino non tenho ni idea igualsa seria mejor para non poner time out ni pero eu acho que o problema que tiene o problema que tiene ele e que o test intenta continuar antes de que a ventana antes de que a ventana se le haya abierto si pues en ese punto para saber se el problema es que se abre pero el asunto es que el test va rápido e entonces non le da tempo que se abra le falla el test porque non espera que se abra porque tarda unos milisegundos en abrirse pero quando se abre tendrá una clase o... si pero el problema es que cuando se le abre el test ya está tres pasos más abajo e ha fallado vale vale por eso tienes se te fijas en los comandos de co-deception o imagino es el mismo es parecido e tiene muchas opciones de esperar a e es porque claro tú cuándo quando tú navegas como persona primero tardas más e luego instantimamente esperas pero claro el programante en instintos entonces por eso aí siempre ese problema e las cosas que van el test va demasiado rápido e tienes que esperar a que pase yo creo que era ese el problema que describía el pero sí os selectores y listos