bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


php_test

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Següent revisió
Revisió prèvia
php_test [2022/10/13 10:17]
enrique_mieza_sanchez creat
php_test [2022/11/29 10:09] (actual)
enric_mieza_sanchez [XPath]
Línia 3: Línia 3:
 Anem a explorar algunes tècniques de //testing// per a webs implementades en llenguatge [[PHP]]. Anem a explorar algunes tècniques de //testing// per a webs implementades en llenguatge [[PHP]].
  
-Abans de començar amb aquest article has de conèixer les bases de programació web i del llenguatge [[PHP]].+Requisits: conèixer les bases de programació web i del llenguatge [[PHP]].
  
-Utilitzarem diverses eines+Referències
-  * Composer +  * [[https://getcomposer.org/download/|Composer]] : gestor de paquets PHP. 
-  * PHPunit +  * [[https://phpunit.readthedocs.io/es/latest/|PHPunit]] : utilitat per facilitar tests en PHP. 
-  * Selenium+  * **Selenium** : suite d'eines per a automatitzar accions amb els navegadors web o //browsers//
 +    * [[https://github.com/mozilla/geckodriver/releases|Geckodriver]] : //driver// de Selenium per a Firefox. 
 +    * [[https://www.selenium.dev/selenium-ide/|Selenium IDE]] : aplicació per a l'enregistrament d'automatitzacions del //browser//. Disponible com a //plug-in// per a Firefox i Chrome. 
 +    * [[https://github.com/php-webdriver/php-webdriver|Selenium PHP driver]] : llibreria per emprar Selenium des de PHP. 
 +  * [[https://jakobbr.eu/2020/10/24/adventures-with-phpunit-geckodriver-and-selenium/|PHPunit+Selenium]] : article on s'explica com combinar les dues tecnologies exitosament (i no morir en l'intent).
  
-{{tag> #FpInfor #Daw #DawMp07 #DawMpProj #Ciber #CiberMp03 #Ceti #CetiMp03 }}+ 
 +{{tag> #FpInfor #Daw #DawMp07 #DawMpProj #Ciber #CiberMp03 #Ceti #CetiMp03 test tests testing php }}
  
 \\ \\
  
-===== Repositori d'exemple i instal·lació =====+===== Introducció ===== 
 +El testing és una part imprescindible del desenvolupament. Fins-i-tot hi ha metodologies de desenvolupament com la TDD (Test Driven Developmenet) en què primer es generen els tests que el software ha de passar en base a les especificacions i //user stories// establertes, i després es desenvolupa el software necessari.
  
 +Sovint, la quantitat de codi generat per la part de //testing// pot arribar a superar a la quantitat de codi funcional. Això és natural, ja que si volem ser exhaustius amb les comprovacions, sovint cal comprovar una gran quantitat de possibles casos per assegurar que el //software// funciona com cal.
 +
 +Hi ha una ampla [[https://en.wikipedia.org/wiki/Software_testing|classificació de tests]] possibles per al //software// segons diversitat de criteris. En destaquem alguns conceptes (no son una classificació per sí, només alguns conceptes importants):
 +  * **Unit testing** : tests orientats a provar parts petites del codi, habitualment classes i funcions.
 +  * **Regression test** : tests orientats a comprovar que les funcionalitats desenvolupades fins el moment continuen funcionant correctament, sobretot quan s'afegeix noves funcionalitats o bé es corregeixen //bugs//.
 +  * **Tests funcionals** : test orientat a comprovar una funcionalitat de l'aplicació, normalment relacionat amb les //user stories// que en defineixen el comportament.
 +  * **Tests no-funcionals** : comproven altres variables no relacionades amb les //user stories// com l'arquitectura d'escalabilitat o la resposta a altes càrregues de trànsit.
 +
 +\\
 +
 +===== Exemples =====
 +
 +
 +==== Botiga ====
 Utilitza aquest repo i segueix les seves instruccions per a un primer apropament als tests: Utilitza aquest repo i segueix les seves instruccions per a un primer apropament als tests:
  
   https://github.com/emieza/selenium-php   https://github.com/emieza/selenium-php
  
 +Es tracta d'un codi molt senzill d'una botiga.
 +
 +\\
 +
 +==== Exercicis MySQL ====
 +
 +En aquest exemple no hi ha el codi del què s'ha de fer, sinó que és una plantilla per a testejar els exercicis indicats a l'article [[PHP MySQL]] d'aquesta mateixa wiki.
 +
 +Per executar els tests llegiu el README del repo:
 +
 +  https://github.com/AWS2/php-mysql-world-test-template
 +
 +Està pensat per ser utilitzat com a plantilla per a [[Github Classroom Autograde]].
 +
 +\\
 +
 +===== XPath =====
 +Per accedir als elements del DOM HTML és habitual utilitzar [[XPath]].
 +
 +Per exemple, al [[https://github.com/AWS2/php-mysql-world-test-template/blob/main/.tests/AddCityTest.php|AddCityTest.php]] trobem:
 +
 +<code php>$element = self::$driver->findElement(WebDriverBy::xpath(
 +           "//option[contains(text(),'$countryName')]"));
 +$element->click();
 +</code>
 +
 +Per mes info consulta l'article [[XPath]].
 +
 +\\
  
php_test.1665656224.txt.gz · Darrera modificació: 2022/10/13 10:17 per enrique_mieza_sanchez