Что бы вы хотели улучшить на предыдущем месте работы с точки зрения процессов разработки или тестирования?

Ответ

Я бы сосредоточился на улучшении двух ключевых областей: автоматизации тестирования и процесса code review.

1. Улучшение автоматизации интеграционных тестов На предыдущем проекте многие API-тесты выполнялись вручную через Postman. Их можно было эффективно автоматизировать, используя pytest и requests, что повысило бы скорость выполнения регресса и надежность.

Пример автоматизации теста API:

import requests
import pytest

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

# Тест проверки статуса эндпоинта

def test_get_users_status_code():
    response = requests.get(f"{BASE_URL}/users")
    assert response.status_code == 200, f"Expected 200, got {response.status_code}"

# Тест проверки структуры ответа

def test_get_users_response_structure():
    response = requests.get(f"{BASE_URL}/users")
    data = response.json()

    assert isinstance(data, list), "Response should be a list"
    if data:
        user = data[0]
        assert "id" in user, "User object should have 'id' field"
        assert "name" in user, "User object should have 'name' field"

2. Внедрение более строгого code review для тестов Цель — избежать дублирования кода, обеспечить соблюдение стандартов и улучшить читаемость. В процессе ревью можно проверять:

  • Наличие понятных имен тестов и переменных.
  • Использование фикстур и параметризации для устранения дублирования.
  • Наличие четких утверждений (assertions) и информативных сообщений об ошибках.
  • Корректную обработку edge-cases.

Эти изменения привели бы к созданию более поддерживаемой и надежной тестовой базы.

Ответ 18+ 🔞

Да ты послушай, что за пиздопроебибна творилась на том проекте! Сидят, блядь, как мартышлюшки, и вручную, сука, в Postman'е API-тесты гоняют. Ну это ж, ёпта, каменный век, в рот меня чих-пых!

Вот смотри, куда бы я, сука, впендюрил свои мозги.

Первое — чтоб эти тесты сами бегали, как угорелые. Взял бы pytest с requests, и поехали, блядь. Регресс бы гонялся в разы быстрее, и доверия к результатам было бы не ноль ебать, а овердохуища.

Вот, глянь, как бы это выглядело, элементарно же:

import requests
import pytest

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

# Тест проверки статуса эндпоинта

def test_get_users_status_code():
    response = requests.get(f"{BASE_URL}/users")
    assert response.status_code == 200, f"Expected 200, got {response.status_code}"

# Тест проверки структуры ответа

def test_get_users_response_structure():
    response = requests.get(f"{BASE_URL}/users")
    data = response.json()

    assert isinstance(data, list), "Response should be a list"
    if data:
        user = data[0]
        assert "id" in user, "User object should have 'id' field"
        assert "name" in user, "User object should have 'name' field"

Видишь? Никакой магии, хуй с горы. Зато теперь это не человек-паук, который тыкает кнопки, а железный робот, который не устаёт и не ошибается, потому что тупой как пробка.

А второе — это чтоб за этим всем не слепой крот следил. Надо, блядь, code review для тестов делать жёстче, чем для боевого кода. А то напишут тест, который сам по себе — это отдельная трагедия в трёх актах с продолжением.

На ревью смотрю:

  • Имена тестов — чтобы было понятно, что они проверяют, а не «test_1» и «test_2_updated_final_v3». Э, бошка, думай!
  • Код не дублируется как последняя жвачка под столом. Фикстуры, параметризация — вот это всё.
  • Утверждения (assert) — чтоб не просто assert result, а с человеческим сообщением, что пошло не так. А то «упало» — и сиди, гадай, на каком хуе.
  • Edge-cases, блядь! А что если список пустой? А если сервер плюнул ошибку? Это ж надо предусмотреть, а не надеяться на авось!

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