Junior
Elektron poçt ünvanı daxil etmə sahəsini düzgün şəkildə necə test etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Email sahəsi daxil edilərkən funksionallıq, təsdiqləmə, istifadə rahatlığı və təhlükəsizlik yoxlanılır.
Funksional test:
- Düzgün ünvanların daxil edilməsi:
test@example.comfirstname.lastname@example.comemail@subdomain.example.comfirstname+lastname@example.comemail@example.co.ukemail@example.museumemail@example.nameemail@example.демо(beynəlxalq domen adlarının dəstəyi üçün - IDN)
- Yanlış ünvanların daxil edilməsi:
@olmadan:testexample.com- Bir neçə
@:test@@example.com - Yanlış domen formatı:
test@example - İstifadəçi adı olmadan:
@example.com - İstifadəçi adında xüsusi simvollar:
te!st@example.com,te#st@example.com - Domenində xüsusi simvollar:
test@exa!mple.com - Uzun ünvan (limiti yoxlama):
a_very_long_email_address_that_exceeds_typical_limits@example.com(spesifikasiya və ya məntiqə uyğun limiti yoxlayın) - Boşluqlu ünvan:
test @example.com - Yanlış sintaksisli ünvan:
test@.com,test.@example.com - IP ünvanı ilə ünvan (əgər dəstəklənmirsə):
test@[192.168.1.1] - Kiril hərfləri ilə ünvan (əgər IDN dəstəklənmirsə):
тест@пример.рф
- Boş sahə: Formanın boş sahə ilə göndərilməsi.
Təsdiqləmə:
- Giriş məlumatlarının email sintaksisinə uyğunluğunun yoxlanması (regulyar ifadələr).
- Yanlış məlumat daxil ediləndə istifadəçiyə səhv mesajlarının göstərilməsi.
- Səhv mesajlarının dəqiqliyi və aydınlığı.
- Validasiya səhvləri olduqda, formanın göndərilməməsi.
İstifadə rahatlığı və UI/UX:
- Səhifə yüklənəndə sahəyə fokuslanma (əgər uyğundursa).
- Nümunə formatlı placeholder mətni (
məsələn, user@example.com). - Brauzer autofill dəstəyinin olması.
- Sahə üçün
<label>etiketi. - İstifadəçi icazə verilən olmayan simvolları daxil edə bilməməlidir (əgər frontenddə belə məntiq varsa).
- Əgər giriş maskası varsa, onun işləməsini yoxlayın.
Təhlükəsizlik:
- XSS-ə qarşı zəifliklərin yoxlanması: skriptlər, HTML-teqlər (
<script>alert('XSS')</script>) daxil ediləndə. - SQL/NoSQL inyeksiyalarının yoxlanması: xüsusi simvolların daxil edilməsi, bunlar sorğuları təsir edə bilər (
' OR '1'='1). - Rate limiting (əgər forma email göndərirsə və ya resurs tələb edən əməliyyatlar edirsə): IP və ya istifadəçidən göndərmə cəhdlərinin sayını məhdudlaşdırmaq.
Avtomatlaşdırma:
- Email validasiya funksiyaları üçün vahid testlərin yazılması.
- Formanın kontekstində sahənin işləməsini yoxlamaq üçün inteqrasiya testlərinin yazılması.
- Formanın tam istifadə ssenarisini yoxlamaq üçün E2E testlərinin yazılması.
Validasiya üçün nümunə kod:
// validateEmail funksiyasını qəbul edək
function validateEmail(email) {
const re = /\S+@\S+\.\S+/; // Sadə regex nümunəsi
return re.test(email);
}
// Jest ilə vahid testlər
describe('validateEmail', () => {
test('doğru email üçün true qaytarmalıdır', () => {
expect(validateEmail('test@example.com')).toBe(true);
expect(validateEmail('firstname.lastname@example.com')).toBe(true);
});
test('yanlış email üçün false qaytarmalıdır', () => {
expect(validateEmail('testexample.com')).toBe(false);
expect(validateEmail('test@example')).toBe(false);
expect(validateEmail('@example.com')).toBe(false);
});
test('boş string üçün false', () => {
expect(validateEmail('')).toBe(false);
});
});
E2E test nümunəsi Cypress ilə:
// cypress/integration/email_field.spec.js
describe('Email giriş sahəsi', () => {
it('yanlış giriş üçün düzgün validasiya və xəta mesajı göstərir', () => {
cy.visit('/your-form-page'); // Formanın səhifə URL-i
cy.get('#email-input').type('səhv'); // Yanlış email daxil et
cy.get('button[type="submit"]').click(); // Göndər düyməsini kliklə
cy.get('.error-message').should('be.visible').and('contain', 'Yanlış email formatı'); // Xəta mesajını yoxla
});
it('doğru email ilə formu göndərməyə icazə verir', () => {
cy.visit('/your-form-page');
cy.get('#email-input').type('doğru@example.com');
cy.get('button[type="submit"]').click();
// Əlavə yoxlamalar: yönləndirmə, uğurlu mesaj
cy.url().should('include', '/success'); // Uğurlu göndərmədən sonra URL-i yoxla
});
});
Test case cədvəli:
| ID | İstifadəçi fəaliyyəti | Gözlənilən nəticə |
|---|---|---|
| TC_01 | test@example.com daxil et |
Sahə düzgün sayılır. Əgər bütün sahələr doldurulubsa, forma göndərilir. |
| TC_02 | səhv-email daxil et |
Sahə səhv sayılır. Xəta mesajı göstərilir. |
| TC_03 | Sahəni boş burax və formu göndərməyə cəhd et | Sahə səhv sayılır (əgər vacibdirsə). Xəta mesajı göstərilir. |
| TC_04 | test@example.co.uk daxil et |
Sahə düzgün sayılır. |
| TC_05 | <script>alert('XSS')</script> daxil et |
Skript icra olunmamalıdır. Sahə sanitizasiya olunmalı və ya validasiya edilməlidir. |
Layihənin xüsusi tələblərini (məsələn, müəyyən domen zonalarının dəstəyi, böyük-kiçik hərf həssaslığı) nəzərə almaq və müxtəlif cihazlar və brauzerlərdə test etmək vacibdir.