Testing Flashcards
In cosa consiste il testing?
Consiste nell’eseguire il programma utilizzando dati che simulano input
Quando il testing si dice fallito e quando superato?
Comportamento aspettato -> test superato
Comportamento inatteso -> test fallito
Quali sono le tipologie di testing?
Funzionale
Testare funzioni in un sistema per trovare bug
User Testing
Alfa prima versione di testing
Beta libera agli users per verificare usabilità
Performance e test di carico
Verifica differenti livelli di carico come vengono gestiti dal sistema
Security testing
Ricerca di vulnerabilità da usare a proprio vantaggio
Cos’è testing funzionale
Tanti test da eseguire almeno una volta per accertarci che funzionalità ben implementata
Unit testing -> feature testing -> system testing -> release testing
Come scegliere casi di test per unit testing?
Troviamo partizioni equivalenti
Test dei Casi limite
Forzare errori
Riempire buffers
Ripeti lo stesso test più volte
Overflow e underflow, come ad esempio null pointers
Mantieni conteggio di elementi
Test con un solo valore
Quando feature si dice funzionante
La funzionalità deve essere implementata as expected
Deve portare al raggiungimento degli obbiettivi utente
Come testare features?
Test di interazione, tra procedure sviluppate da teams differenti
Test dell’utilità delle features
Si parte da user stories e scenarios
System testing come funziona
Test del sistema completo
Scoprire interazioni inaspettate non volute
Scoprire se features lavorano bene insieme
Assicurarsi che il sistema operi come ci si aspetta
Test responsivitá, sicurezza e altri attributi qualitativi
Test di release
Utili per testare se sistema é pronto al rilascio, si testa il sistema nell’env reale
Percentuali di test presenti
System 10 percento
Features 20 percento
Unit 70 percento
Surrogate user test
Riproduciamo serie di operazioni che effettuerebbe user
Fasi del test driven dev
Partiamo dai test, quando troviamo feature
Creiamo stab code che fallisce
Run tests automatici
Implementiamo finché test non superati
Refactor/controllo feature
Pro test driven dev
Ogni sezione viene testata
Aiutano nella lettura del codice
Codice più semplice
Cons test driven dev
Difficolta di TDD
Scoraggia grandi cambiamenti
Più focus su test che su problemi
Scopo Test di sicurezza
Trovare vulnerabilità oppure convincere sicurezza sistema
Limiti test di sicurezza
Trovare vulnerabilità difficile
Alcune vulnerabilità potrebbero dipendere dalle scelte tecnologiche
Approccio per security testing
Identifica rischi principali da testare
Sviluppa test per dimostrare che il prodotto si protegge da questi rischi
Come ragionare quando creiamo test di sicurezza?
Quando creiamo test sicurezza bisogna ragionare come attacker, facciamo cose errate, ripetiamo azioni
Limiti del testing
Codice di testing influenzato dal nostro understanding dello scopo del codice
Testing potrebbe non avere codice per tutto il codice
Non sappiamo col testing leggibilità, possibili evoluzioni del codice, struttura
Code review
Si possono attivare in automatico quando effettuiamo lavori su shared code
200/400 righe analizzate
Chapters cosa sono
Team members che lavorano in area speciale
Guild
membri organizzazione che hanno shared interest
Code reviews effettuate da
Chapters o guild effettuano code review
Automatizzazione dei test
Largamente utilizzata
Permette di testare tutto il programma con eseguibili dei test che confrontano il risultato reale con quello atteso
Come evitare bug nei test
Per eliminarli rendiamoli più semplici possibile, rivedi il codice da testare
Come organizzare i test
Arrange che set up I parametri
Action che chiama le varie azioni
Assert finale che controlla che output sia corretto
Cosa possiamo utilizzare per testare load di applicativo?
Utilizziamo locust che permette di testare un’applicazione mettendola sotto sforzo, importante utilizzare file locust.py per identificare path dell’applicativo