netgescon-master/docs/logs/logs-laravel/TEST_PLAN.md
Pikappa2 480e7eafbd 🎯 NETGESCON - Setup iniziale repository completo
📋 Commit iniziale con:
-  Documentazione unificata in docs/
-  Codice Laravel in netgescon-laravel/
-  Script automazione in scripts/
-  Configurazione sync rsync
-  Struttura organizzata e pulita

🔄 Versione: 2025.07.19-1644
🎯 Sistema pronto per Git distribuito
2025-07-19 16:44:47 +02:00

14 KiB
Raw Permalink Blame History

🧪 PIANO TEST - NetGesCon Laravel

📅 Creato: 9 Luglio 2025 - AGGIORNATO con scoperta test esistenti
🎯 Scopo: Piano completo testing sistema
👥 Team: Michele + AI Assistant
📊 Target Coverage: >70%

🚨 SCOPERTA CRITICA - Test già presenti nel sistema!

TEST GIÀ IMPLEMENTATI: 37 test cases nel framework Pest/PHPUnit
🐛 PROBLEMA BLOCCANTE: Conflitti database migrations in test environment
📊 STATO: 35 failed, 2 passed - tutti falliscono per conflitti SQLite
⚠️ ERRORE: table "amministratori" already exists

🔍 Test Esistenti Scoperti

  • Feature Tests: Auth completo, Profile, RipartizioneSpesa, VoceSpesa, PianoRateizzazione
  • Unit Tests: RataTest, RipartizioneSpesaServiceTest, PianoRateizzazioneTest
  • Test Environment: Configurazione SQLite in-memory corretta in phpunit.xml
  • Framework: Pest + PHPUnit con RefreshDatabase trait

🛠️ PIANO CORREZIONE IMMEDIATA

  1. Analizzare migrations conflicts
  2. 🔧 Fixare test database setup
  3. 🧪 Ripristinare test suite funzionante
  4. 📊 Verificare coverage esistente
  5. 🚀 Estendere test mancanti

🎯 OBIETTIVI TESTING

🚀 Obiettivi Primari

  • Affidabilità: Zero bug critici in produzione
  • Sicurezza: Protezione multi-ruolo garantita
  • Performance: Tempi risposta <2 secondi
  • Usabilità: Interfaccia intuitiva per tutti i ruoli

📊 Metriche Target

  • Unit Test Coverage: >80%
  • Feature Test Coverage: >70%
  • Manual Test Coverage: 100% funzionalità critiche
  • Bug Detection Rate: >90% pre-produzione

🏗️ STRATEGIA TESTING

📋 Piramide Test

                🔺 E2E Tests
              🔺🔺🔺 Integration Tests  
            🔺🔺🔺🔺🔺 Feature Tests
          🔺🔺🔺🔺🔺🔺🔺 Unit Tests

🎪 Ambienti Test

  1. Local Development - Test sviluppatore
  2. CI/CD Pipeline - Test automatici GitHub
  3. Staging - Test pre-produzione
  4. Production - Monitor e test post-deploy

🧪 TIPI DI TEST

1 UNIT TESTS (Foundation)

🧮 Modelli e Business Logic

// File: tests/Unit/Models/
- StabileTest.php          # Test model Stabile
- UnitaTest.php            # Test model Unità
- SoggettoTest.php         # Test model Soggetto
- GestioneTest.php         # Test model Gestione
- ContrattoTest.php        # Test model Contratto

// Test: Relazioni, validazioni, accessors/mutators
public function test_stabile_has_many_unita()
public function test_calcolo_millesimi_distribuzione()
public function test_validazione_codice_fiscale()

💰 Services Contabili [CRITICO]

// File: tests/Unit/Services/
- ContabilitaServiceTest.php   # Calcoli contabili
- MillesimiServiceTest.php     # Ripartizioni millesimi
- FatturazioneServiceTest.php  # Gestione fatture

// Test: Precisione calcoli, arrotondamenti, quadrature
public function test_ripartizione_senza_resto()
public function test_arrotondamento_millesimi_corretto()
public function test_bilancio_sempre_quadrato()

🔐 Autenticazione e Autorizzazioni

// File: tests/Unit/Auth/
- RolePermissionTest.php   # Test ruoli e permessi
- UserAccessTest.php       # Test accesso utenti
- SwitchUserTest.php       # Test cambio utente

// Test: Permessi granulari, sicurezza multi-ruolo
public function test_admin_can_access_all_stabili()
public function test_condomino_sees_only_own_data()

2 FEATURE TESTS (Integration)

🎨 Interfaccia CRUD

// File: tests/Feature/Admin/
- StabileControllerTest.php    # CRUD Stabili
- UnitaControllerTest.php      # CRUD Unità  
- SoggettoControllerTest.php   # CRUD Soggetti
- GestioneControllerTest.php   # CRUD Gestioni

