Junior
Come testare correttamente il campo di inserimento dell'indirizzo email?
sobes.tech AI
Risposta dell'AI
La convalida del campo email include il controllo di funzionalità, validazione, usabilità e sicurezza.
Test funzionali:
- Inserimento di indirizzi validi:
test@example.comfirstname.lastname@example.comemail@subdomain.example.comfirstname+lastname@example.comemail@example.co.ukemail@example.museumemail@example.nameemail@example.демо(per supportare nomi di dominio internazionalizzati - IDN)
- Inserimento di indirizzi non validi:
- Mancanza di
@:testexample.com - Múltipli
@:test@@example.com - Formato di dominio errato:
test@example - Mancanza di nome utente:
@example.com - Caratteri speciali nel nome utente:
te!st@example.com,te#st@example.com - Caratteri speciali nel dominio:
test@exa!mple.com - Indirizzo lungo (controllo dei limiti):
a_very_long_email_address_that_exceeds_typical_limits@example.com(verificare i limiti secondo specifica o buon senso) - Indirizzo con spazi:
test @example.com - Indirizzo con sintassi incorretta:
test@.com,test.@example.com - Indirizzo con indirizzo IP invece del dominio (se non supportato):
test@[192.168.1.1] - Indirizzo con caratteri cirillici (se non supportato IDN):
тест@пример.рф
- Mancanza di
- Campo vuoto: Invio del modulo con campo vuoto.
Validazione:
- Verifica che i dati inseriti rispettino la sintassi email (espressioni regolari).
- Visualizzazione di messaggi di errore all'utente in caso di dati non validi.
- Verifica della precisione e chiarezza dei messaggi di errore.
- Assicurarsi che il modulo non venga inviato in presenza di errori di validazione.
Usabilità & UI/UX:
- Focus sul campo al caricamento della pagina (se pertinente).
- Testo di placeholder con esempio di formato (
ad esempio, user@example.com). - Supporto all'autocompletamento del browser.
- Presenza di un'etichetta (
<label>) per il campo. - L'utente non può inserire caratteri non validi (se presente tale logica nel frontend).
- Se presente una maschera di input, verificarne il funzionamento.
Sicurezza:
- Verifica di vulnerabilità XSS: inserimento di script, tag HTML (
<script>alert('XSS')</script>) nel campo. - Verifica di injection (SQL/NoSQL): inserimento di caratteri specifici che possano influenzare le query al database (
' OR '1'='1). - Limitazione del rate (se il modulo invia email o compie azioni che richiedono risorse): verificare il limite di tentativi di invio da un IP o utente.
Automazione:
- Scrittura di test unitari per le funzioni di validazione email.
- Scrittura di test di integrazione per verificare il funzionamento del campo nel contesto del modulo.
- Scrittura di test E2E per verificare lo scenario completo di utilizzo del modulo con il campo email.
Esempio di codice per test unitario di validazione:
// Supponiamo di avere la funzione validateEmail
function validateEmail(email) {
const re = /\S+@\S+\.\S+/; // Esempio semplice di regex
return re.test(email);
}
// Test unitari con Jest
describe('validateEmail', () => {
test('dovrebbe restituire true per una email valida', () => {
expect(validateEmail('test@example.com')).toBe(true);
expect(validateEmail('firstname.lastname@example.com')).toBe(true);
});
test('dovrebbe restituire false per una email non valida', () => {
expect(validateEmail('testexample.com')).toBe(false);
expect(validateEmail('test@example')).toBe(false);
expect(validateEmail('@example.com')).toBe(false);
});
test('dovrebbe restituire false per una stringa vuota', () => {
expect(validateEmail('')).toBe(false);
});
});
Esempio di test E2E con Cypress:
// cypress/integration/email_field.spec.js
describe('Campo email', () => {
it('valida correttamente e mostra erro per input non valido', () => {
cy.visit('/pagina-form'); // URL della pagina con il modulo
cy.get('#email-input').type('email-invalido'); // Inserimento email non valida
cy.get('button[type="submit"]').click(); // Clic sul pulsante di invio
cy.get('.error-message').should('be.visible').and('contain', 'Formato email non valido'); // Verifica messaggio di errore
});
it('consente di inviare il modulo con email valida', () => {
cy.visit('/pagina-form');
cy.get('#email-input').type('valido@example.com');
cy.get('button[type="submit"]').click();
// Verifiche aggiuntive: redirect, messaggio di successo, ecc.
cy.url().should('include', '/successo'); // Verifica URL dopo invio
});
});
Tabella dei casi di test:
| ID | Azione utente | Risultato atteso |
|---|---|---|
| TC_01 | Inserire test@example.com |
Il campo è considerato valido. Il modulo viene inviato (se tutti i campi sono compilati). |
| TC_02 | Inserire email-invalido |
Il campo è considerato non valido. Viene mostrato un messaggio di errore. |
| TC_03 | Lasciare il campo vuoto e tentare di inviare | Il campo è considerato non valido (se obbligatorio). Viene mostrato un messaggio di errore. |
| TC_04 | Inserire test@example.co.uk |
Il campo è considerato valido. |
| TC_05 | Inserire <script>alert('XSS')</script> |
Lo script non deve essere eseguito. Il campo deve essere sanificato o validato. |
È inoltre necessario considerare i requisiti specifici del progetto (ad esempio, supporto per determinati domini, sensibilità al maiuscolo/minuscolo), test su diversi dispositivi e browser.