← Назад к вопросам

Расскажи про свой опыт работы с консолью

1.0 Junior🔥 101 комментариев
#Веб-тестирование#Инструменты тестирования

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Опыт работы с консолью (Command Line / Terminal)

Консоль — это один из самых мощных инструментов в арсенале QA инженера. За 10+ лет я освоил Linux, macOS и Windows консоли, и это значительно ускорило мою работу.

Основные команды, которые использую ежедневно:

Навигация и файловая система:

# Основные команды
pwd                    # Show current directory
cd /path/to/dir       # Change directory
ls -la                # List files with details
find . -name "*.py"   # Find files by pattern
grep -r "text" .      # Search text in files

# Примеры использования в QA:
# Найти все тестовые файлы:
find tests/ -name "test_*.py"

# Найти все TODO комментарии в коде:
grep -r "TODO" tests/

# Показать последние 10 строк логов:
tail -n 10 app.log

# Следить за логом в реальном времени:
tail -f app.log

Git команды (для работы с версионированием):

# Basic git workflow
git status                    # See changes
git add .
                             # Stage all files
git commit -m "message"      # Commit changes
git push origin main         # Push to remote
git log --oneline           # See commit history

# Useful for QA:
# Посмотреть, какие изменения были в файле:
git log -p tests/test_login.py

# Посмотреть разницу между версиями:
git diff HEAD~1 tests/

# Вернуть файл на предыдущую версию:
git checkout HEAD -- tests/test_broken.py

# Создать новую ветку для feature:
git checkout -b feature/test-payment-flow

HTTP запросы из консоли:

# cURL — самый важный инструмент для API тестирования

# Простой GET запрос:
curl https://api.example.com/users

# GET с параметрами:
curl "https://api.example.com/users?page=1&limit=10"

# GET с заголовками:
curl -H "Authorization: Bearer token123" https://api.example.com/me

# POST с JSON body:
curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"email": "test@example.com", "password": "Test123"}'

# POST с файлом:
curl -X POST https://api.example.com/upload \
  -F "file=@/path/to/file.jpg"

# Сохранить ответ в файл:
curl https://api.example.com/data -o response.json

# Показать всю информацию (headers, body, timing):
curl -v https://api.example.com/users

# Очень подробный вывод:
curl -vv https://api.example.com/users

# Измерить время ответа:
curl -w "\nTime: %{time_total}s\n" https://api.example.com/users

# Load test простой скрипт:
for i in {1..100}; do curl https://api.example.com/users; done

Работа с JSON из консоли:

# jq — мощный инструмент для работы с JSON

# Отформатировать JSON красиво:
curl https://api.example.com/users | jq

# Извлечь конкретное поле:
curl https://api.example.com/users | jq '.data[0].email'

# Филтровать данные:
curl https://api.example.com/users | jq '.data[] | select(.status=="active")'

# Пример в тестировании:
# Получить только ID всех пользователей:
curl https://api.example.com/users | jq '.data[].id'

# Посчитать количество пользователей:
curl https://api.example.com/users | jq '.data | length'

# Проверить наличие поля:
curl https://api.example.com/users | jq 'has("error")'

Работа с базами данных:

# PostgreSQL
psql -U username -d database_name -c "SELECT * FROM users;"
psql -U test_user -d test_db -f migration.sql  # Run SQL file

# MySQL
mysql -u username -p database_name -e "SELECT * FROM users;"

# SQLite
sqlite3 test.db "SELECT * FROM users;"

# Примеры в QA:
# Проверить, что пользователь создан после теста:
psql -U qa_user -d test_db -c "SELECT * FROM users WHERE email='test@example.com';"

# Очистить тестовые данные:
psql -U qa_user -d test_db -c "DELETE FROM transactions WHERE user_id=123;"

# Проверить количество записей:
psql -U qa_user -d test_db -c "SELECT COUNT(*) FROM users;"

Python скрипты из консоли:

# Запустить скрипт:
python test_script.py

# Запустить с аргументами:
python test_script.py --env=staging --user=john

# Интерактивная Python консоль:
python
>>> import requests
>>> response = requests.get('https://api.example.com/users')
>>> print(response.json())

# Выполнить одну строку Python:
python -c "import json; print(json.dumps({'key': 'value'}, indent=2))"

# pip — управление зависимостями:
pip install pytest
pip install pytest requests selenium
pip freeze > requirements.txt  # Сохранить зависимости
pip install -r requirements.txt  # Установить из файла

Docker команды (для контейнеризации):

# Запустить контейнер с приложением:
docker run -d -p 8000:8000 myapp:latest

# Посмотреть логи контейнера:
docker logs -f container_id

# Войти в контейнер:
docker exec -it container_id /bin/bash

# Остановить контейнер:
docker stop container_id

# Удалить контейнер:
docker rm container_id

# Docker Compose (для многоконтейнерных приложений):
docker compose up -d  # Start services
docker compose down   # Stop services
docker compose logs -f api  # Logs for specific service

Утилиты для тестирования:

# Проверить доступность сервера:
ping api.example.com
nslookup api.example.com  # DNS lookup
curl -I https://api.example.com  # Check if server responds

# Тестировать SSL сертификат:
openssl s_client -connect api.example.com:443

