2. Les Tests
Citations
✔
« Des fois cela plante »
✔
« On a testé, …
il y a 3 mois lors de la dernière livraison...
Pas eu le temps... »
nAcademy – 30 Janvier 2013
3. L'importance des Tests
Pourquoi c'est utile ? Et L'intérêt...
✔
Le code peut casser ✔
Coûte du temps au début
✔
Changer le nom d'un
fichier ✔
En fait gagner ensuite
✔
Nécessite de la rigueur et
✔
Pas le temps d'en de la constante
faire
✔
C'est long
manuellement
nAcademy – 30 Janvier 2013
4. Les différents types de tests
✔
Tests Unitaires
✔
Module / classe / méthode
✔
Tests fonctionnels
✔
l'interface utilisateur testée par le client
✔
Tests intégrations
✔
Tester la navigation, et l'interface utilisateur
✔
Tests Automatisés
✔
Détecter les régressions, c'est rapide
✔
Le faire à chaque livraison de lots
✔
Tests de charges
✔
Tests d'ergonomie
✔
Tests de sécurité
nAcademy – 30 Janvier 2013
6. Tests unitaires
Déroulement Quoi tester ?
✔
Ecrire un test qui échoue ✔
Un module
✔
Ecrire un test qui est bon ✔
Une classe
✔
Un test de sécurité ✔
Une méthode
✔
Un test de contrôle
✔
Tester
✔
Ce qui est important
✔
Le risque de casser
✔
Les parties que vous
touchez souvent
nAcademy – 30 Janvier 2013
9. Installation
En ligne de commandes
# sudo apt-get install phpunit
# pear channel-discover pear.phpunit.de
# pear channel-discover components.ez.no
# pear channel-discover pear.symfony-project.com
En mode assistée Avec IDE
- Windows - Eclipse PDT
- Linux - Netbeans
- Mac
nAcademy – 30 Janvier 2013
10. Tests Unitaires : 1
Du code... +ieurs commentaires
<?php
<?php
class calculs
class calculs {
/**
{
* @assert (0, 0) == 0
public function add($a, $b) * @assert (0, 1) == 1
* @assert (1, 0) == 1
{
* @assert (1, 1) == 2
return $a + $b; * @assert (1, 2) == 4
*/
}
public function add($a, $b)
} {
return $a + $b;
?> }
}
?>
nAcademy – 30 Janvier 2013
11. Tests Unitaires : 1
1 commentaire Passer au test
<?php <?php
class calculs /**
{ * Generated from @assert (1, 1) == 2
/** */
* @assert (0, 0) == 0 public function testAdd4()
*/ {
public function add($a, $b) $this->assertEquals(
{ 2,
return $a + $b; $this->object->add(1, 1)
} );
} }
?> ?>
nAcademy – 30 Janvier 2013
12. Tests Unitaires : 2
<?php function test_insert_user() {
session_start(); $html = new html() ;
require_once '/config.php'; $formulaire = new Form('data');
$data= array (
class tests_user extends 'user' => array (
PHPUnit_Framework_TestCase {
'login' => 'admin',
function __construct() {
'nom' => 'nom',
$this->bdd = new BDD();
'prenom' => 'prenom',
$this->bdd->connect();
'email' => 'email@xxx.com',
$this->bdd->requete("DROP TABLE
'id_profil' => 115,
IF EXISTS `user`");
)
$this->bdd->requete("CREATE
);
TABLE `user`...");
}
add($this->bdd,$formulaire,$html,$data);
}
?>
nAcademy – 30 Janvier 2013
14. Tests fonctionnels
Déroulement Quoi tester ?
✔
Prépare outil & API ✔
Nous... Rien
✔
On le partage ✔
C'est le client
✔
On récupère le résultat
nAcademy – 30 Janvier 2013
20. Tests d'intégrations
Déroulement Pourquoi ?
✔
1 Navigation de la prod. ✔
Simulation d'un être
humain
✔
Générer le script pour
repérer les modifications ✔
Détection des problèmes
de comportement éventuels
✔
1 exécution sur le
nouveau serveur
nAcademy – 30 Janvier 2013
28. Tests de charge
Déroulement Pourquoi ?
✔
Préparer un scénario ✔
Générer une charge
réaliste avec 1 scénario
✔
Saisir le nombre de
connexion simultané ✔
Superviser un test de
charge
✔
Voir le résultat
✔
Analyser les résultats
nAcademy – 30 Janvier 2013
29. Tests de charge : utilisation
Outils
✔
Java EE
✔
Tsung
✔
jMeter
nAcademy – 30 Janvier 2013
30. Tests de charge : cas pratique avec jMeter
nAcademy – 30 Janvier 2013
36. Le début du commencement
✔
Suivre une procédure claire
✔
Faire un essai sur un serveur de tests/preprods
✔
Pas de production du 1er coup
✔
Prévoir des versions identiques
✔
OS / Serveur / Logiciels...
✔
Contrôler la validation des sources
✔
tar.gz + clef
nAcademy – 30 Janvier 2013
37. Automatiser les tâches : Déroulement
Développements
Serveur Intégration
Tests & validation
Serveur
Serveur
Production + tag Préprod
Préprod
Déploiement
Serveur
Serveur
Test client
Test client
Déploiement
Tests serveur prod.
Les noeuds
nAcademy – 30 Janvier 2013
38. Automatiser les tâches
Outils
✔
Shell-scripts
✔
Pear
✔
Ant
✔
Phing
✔
Weploy
nAcademy – 30 Janvier 2013
40. Principe de fonctionnement
✔
Checkout du projet
✔
Lancement des tests (ex : tests unitaires)
✔
Création d'une archive
✔
Transfert et déploiement en ssh / ftp
✔
Possible Rollback
Valider l'étape
nAcademy – 30 Janvier 2013
41. Au niveau du code
# pear channel-discover pear.phing.info
# pear install phing/phingdocs
<?xml version="1.0" ?>
<project name="demo" basedir="." default="example">
<target name="example">
<echo message="yep, I will create a directory" />
<mkdir dir="/mon/chemin/" />
</target>
</project>
Exécution :
# phing
✔
Si c'est nécessaire → création du dossier
nAcademy – 30 Janvier 2013