TGViewer
πŸ§‘β€πŸ’» Π£ΡŽΡ‚Π½ΠΎΠ΅ сообщСство тСстировщиков πŸ§‘β€πŸ’» Π£ΡŽΡ‚Π½ΠΎΠ΅ сообщСство тСстировщиков @cozyqa Β· 7.94K subscribers
Post #1200 1.11K
❓ Как Π±Ρ‹ Π²Ρ‹ осущСствили Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΠΉΠ»Π° (кСйса)?

Автоматизация Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ email-адрСса β€” это ваТная Π·Π°Π΄Π°Ρ‡Π° Π² тСстировании, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π²ΠΎΠ΄ email ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с рСгистрациСй, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.

Π― Π±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Π» Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

1️⃣ ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ» Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ трСбования ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊ email. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ email Π΄ΠΎΠ»ΠΆΠ΅Π½:

🟣 Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ "@" ΠΈ "."
🟣 Π˜ΠΌΠ΅Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ структуру (username@domain.com)
🟣 НС ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π½Ρ‹Π΅ символы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρƒ)
🟣 НС Π±Ρ‹Ρ‚ΡŒ слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ (a@b.c β€” Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΎ)
НС Π±Ρ‹Ρ‚ΡŒ слишком Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, > 320 символов)
🟣 Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ рСгулярного выраТСния (RFC 5322)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ рСгулярного выраТСния для Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ email:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$


2️⃣ НаписаниС автоматичСских тСстов

Π― Π±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» тСстированиС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Selenium + Pytest ΠΈΠ»ΠΈ JUnit/TestNG Π² Java.
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By

@pytest.fixture
def driver():
driver = webdriver.Chrome()
driver.get("https://example.com/signup") # ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ страницу рСгистрации
yield driver
driver.quit()

@pytest.mark.parametrize("email, expected", [
("valid.email@example.com", True), # Π’Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ email
("invalid-email.com", False), # НСт "@"
("@nodomain.com", False), # НСт ΠΈΠΌΠ΅Π½ΠΈ
("user@.com", False), # НСт Π΄ΠΎΠΌΠ΅Π½Π°
("user@domain..com", False), # Двойная Ρ‚ΠΎΡ‡ΠΊΠ°
("user@domain.c", False), # Блишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅
])
def test_email_validation(driver, email, expected):
email_input = driver.find_element(By.NAME, "email")
submit_button = driver.find_element(By.NAME, "submit")

email_input.clear()
email_input.send_keys(email)
submit_button.click()

error_message = driver.find_element(By.ID, "email-error")

if expected:
assert error_message.is_displayed() is False, f"Ошибка для валидного email: {email}"
else:
assert error_message.is_displayed() is True, f"НСт ошибки для Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΎΠ³ΠΎ email: {email}"


3️⃣ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° сСрвСрС (API-тСстированиС)

Помимо UI, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ Π½Π° сСрвСрС Ρ‡Π΅Ρ€Π΅Π· API-запросы.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ API-тСста с Postman + Newman ΠΈΠ»ΠΈ RestAssured Π² Java:
import pytest
import requests

BASE_URL = "https://example.com/api/register"

@pytest.mark.parametrize("email, expected_status", [
("valid.email@example.com", 200),
("invalid-email.com", 400),
("user@.com", 400),
])
def test_email_validation_api(email, expected_status):
response = requests.post(BASE_URL, json={"email": email})
assert response.status_code == expected_status


4️⃣ Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ тСстов Π² CI/CD

Π§Ρ‚ΠΎΠ±Ρ‹ автоматичСскиС тСсты Π·Π°ΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ рСгулярно, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Jenkins, GitHub Actions, GitLab CI.
name: Run Email Validation Tests

on:
push:
branches:
- main

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: '3.9'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytest tests/
  • πŸ‘ 2
More from @cozyqa
  1. Sep 17, 2026❓ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ кластСризация Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΎΠ²? ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΎΠ² (Defect Clustering) β€” это один…
  2. Sep 11, 2026ΠžΡΠ½ΠΎΠ²Ρ‹ ΡŽΠ·Π°Π±ΠΈΠ»ΠΈΡ‚ΠΈ-тСстирования Автор: ΠšΡΡ€ΠΎΠ» М. Π‘Π°Ρ€ΡƒΠΌ Π“ΠΎΠ΄ издания: 2021 Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ
  3. Sep 3, 2026πŸ”₯ Π’Π΅Ρ…Π½ΠΈΠΊΠΈ тСст-Π΄ΠΈΠ·Π°ΠΉΠ½Π° πŸ“₯ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ тСст-Π΄ΠΈΠ·Π°ΠΉΠ½Π°. Π‘Ρ‚Π°Ρ‚ΡŒΡ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ мСто…
  4. Aug 17, 2026❓ Π’ Ρ‡Π΅ΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TCP? TCP (Transmission Control Protocol) β€” это ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» тран…
  5. Aug 12, 2026Π§Π°Ρ‚ с вашими Ρ€Π΅Π·ΡŽΠΌΠ΅. ΠŸΡ€ΠΈΡΡ‹Π»Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·ΡŽΠΌΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ HR вас ΡƒΠ²ΠΈΠ΄Π΅Π»Π° ΠΈ Π΅ΠΉ(Π΅ΠΌΡƒ) Π±Ρ‹Π»ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ с вами…
  6. Aug 10, 2026ВСстируСм яблоко: смартфоны, ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Ρ‹ ΠΈ часы Автор: М. А. Осина Π“ΠΎΠ΄ издания: 2023 Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒβ€¦
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook β†’Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 β†’