feat: Semaine 13

This commit is contained in:
gauvainboiche
2026-09-04 17:25:11 +02:00
parent d0b00802d7
commit 1a3b11555b
44 changed files with 14807 additions and 31 deletions
@@ -0,0 +1,27 @@
# Exercice 01 - Adam GABRIEL, Louis LEULIETTE, Gauvain BOICHÉ
## Quel type de test faut-il écrire ?
### A : La fonction qui calcule la TVA renvoie-t-elle le bon montant ?
> Test unitaire
### B : Le site tient-il si 800 personnes commandent en même temps ?
> Test de charge
### C : Un client peut-il voir la facture d'un autre client en changeant l'URL ?
> Test de pénétration
### D : Le formulaire d'inscription est-il utilisable au clavier seul ?
> Test d'accessibilité
### E : Quand j'enregistre une facture, est-elle vraiment écrite en base ?
> Test d'intégration
### F : Le parcours "je me connecte, je commande, je paie" fonctionne-t-il ?
> Test end-to-end
### G : A partir de combien d'utilisateurs le serveur tombe-t-il ?
> Test de stress
### H : Le comptable valide-t-il que la facture contient les bonnes mentions ?
> Test validation
@@ -0,0 +1,150 @@
# Exercice 02 - Adam GABRIEL, Louis LEULIETTE, Gauvain BOICHÉ
```php
<?php
class Facture
{
private array $lignes = [];
public function ajouterLigne(
string $libelle,
float $prixHT,
int $qte
): void
{
$this->lignes[] = [
'libelle' => $libelle,
'prixHT' => $prixHT,
'qte' => $qte,
];
// 1. Vérifier que la longueur de $ligne soit supérieure à 1
// 2. Vérifier que $ligne["libelle"] soit de type STRING, longueur supérieure à 0 (ou 3 ou plus pour des STRING)
// 3. Vérifier que $ligne["prixHT"] soit de type FLOAT, positif, supérieur à 0
// 4. Vérifier que $ligne["qte"] soit de type INT, positif, supérieur à 0
}
public function totalHT(): float
{
$total = 0;
foreach ($this->lignes as $l) {
// 5. Vérifier qu'un $prixHT à 100 et $qte à 1 multipliés fassent 100
// 6. Vérifier qu'un $prixHT à 150 et $qte à 3 multipliés fassent 450
$total += $l['prixHT'] * $l['qte'];
}
// 7. Vérifier que $total soit supérieur à 0
return $total;
}
}
```
## Tests PHPUnit
Ces tests couvrent les 7 vérifications indiquées par les commentaires du code ci-dessus. Générés par Claude Sonnet 5.
```php
<?php
use PHPUnit\Framework\TestCase;
class FactureTest extends TestCase
{
// 1. Vérifier que la longueur de $ligne soit supérieure à 1
public function testLigneAPlusieursElements(): void
{
$facture = new Facture();
$facture->ajouterLigne('Prestation', 100.0, 1);
$reflection = new ReflectionProperty(Facture::class, 'lignes');
$reflection->setAccessible(true);
$ligne = $reflection->getValue($facture)[0];
$this->assertGreaterThan(1, count($ligne));
}
// 2. Vérifier que $ligne["libelle"] soit de type STRING, longueur >= 3
public function testLibelleEstUneChaineValide(): void
{
$facture = new Facture();
$facture->ajouterLigne('Abc', 100.0, 1);
$reflection = new ReflectionProperty(Facture::class, 'lignes');
$reflection->setAccessible(true);
$ligne = $reflection->getValue($facture)[0];
$this->assertIsString($ligne['libelle']);
$this->assertGreaterThanOrEqual(3, strlen($ligne['libelle']));
}
public function testLibelleTropCourtEstInvalide(): void
{
$facture = new Facture();
$facture->ajouterLigne('Ab', 100.0, 1);
$reflection = new ReflectionProperty(Facture::class, 'lignes');
$reflection->setAccessible(true);
$ligne = $reflection->getValue($facture)[0];
$this->assertLessThan(3, strlen($ligne['libelle']));
}
// 3. Vérifier que $ligne["prixHT"] soit de type FLOAT, positif, > 0
public function testPrixHTEstUnFloatPositif(): void
{
$facture = new Facture();
$facture->ajouterLigne('Prestation', 99.99, 1);
$reflection = new ReflectionProperty(Facture::class, 'lignes');
$reflection->setAccessible(true);
$ligne = $reflection->getValue($facture)[0];
$this->assertIsFloat($ligne['prixHT']);
$this->assertGreaterThan(0, $ligne['prixHT']);
}
// 4. Vérifier que $ligne["qte"] soit de type INT, entier positif, > 0
public function testQteEstUnIntPositif(): void
{
$facture = new Facture();
$facture->ajouterLigne('Prestation', 100.0, 5);
$reflection = new ReflectionProperty(Facture::class, 'lignes');
$reflection->setAccessible(true);
$ligne = $reflection->getValue($facture)[0];
$this->assertIsInt($ligne['qte']);
$this->assertGreaterThan(0, $ligne['qte']);
}
// 5. Vérifier qu'un prixHT à 100 et qte à 1 multipliés fassent 100
public function testTotalHTAvecUneLigneSimple(): void
{
$facture = new Facture();
$facture->ajouterLigne('Prestation', 100.0, 1);
$this->assertEqualsWithDelta(100.0, $facture->totalHT(), 0.0001);
}
// 6. Vérifier qu'un prixHT à 150 et qte à 3 multipliés fassent 450
public function testTotalHTAvecUneLigneMultiple(): void
{
$facture = new Facture();
$facture->ajouterLigne('Prestation', 150.0, 3);
$this->assertEqualsWithDelta(450.0, $facture->totalHT(), 0.0001);
}
// 7. Vérifier que $total soit supérieur à 0
public function testTotalHTEstSuperieurAZero(): void
{
$facture = new Facture();
$facture->ajouterLigne('Prestation', 100.0, 1);
$facture->ajouterLigne('Autre prestation', 150.0, 3);
$this->assertGreaterThan(0, $facture->totalHT());
}
}
```