// Test: HTTP responses, form validation, database persistence
public function test_admin_can_create_stabile()
public function test_stabile_validation_rules()
public function test_unauthorized_access_blocked()

🔗 Menu e Navigazione

// File: tests/Feature/Navigation/
- MenuNavigationTest.php       # Test tutti i link menu
- ResponsiveLayoutTest.php     # Test layout responsive
- BreadcrumbTest.php          # Test breadcrumb navigation

// Test: Link funzionanti, pagine accessibili, UI responsive
public function test_all_menu_links_reachable()
public function test_mobile_navigation_works()

📊 API Endpoints (Quando implementate)

// File: tests/Feature/Api/
- AuthApiTest.php             # API autenticazione
- StabileApiTest.php          # API gestione stabili
- ContabilitaApiTest.php      # API dati contabili

// Test: JSON responses, authentication, rate limiting
public function test_api_requires_authentication()
public function test_api_returns_correct_json_structure()

3 INTEGRATION TESTS (End-to-End)

🔄 Workflow Completi

// File: tests/Integration/
- CondominioWorkflowTest.php  # Flusso gestione condominio
- FatturazioneWorkflowTest.php # Flusso fatturazione completo
- ComunicazioneWorkflowTest.php # Flusso comunicazioni

// Test: Flussi business completi, integrazione componenti
public function test_complete_condominio_setup()
public function test_fatturazione_end_to_end()

4 E2E TESTS (Browser)

🌐 Test Browser (Laravel Dusk)

// File: tests/Browser/
- AdminDashboardTest.php      # Test dashboard completa
- CrudWorkflowTest.php        # Test CRUD browser
- MobileResponsiveTest.php    # Test mobile real browser

// Test: User interactions, JavaScript, real browser behavior
public function test_admin_login_and_navigate()
public function test_mobile_menu_interaction()

📋 TEST CASES SPECIFICI

💰 Testing Contabilità [MASSIMA PRIORITÀ]

🧮 Calcoli Precisione

// Test arrotondamenti millesimi
public function test_millesimi_no_resto_perduto()
{
    // 1000€ / 3 proprietari
    // Expected: 333.34€ + 333.33€ + 333.33€ = 1000.00€
    // NOT: 333.33€ * 3 = 999.99€ ❌
}

public function test_distribuzione_resto_progressiva()
{
    // Resto distribuito ai primi N soggetti
    // Sempre bilancio quadrato al centesimo
}

public function test_calcoli_rate_condominiali()
{
    // Calcolo rate basato su millesimi
    // Verifica totale = budget previsto
}

📊 Quadrature Bilanci

public function test_bilancio_sempre_quadrato()
{
    // Entrate - Uscite = Residuo
    // Precisione decimale garantita
}

public function test_ripartizione_spese_corretta()
{
    // Spese comuni + spese private = totale
    // Distribuzione per millesimi corretta
}

🔐 Testing Sicurezza Multi-Ruolo

👤 Separazione Ruoli

public function test_admin_full_access()
{
    // Amministratore: accesso a tutti gli stabili
}

public function test_condomino_limited_access()
{
    // Condomino: solo proprio stabile e unità
}

public function test_fornitore_invoice_only()
{
    // Fornitore: solo fatture proprie
}

public function test_switch_user_functionality()
{
    // Test cambio utente per debug multi-ruolo
}

🔗 Testing Menu e UI

🗺️ Navigazione Completa

public function test_all_menu_items_accessible()
{
    // Verifica ogni link in lang/it/menu.php
    // Status 200 per pagine autorizzate
    // Redirect login per pagine non autorizzate
}

public function test_responsive_design()
{
    // Breakpoints: 320px, 768px, 1024px, 1440px
    // Menu hamburger su mobile
    // Tables scrollable su mobile
}

🚀 ESECUZIONE TEST

💻 Comandi Base

# Test completi
php artisan test

# Test specifici per categoria
php artisan test --testsuite=Unit
php artisan test --testsuite=Feature
php artisan test --group=contabilita
php artisan test --group=security

# Test con coverage
php artisan test --coverage
php artisan test --coverage-html coverage-report

# Test specifici file
php artisan test tests/Unit/Services/ContabilitaServiceTest.php
php artisan test --filter test_calcolo_millesimi

🔄 CI/CD Pipeline

# .github/workflows/tests.yml
name: Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.1'
      - name: Install dependencies
        run: composer install
      - name: Run tests
        run: php artisan test --coverage
      - name: Upload coverage
        uses: codecov/codecov-action@v3

📊 COVERAGE E METRICHE

🎯 Target Coverage

Overall Coverage:      >70%
Models:               >90%
Controllers:          >80%  
Services:             >95% (contabilità)
Middleware:           >85%
Form Requests:        >90%

