Как вы оцениваете свой уровень навыков программирования?

Ответ

Уровень — уверенный middle в контексте автоматизации тестирования. Основная специализация — написание и поддержка автотестов, а не разработка продуктивного кода.

Что я умею:

  • Писать автоматизированные тесты на Python (pytest, unittest) и Java (JUnit, TestNG).
  • Работать с ООП, паттернами проектирования (Page Object, Factory) в автотестах.
  • Тестировать API, парсить ответы (JSON, XML), валидировать данные.
  • Взаимодействовать с базами данных через ORM (SQLAlchemy) или нативные драйверы для проверки данных.
  • Анализировать код приложения для понимания логики и поиска потенциальных уязвимостей.
  • Писать вспомогательные скрипты для генерации тестовых данных, парсинга логов и т.д.

Пример простого теста на Python:

import pytest
import requests

def test_user_creation():
    """Тест создания пользователя через API."""
    url = "https://api.example.com/users"
    payload = {"name": "Test User", "email": "test@example.com"}

    response = requests.post(url, json=payload)
    # Проверяем успешное создание
    assert response.status_code == 201
    user_data = response.json()
    assert user_data["id"] is not None
    assert user_data["name"] == payload["name"]

    # Проверяем, что пользователь появился в системе (интеграционная проверка)
    get_response = requests.get(f"{url}/{user_data['id']}")
    assert get_response.status_code == 200

Ответ 18+ 🔞

А, ну вот, смотри, приходит такой резюмешник, а там написано: «Уверенный миддл в автоматизации». И я такой, ёпта, ну сейчас посмотрим, насколько ты уверенный, блядь. Не в продуктивной разработке, заметь, а именно в тестах — то есть ты тот самый парень, который потом всем жизнь портит, когда баги находит, сука.

Что этот тип, в теории, должен уметь, чтобы не опозориться:

  • Писать эти, блядь, автотесты на Питоне или Яве. Не просто «привет, мир», а чтобы фреймворки типа pytest или JUnit не выворачивали ему мозги наизнанку. Page Object, паттерны всякие — не для красоты, а чтобы через месяц самому не захотелось глаза выколоть, глядя на свой же код.
  • API тестить, парсить ответы. JSON, XML — не просто буквы, а чтобы данные валидировал, а не тупо статус-код 200 радовался, как обезьяна банану. Потому что сервер может тебе ответить «200 OK», а внутри — {"error": "всё пропало"}, и ты такой: «О, всё гуд!». Пиздец.
  • С базами данных общаться. Не через админку в браузере тыкать, а скриптом. Проверить, что после твоего теста в таблице users появилась запись, а не просто в ответе API красивая циферка id всплыла.
  • Код приложения читать. Да, блядь, не только свой. Чтобы понять, куда смотреть, когда тест падает. Это не магия, это работа.
  • Всякие вспомогательные скрипты для данных или логов пилить. Чтобы не делать вручную то, что можно автоматизировать, и не тратить время на ерунду.

А вот, смотри, пример кода, который он приводит. Типа, смотрите, какой я молодец:

import pytest
import requests

def test_user_creation():
    """Тест создания пользователя через API."""
    url = "https://api.example.com/users"
    payload = {"name": "Test User", "email": "test@example.com"}

    response = requests.post(url, json=payload)
    # Проверяем успешное создание
    assert response.status_code == 201
    user_data = response.json()
    assert user_data["id"] is not None
    assert user_data["name"] == payload["name"]

    # Проверяем, что пользователь появился в системе (интеграционная проверка)
    get_response = requests.get(f"{url}/{user_data['id']}")
    assert get_response.status_code == 200

Ну, вроде ничего, базово. Создаёт юзера, проверяет статус, потом идёт и проверяет, что его реально можно получить по айдишнику. Это уже лучше, чем 80% тех, кто пишет один запрос и доволен. Но, сука, где очистка тестовых данных? Где фикстуры? Где параметризация? Где проверка, что email уникальный? Где, наконец, обработка потенциальных ебучих ошибок сети или таймаутов? Это же, блядь, пример для резюме, можно было и покрасивее сделать, чтобы глаз радовался, а не этот минимализм в стиле «лишь бы сработало».

Короче, уровень «уверенный миддл» — это когда ты не только код пишешь, но и думаешь, как его поддерживать, масштабировать и не выносить мозг коллегам. А то бывает, напишет человек тесты, а потом уходит в отпуск, и вся команда неделю разгадывает его ребусы, почему падает сборка. Вот это пиздец, товарищи.