Sobes.tech
Junior

Elektron pochta manzili kiritish maydonini to'g'ri qanday test qilish mumkin?

sobes.tech AI

AIdan javob

Email maydonini sinovdan o'tkazish funksionallik, validatsiya, qulaylik va xavfsizlikni tekshirishni o'z ichiga oladi.

Funktsional test:

  • To'g'ri manzillarni kiritish:
    • 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.демо (internatsional domen nomlarini qo'llab-quvvatlash uchun - IDN)
  • Noto'g'ri manzillarni kiritish:
    • @ yo'q: testexample.com
    • Bir nechta @: test@@example.com
    • Noto'g'ri domen formatlari: test@example
    • Foydalanuvchi nomi yo'q: @example.com
    • Foydalanuvchi nomida maxsus belgilar: te!st@example.com, te#st@example.com
    • Domenida maxsus belgilar: test@exa!mple.com
    • Uzun manzil (limitlarni tekshirish): a_very_long_email_address_that_exceeds_typical_limits@example.com (specifikatsiya yoki oqilona fikrga muvofiq limitlarni tekshirish)
    • Bo'sh joylar bilan manzil: test @example.com
    • Noto'g'ri sintaksis bilan manzil: test@.com, test.@example.com
    • Domen o'rniga IP-manzil bilan manzil: test@[192.168.1.1]
    • Kirill alifbosida manzil: тест@пример.рф
  • Bo'sh maydon: Formani bo'sh maydon bilan yuborish.

Validatsiya:

  • Kiritilgan ma'lumotlarning email sintaksisiga mosligini tekshirish (regulyar ifodalar bilan).
  • Noto'g'ri ma'lumotlar kirgizilganda foydalanuvchiga xato xabarlarini ko'rsatish.
  • Xabarlarning aniqligi va tushunarli ekanligini tekshirish.
  • Validatsiya xatolari mavjud bo'lsa, formani yubormaslik.

Foydalanuvchi uchun qulaylik va UI/UX:

  • Sahifa yuklanganda maydonga fokus (agar mos bo'lsa).
  • Format uchun namunali matn (masalan, user@example.com).
  • Brauzer autofullashni qo'llab-quvvatlash.
  • Maydon uchun <label> belgisining mavjudligi.
  • Foydalanuvchi ruxsat etilmagan belgilarni kiritolmasligi (agar frontendda shunday logika bo'lsa).
  • Agar kirish maskasi bo'lsa, uning ishlashini tekshirish.

Xavfsizlik:

  • XSS-zaifliklarni tekshirish: skriptlar, HTML-teglar (<script>alert('XSS')</script>) kiriting.
  • In'ektsiyalar (SQL/NoSQL): maxsus belgilarni kiritish, ular so'rovlarni ta'sir qilishi mumkin (' OR '1'='1).
  • Limitlar (agar forma email yuborsa yoki resursga og'ir harakatlar qilsa): IP yoki foydalanuvchidan yuborish urinishlar sonini cheklash.

Avtomatlashtirish:

  • Email validatsiya funksiyalari uchun unit-testlar yozish.
  • Formadagi maydonning ishlashini tekshirish uchun integratsion testlar yozish.
  • To'liq formani email maydoni bilan ishlashini tekshirish uchun E2E-testlar yozish.

Validatsiya uchun unit-test misoli:

// validateEmail funksiyasiga ega bo'lsak
function validateEmail(email) {
  const re = /\S+@\S+\.\S+/; // Oddiy regulyar ifoda misoli
  return re.test(email);
}

// Jest bilan unit-testlar
describe('validateEmail', () => {
  test('to'g'ri email uchun true qaytarishi kerak', () => {
    expect(validateEmail('test@example.com')).toBe(true);
    expect(validateEmail('firstname.lastname@example.com')).toBe(true);
  });

  test('noto'g'ri email uchun false qaytarishi kerak', () => {
    expect(validateEmail('testexample.com')).toBe(false);
    expect(validateEmail('test@example')).toBe(false);
    expect(validateEmail('@example.com')).toBe(false);
  });

  test('bo'sh satr uchun false', () => {
    expect(validateEmail('')).toBe(false);
  });
});

E2E-test misoli Cypress bilan:

// cypress/integration/email_field.spec.js
describe('Email Input Field', () => {
  it('noto'g'ri kirish uchun to'g'ri validatsiya va xato xabarini ko'rsatadi', () => {
    cy.visit('/your-form-page'); // Form sahifasi URL
    cy.get('#email-input').type('notvalid'); // Noto'g'ri email kiriting
    cy.get('button[type="submit"]').click(); // Yuborish tugmasini bosing
    cy.get('.error-message').should('be.visible').and('contain', 'Noto‘g‘ri email formati'); // Xato xabarini tekshirish
  });

  it('To‘g‘ri email bilan formani yuborishga ruxsat beradi', () => {
    cy.visit('/your-form-page');
    cy.get('#email-input').type('valid@example.com');
    cy.get('button[type="submit"]').click();
    // Keyingi tekshiruvlar: masalan, redirect, muvaffaqiyatli yuborish xabari
    cy.url().should('include', '/success'); // Yuborishdan keyingi URLni tekshirish
  });
});

Test case jadvali:

ID Foydalanuvchi harakati Kutilyotgan natija
TC_01 test@example.com kiriting Maydon to'g'ri hisoblanadi. Agar barcha maydonlar to'ldirilgan bo'lsa, forma yuboriladi.
TC_02 notvalid kiriting Maydon noto'g'ri hisoblanadi. Xato xabari ko'rsatiladi.
TC_03 Maydonni bo'sh qoldirib, yuborishga harakat qilish Maydon noto'g'ri hisoblanadi (agar majburiy bo'lsa). Xato xabari ko'rsatiladi.
TC_04 test@example.co.uk kiriting Maydon to'g'ri hisoblanadi.
TC_05 <script>alert('XSS')</script> kiriting Skript bajarilmasligi kerak. Maydon sanitizatsiya qilinishi yoki validatsiya qilinishi kerak.

Shuningdek, loyiha talablariga muvofiq (masalan, muayyan domen zonalarini qo'llab-quvvatlash, katta-kichik harf sezgirligi), turli qurilmalar va brauzerlarda test qilish muhimdir.