Sobes.tech
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.com
    • firstname.lastname@example.com
    • email@subdomain.example.com
    • firstname+lastname@example.com
    • email@example.co.uk
    • email@example.museum
    • email@example.name
    • email@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.