📈 Tracking Progress

# Generazione report coverage
php artisan test --coverage-html public/coverage

# Accesso report: http://localhost:8000/coverage
# Monitoring: Uptime, performance, error rate

🧪 TEST MANUALI

Checklist Test Manuale

🎨 UI/UX Testing

  • Login/Logout - Funzionalità base
  • Menu Navigation - Tutti i link funzionanti
  • Form Validation - Messaggi errore chiari
  • CRUD Operations - Create/Read/Update/Delete
  • Responsive Design - Mobile/tablet/desktop
  • Performance - Tempi caricamento <2s

🔐 Security Testing

  • Role Permissions - Accesso corretto per ruolo
  • Data Isolation - Utenti vedono solo propri dati
  • CSRF Protection - Token presenti su form
  • XSS Prevention - Input/output sanitized
  • SQL Injection - Prepared statements used

💰 Business Logic Testing

  • Calcoli Contabili - Precisione e quadrature
  • Ripartizioni - Millesimi distribuiti correttamente
  • Fatturazione - Importi e tasse corrette
  • Comunicazioni - Email/SMS funzionanti

📱 Test Dispositivi

Desktop:    Chrome, Firefox, Safari, Edge
Mobile:     iOS Safari, Android Chrome
Tablet:     iPad, Android tablet

📊 TEST DATA E FIXTURES

🗃️ Database Test

// File: database/factories/
- StabileFactory.php      # Factory dati stabili
- UnitaFactory.php        # Factory dati unità
- SoggettoFactory.php     # Factory dati soggetti

// File: database/seeders/test/
- TestContabilitaSeeder.php   # Dati test contabilità
- TestScenarioSeeder.php      # Scenari test complessi

📊 Scenari Test

// Scenario 1: Piccolo condominio
- 1 stabile, 8 unità, 12 soggetti
- Budget annuale: 20.000
- Test: Calcoli base

// Scenario 2: Condominio complesso  
- 3 stabili, 45 unità, 60 soggetti
- Budget annuale: 150.000
- Test: Performance, calcoli complessi

// Scenario 3: Edge cases
- Unità con millesimi 0
- Soggetti con quote multiple
- Test: Gestione eccezioni

🚨 GESTIONE ERRORI E BUG

🐛 Bug Tracking

Priorità 1 (CRITICO):   Calcoli sbagliati, data loss, security
Priorità 2 (ALTO):      UI broken, performance issues  
Priorità 3 (MEDIO):     Minor UI glitches, usability
Priorità 4 (BASSO):     Enhancement, nice-to-have

📊 Issue Template

## Bug Report
**Priorità**: [1-4]
**Ambiente**: [dev/staging/prod]
**Browser**: [Chrome/Firefox/Safari/Mobile]
**Utente**: [admin/condomino/fornitore]

**Descrizione**:
Cosa è successo vs cosa ci si aspettava

**Passi per riprodurre**:
1. Step 1
2. Step 2  
3. Step 3

**Screenshot/Log**:
[Allegare se possibile]

📅 CRONOGRAMA TESTING

📋 Settimana 1 (Corrente)

  • Setup base PHPUnit
  • Primi test models
  • Test contabilità base
  • Test menu navigation

📋 Settimana 2

  • Test controllers CRUD
  • Test authorization
  • Test responsive design
  • Setup CI/CD pipeline

📋 Settimana 3

  • Integration tests
  • Performance testing
  • Security testing
  • Browser testing (Dusk)

📋 Settimana 4

  • User acceptance testing
  • Load testing
  • Documentation test coverage
  • Production deploy testing

📞 TOOLS E RISORSE

🔧 Testing Tools

  • PHPUnit: Unit e Feature tests
  • Laravel Dusk: Browser testing
  • Pest: Alternativa a PHPUnit (opzionale)
  • Faker: Generazione dati fake
  • Mockery: Mocking objects

📊 Coverage Tools

  • Xdebug: Code coverage PHP
  • Codecov: Coverage tracking online
  • PHPStorm Coverage: IDE integration

🌐 Frontend Testing

  • Laravel Mix: Asset compilation
  • Jest: JavaScript unit tests
  • Cypress: E2E frontend testing

🎯 PROSSIMI PASSI

🚀 Immediato (Oggi)

  1. Setup PHPUnit configurazione base
  2. 🧮 Creare test contabilità critici
  3. 🔗 Test navigation menu principale
  4. 📊 Documentare risultati primi test

📅 Questa Settimana

  1. 🎨 Test CRUD controllers base
  2. 🔐 Test sistema autorizzazioni
  3. 📱 Test responsive layout
  4. 🤖 Setup automazione CI/CD

🔄 Aggiornare piano test settimanalmente
📊 Review coverage ogni milestone
🎯 Focus qualità prima di quantità