# Tests
Tests sind essentieller Bestandteil der Entwicklung.
Weil die meisten Tests repetitiv sind, bietet es sich an, Tests zu automatisieren.
PHP bzw. Laravel bringt einige Möglichkeiten zum automatisierten Test mit sich.
# Stand der Tests bei PM
Der aktuelle Stand (1.9.2024) unserer Testsuits:
- DuskTests (E2E)
- PestTests (Unit/View/Feature/Integration)
# Testübersicht

Wir setzten die vier Stufen mit folgender Software um:
- Static Test
- Unit Test
- Integration Test
- End-to-End Test
- Browsertesting bzw. Laravel Dusk (opens new window)
Zusätzlich werden noch weitere Dinge getestet:
- Feature Test, damit größere Features getestet werden können
- Pest (opens new window) - ähnlich der Unit Tests
- Security Test, damit Schwachstellen im System früh erkannt werden
- Security Checker (opens new window) - für Composer Packages
- PHPCD (opens new window) - CPD für PHP
- NPM audit (opens new window) - für NPM Dependencies (realisiert durch das Package gitlab-npm-audit-parser (opens new window))
- Performance Test
- Browser Performance Testing (opens new window) - für die Seitenladegeschwindigkeit (realisiert durch die Sitespeed.io (opens new window) Integration mit Gitlab CI/CD)
- Syntax Test, damit der hinzugefügt Code (von verschiedenen Personen) den selben Style hat
- EsLint (opens new window) - für Javascript (
.js) - PHPCSFixer (opens new window) - für PHP (
.php)
- EsLint (opens new window) - für Javascript (
# Test-Coverage
Die sogenannte Testcoverage bildet ab, wie groß der Anteil der Codebasis ist, die getestet wird.
Aktuell (Nova ausgenommen) haben wir folgende Werte:
art test --coverage(TestCoverage)art test --type-coverage(TypeCoverage)
# parallele Pest Tests
Seit PestPHP Version 2 kann man die Test parallel ausführen lassen (mit der Flag --parallel).
Dies funktioniert leider noch nicht im CI-Job.
# langsame Pest Tests
Durch Pest Version 2 ist eine --profile-option bei Pest (opens new window) verfügbar.
Hier sind die top 5 langsamsten Pest Tests:

# weiterführende Links
*2.7.1 Static Test
*2.7.2 View Test
*2.7.3 Unit Test
*2.7.4 Feature Test
*2.7.5 Integration Test
*2.7.6 End_to_End Test
*2.7.7 Security Test
*2.7.8 Performance Test
*2.7.9 Syntax Test