# Анализировать порты:
netstat -tlnp | grep LISTEN
lsof -i :8000  # Show what's listening on port 8000

# Измерить сетевую задержку:
ping -c 5 api.example.com
mtr api.example.com  # Real-time network monitoring

Мой реальный workflow для автоматизированного тестирования:

День 1: Подготовка окружения

# Clone проекта
git clone https://github.com/company/tests.git
cd tests

# Создать виртуальное окружение
python -m venv venv
source venv/bin/activate  # на Windows: venv\Scripts\activate

# Установить зависимости
pip install -r requirements.txt

# Запустить тесты
pytest tests/ -v

# Запустить с покрытием
pytest tests/ --cov=src --cov-report=html

День 2: Отладка падающего теста

# Запустить один тест с подробным выводом
pytest tests/test_login.py::TestLogin::test_valid_credentials -vv

# Запустить с логированием
pytest tests/test_login.py -v --log-cli-level=DEBUG

# Запустить с пошаговым выполнением (pdb)
pytest tests/test_login.py --pdb

# Посмотреть, какие тесты есть
pytest tests/ --collect-only

День 3: Параллельное выполнение

# Установить pytest-xdist
pip install pytest-xdist

# Запустить тесты параллельно на 4 ядрах
pytest tests/ -n 4

# Запустить параллельно с логированием
pytest tests/ -n 4 -v

Скрипты, которые я писал для автоматизации:

Скрипт для подготовки тестовых данных:

#!/bin/bash
# setup_test_data.sh

DB_HOST="localhost"
DB_USER="qa_user"
DB_PASSWORD="test_password"
DB_NAME="test_db"

# Очистить БД
mysql -h $DB_HOST -u $DB_USER -p$DB_PASSWORD $DB_NAME << EOF
TRUNCATE TABLE users;
TRUNCATE TABLE transactions;
EOF

# Создать тестовых пользователей
mysql -h $DB_HOST -u $DB_USER -p$DB_PASSWORD $DB_NAME << EOF
INSERT INTO users (email, password, status) VALUES
('test1@example.com', '\$2b\$12\$...', 'ACTIVE'),
('test2@example.com', '\$2b\$12\$...', 'ACTIVE');
EOF

echo "Test data prepared successfully"

Скрипт для запуска тестов и отправки отчёта:

#!/bin/bash
# run_tests.sh

TEST_ENV=${1:-staging}
echo "Running tests for $TEST_ENV environment..."

# Запустить тесты
pytest tests/ -v --html=report.html --self-contained-html

# Если тесты упали, отправить уведомление
if [ $? -ne 0 ]; then
    echo "Tests failed! Sending email..."
    mail -s "Test Failure Report" qa-team@example.com < report.html
    exit 1
fi

echo "All tests passed!"

Скрипт для API load testing:

#!/bin/bash
# load_test.sh

URL=$1
COUNT=$2

echo "Running $COUNT requests to $URL..."

for i in $(seq 1 $COUNT); do
    START=$(date +%s%N)
    curl -s "$URL" > /dev/null
    END=$(date +%s%N)
    TIME=$((($END - $START) / 1000000))
    echo "Request $i: ${TIME}ms"
done

Команды для отладки сложных проблем:

# Посмотреть процессы, потребляющие много памяти:
top -o %MEM

# Посмотреть, какие порты заняты:
netstat -tulpn | grep LISTEN

# Убить процесс по имени:
killall python
kill -9 12345  # Kill by PID

# Посмотреть дисковое пространство:
df -h
du -sh /path/to/dir  # Size of directory

# Посмотреть системные логи:
tail -f /var/log/syslog
journalctl -u myapp -f  # systemd logs

# Профилирование скрипта:
time python test_script.py  # See execution time
python -m cProfile test_script.py  # Profile CPU usage

Инструменты, которые установил на машину:

# Обновить системные пакеты
sudo apt update && sudo apt upgrade  # Ubuntu/Debian
brew upgrade  # macOS

# Установить полезные инструменты
brew install jq curl wget htop git python
brew install selenium-server

# Установить IDE/Editor
brew install --cask visual-studio-code
brew install --cask pycharm-community

Лучшие практики работы с консолью:

1. Используй aliases для частых команд:

alias pytest-quick="pytest -x -v"  # Stop at first failure
alias db-connect="psql -U qa_user -d test_db"
alias test-api="curl -H 'Authorization: Bearer $TOKEN' https://api.example.com"

2. Пиши bash скрипты для повторяющихся задач

  • Подготовка окружения
  • Запуск тестов
  • Отправка отчётов

3. Используй версионирование для скриптов

  • Храни в Git
  • Документируй использование

4. Безопасность

  • Никогда не коммитай пароли
  • Используй environment variables
  • .env файл в .gitignore

Результаты работы с консолью:

  • Сэкономил 10+ часов в неделю на ручных операциях
  • Автоматизировал 80% подготовки тестового окружения
  • Написал 50+ полезных скриптов
  • Ускорил отладку проблем в 5 раз
  • Улучшил воспроизводимость тестов

Консоль — это не просто инструмент, это суперсила для QA инженера. Кто её не освоил — теряет 30-40% производительности.