Junior
Jak správně otestovat pole pro zadání e-mailové adresy?
sobes.tech AI
Odpověď od AI
Testování pole pro zadání emailu zahrnuje kontrolu funkčnosti, validace, uživatelské přívětivosti a bezpečnosti.
Funkční testování:
- Vkládání platných adres:
test@example.comfirstname.lastname@example.comemail@subdomain.example.comfirstname+lastname@example.comemail@example.co.ukemail@example.museumemail@example.nameemail@example.демо(podpora IDN)
- Vkládání neplatných adres:
- Chybějící
@:testexample.com - Více
@:test@@example.com - Nesprávný formát domény:
test@example - Chybějící uživatelské jméno:
@example.com - Speciální znaky v uživatelském jménu:
te!st@example.com,te#st@example.com - Speciální znaky v doméně:
test@exa!mple.com - Dlouhá adresa (kontrola limitů):
a_very_long_email_address_that_exceeds_typical_limits@example.com - Adresa s mezerami:
test @example.com - Nesprávná syntaxe adresy:
test@.com,test.@example.com - Adresa s IP místo domény (pokud není podporováno):
test@[192.168.1.1] - S cyrilicí (pokud není podporováno IDN):
тест@пример.рф
- Chybějící
- Prázdné pole: odeslání formuláře s prázdným polem.
Validace:
- Kontrola shody zadaných dat se syntaxí emailu (regulární výrazy).
- Zobrazení chybových hlášení uživateli při zadání neplatných dat.
- Kontrola přesnosti a srozumitelnosti chybových hlášení.
- Kontrola, že formulář se neodesílá při chybách validace.
Použitelnost & UI/UX:
- Zaměření na pole při načtení stránky (pokud je vhodné).
- Placeholder text s příkladem formátu (
například, user@example.com). - Podpora automatického doplňování prohlížečem.
- Přítomnost štítku (
<label>) pro pole. - Uživatel nemůže zadat nepovolené znaky (pokud je taková logika na frontendu).
- Pokud je vstupní maska, ověřit její funkčnost.
Bezpečnost:
- Kontrola na XSS zranitelnosti: vkládání skriptů, HTML tagů (
<script>alert('XSS')</script>) do pole. - Kontrola na injekce (SQL/NoSQL): vkládání speciálních znaků, které mohou ovlivnit dotazy do databáze (
' OR '1'='1). - Omezení počtu pokusů (pokud formulář odesílá email nebo provádí náročné operace): omezení počtu pokusů z jedné IP nebo uživatele.
Automatizace:
- Psání jednotkových testů pro validační funkce emailu.
- Psání integračních testů pro kontrolu funkčnosti pole v rámci formuláře.
- Psání E2E testů pro kompletní scénář použití formuláře s polem email.
Příklad kódu pro jednotkový test validace:
// Předpokládáme, že máme funkci validateEmail
function validateEmail(email) {
const re = /\S+@\S+\.\S+/; // Jednoduchý příklad regulárního výrazu
return re.test(email);
}
// Jednotkové testy s použitím Jest
describe('validateEmail', () => {
test('vrátí true pro platný email', () => {
expect(validateEmail('test@example.com')).toBe(true);
expect(validateEmail('firstname.lastname@example.com')).toBe(true);
});
test('vrátí false pro neplatný email', () => {
expect(validateEmail('testexample.com')).toBe(false);
expect(validateEmail('test@example')).toBe(false);
expect(validateEmail('@example.com')).toBe(false);
});
test('vrátí false pro prázdný řetězec', () => {
expect(validateEmail('')).toBe(false);
});
});
Příklad E2E testu s použitím Cypress:
// cypress/integration/email_field.spec.js
describe('Email Input Field', () => {
it('správně validuje a zobrazuje chybu pro neplatný vstup', () => {
cy.visit('/your-form-page'); // URL stránky s formulářem
cy.get('#email-input').type('invalid-email'); // Zadání neplatného emailu
cy.get('button[type="submit"]').click(); // Kliknutí na tlačítko odeslání
cy.get('.error-message').should('be.visible').and('contain', 'Neplatný formát emailu'); // Kontrola chybové zprávy
});
it('umožňuje odeslání formuláře s platným emailem', () => {
cy.visit('/your-form-page');
cy.get('#email-input').type('valid@example.com');
cy.get('button[type="submit"]').click();
// Další kontroly: například přesměrování, zpráva o úspěchu
cy.url().should('include', '/success'); // Kontrola URL po úspěšném odeslání
});
});
Tabulka s příklady testovacích případů:
| ID | Akce uživatele | Očekávaný výsledek |
|---|---|---|
| TC_01 | Zadání test@example.com |
Pole je považováno za platné. Formulář lze odeslat (pokud jsou vyplněna i ostatní pole). |
| TC_02 | Zadání invalid-email |
Pole je považováno za neplatné. Zobrazí se chybová zpráva. |
| TC_03 | Odeslání formuláře s prázdným polem | Pole je považováno za neplatné (pokud je povinné). Zobrazí se chybová zpráva. |
| TC_04 | Zadání test@example.co.uk |
Pole je považováno za platné. |
| TC_05 | Zadání <script>alert('XSS')</script> |
Skript nesmí být spuštěn. Pole by mělo být sanitizováno nebo validováno. |
Je třeba také vzít v úvahu specifické požadavky projektu (například podpora určitých doménových zón, citlivost na velikost písmen), testování na různých zařízeních a prohlížečích.