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.comfirstname.lastname@example.comemail@subdomain.example.comfirstname+lastname@example.comemail@example.co.ukemail@example.museumemail@example.nameemail@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.