Расскажи про свой опыт работы с консолью
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Опыт работы с консолью (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% производительности.