Sobes.tech
Junior

როგორ სწორად დავტესტოთ ელფოსტის მისამართის ველი?

sobes.tech AI

პასუხი AI-სგან

ელექტრონული ფოსტის ველი ტესტირება მოიცავს ფუნქციონალურობის, ვალიდაციის, გამოყენების სარგებლის და უსაფრთხოების შემოწმებას:

ფუნქციონალური ტესტირება:

  • სწორი მისამართების შეყვანა:
    • 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.დემო (ინტერნაციონალიზებული დომენის სახელების მხარდაჭერა - IDN)
  • არასწორი მისამართების შეყვანა:
    • @ არარსებობა: testexample.com
    • რამდენიმე @: test@@example.com
    • არასწორი ფორმატი: test@example
    • მომხმარებლის სახელის არარსებობა: @example.com
    • სპეციალური სიმბოლოები მომხმარებლის სახელში: te!st@example.com, te#st@example.com
    • სპეციალური სიმბოლოები დომენში: test@exa!mple.com
    • გრძელი მისამართი (სահմանափակումების შემოწმება): a_very_long_email_address_that_exceeds_typical_limits@example.com
    • სივრცეები მისამართში: test @example.com
    • სინტაქსის შეცდომა მისამართში: test@.com, test.@example.com
    • IP მისამართით მისამართი (თუ მხარდაჭერა არ არის): test@[192.168.1.1]
    • კირილიცით მისამართი (თუ IDN მხარდაჭერა არ არის): ტესტ@пример.рф
  • ცარიელი ველი: ფორმის გამოგზავნა ცარიელი ველით.

ვალიდაცია:

  • ელფოსტის სინტაქსის შესაბამისობის შემოწმება (რეგულარული გამოთქმებით):
  • შეტყობინებების ჩვენება მომხმარებელს არასწორი მონაცემების შეყვანისას:
  • შეტყობინებების სიზუსტისა და გასაგებიობის შემოწმება:
  • თუ ვალიდაცია შეცდომებს აჩვენებს, ფორმა არ უნდა გაიგზავნოს:

გამოყენებადობა & UI/UX:

  • ფოკუსის მიცემა ველზე გვერდის ჩატვირთვისას:
  • მაგალითის ტექსტი (placeholder): (მაგალითად, user@example.com)
  • ბრაუზერის ავტომატური შევსების მხარდაჭერა:
  • <label> ნიშნულის არსებობა:
  • მომხმარებელი არ უნდა შეძლოს დაუშვებელი სიმბოლოების შეყვანა:
  • თუ მარკა არსებობს, მისი მუშაობის შემოწმება:

უსაფრთხოება:

  • XSS-ის წინააღმდეგ შემოწმება: სკრიპტების, HTML ტეგების შეყვანა (<script>alert('XSS')</script>):
  • SQL/NoSQL ინექციების წინააღმდეგ: სპეციფიკური სიმბოლოების შეყვანა:
  • სიჩქარის შეზღუდვა (თუ ფორმა ელფოსტის გაგზავნას ან რესურსის მძიმე მოქმედებებს ახორციელებს): IP ან მომხმარებლის დონეზე:

ავტომატიზაცია:

  • ელფოსტის ვალიდაციის ფუნქციების ერთეულური ტესტების დაწერა:
  • ინტეგრაციის ტესტების დაწერა ფორმის კონტექსტში ველის მუშაობის შემოწმებისთვის:
  • სრული სცენარების E2E ტესტების დაწერა ფორმის გამოყენების შემოწმებისთვის:

მოდელი კოდი ელფოსტის ვალიდაციის ერთეულური ტესტებისთვის:

// ვივარაუდოთ, რომ გვაქვს `validateEmail` ფუნქცია
function validateEmail(email) {
  const re = /\S+@\S+\.\S+/; // მარტივი რეგულარული გამოთქმა
  return re.test(email);
}

// Jest-ის გამოყენებით ერთეულური ტესტები
describe('validateEmail', () => {
  test('უნდა აბრუნებდეს true სწორი ელფოსტის შემთხვევაში', () => {
    expect(validateEmail('test@example.com')).toBe(true);
    expect(validateEmail('firstname.lastname@example.com')).toBe(true);
  });

  test('უნდა აბრუნებდეს false არასწორი ელფოსტის შემთხვევაში', () => {
    expect(validateEmail('testexample.com')).toBe(false);
    expect(validateEmail('test@example')).toBe(false);
    expect(validateEmail('@example.com')).toBe(false);
  });

  test('უნდა აბრუნებდეს false ცარიელი სტრიქონისთვის', () => {
    expect(validateEmail('')).toBe(false);
  });
});

E2E ტესტის მაგალითი Cypress-ის გამოყენებით:

// cypress/integration/email_field.spec.js
describe('Email Input Field', () => {
  it('სწორად ვალიდაციას და აჩვენებს შეცდომას არასწორი შეყვანისას', () => {
    cy.visit('/your-form-page'); // ფორუმის გვერდის URL
    cy.get('#email-input').type('არასწორი-ელფოსტა'); // არასწორი ელფოსტა
    cy.get('button[type="submit"]').click(); // გაგზავნის ღილაკი
    cy.get('.error-message').should('გავლენადი').and('შეიმოწმოს', 'არასწორი ფორმატი'); // შეცდომის შეტყობინების შემოწმება
  });

  it('ნებადართულია ფორმის გაგზავნა სწორი ელფოსტით', () => {
    cy.visit('/your-form-page');
    cy.get('#email-input').type('სწორი@ელფოსტა');
    cy.get('button[type="submit"]').click();
    // დამატებითი შემოწმებები წარმატებული გაგზავნის შემდეგ
    cy.url().should('შეიცავდეს', '/წარმატება'); // URL-ის შემოწმება
  });
});

ტესტის შემთხვევების ცხრილი:

ID მომხმარებლის მოქმედება ელოდება შედეგი
TC_01 test@example.com შეყვანა ველი ვალიდურია. ფორმა გაიგზავნება (თუ ყველა ველი შევსებულია).
TC_02 არასწორი-ელფოსტა შეყვანა ველი ვალიდურია. შეცდომის შეტყობინება ჩანს.
TC_03 ველის დატოვება ცარიელად და ფორმის გაგზავნის მცდელობა ველი ვალიდურია (თუ აუცილებელია). შეცდომის შეტყობინება.
TC_04 test@example.co.uk შეყვანა ველი ვალიდურია.
TC_05 <script>alert('XSS')</script> შეყვანა სკრიპტი არ უნდა შესრულდეს. ველი უნდა იყოს სანიარტული ან ვალიდური.

უნდა გაითვალისწინოს პროექტის სპეციფიკური მოთხოვნები (მაგ., მხარდაჭერა გარკვეული დომენური ზონებისთვის), ტესტირება სხვადასხვა მოწყობილობებზე და ბრაუზერებზე.