Ответ
Да, я регулярно пишу bash-скрипты для автоматизации рутинных задач в тестировании и CI/CD. Это позволяет экономить время и стандартизировать процессы.
Типичные сценарии использования:
- Подготовка и очистка тестового окружения: Установка зависимостей, сброс баз данных, настройка конфигурационных файлов.
- Парсинг и анализ логов: Поиск ошибок, подсчет определенных событий после прогона тестов.
- Запуск тестовых наборов: Последовательный или параллельный запуск разных типов тестов (юнит, API, E2E) с передачей параметров.
- Мониторинг: Проверка доступности сервисов (health-check) перед началом тестирования.
Пример скрипта для запуска набора тестов и базовой проверки результатов:
#!/bin/bash
set -euo pipefail # Выход при ошибке, обработка неопределенных переменных
# Конфигурация
TEST_SUITE="API_Smoke_Tests"
LOG_DIR="./test_logs"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
LOG_FILE="${LOG_DIR}/${TEST_SUITE}_${TIMESTAMP}.log"
# Создание директории для логов
mkdir -p "$LOG_DIR"
echo "Запуск тестового набора: $TEST_SUITE" | tee -a "$LOG_FILE"
# Запуск команды тестирования (например, Newman для Postman коллекций)
# Здесь предполагается, что newman установлен глобально
if command -v newman &> /dev/null; then
newman run "my_api_collection.json" --environment "staging_env.json" 2>&1 | tee -a "$LOG_FILE"
TEST_EXIT_CODE=${PIPESTATUS[0]}
else
echo "Ошибка: Newman не найден. Установите его через 'npm install -g newman'" | tee -a "$LOG_FILE"
exit 1
fi
# Анализ кода завершения и логов
if [ $TEST_EXIT_CODE -eq 0 ]; then
echo "УСПЕХ: Все тесты пройдены." | tee -a "$LOG_FILE"
# Дополнительная проверка на отсутствие WARN в логах
if grep -q -i "warn" "$LOG_FILE"; then
echo "ВНИМАНИЕ: В логах обнаружены предупреждения."
fi
exit 0
else
echo "СБОЙ: Обнаружены неудачные тесты. Код выхода: $TEST_EXIT_CODE" | tee -a "$LOG_FILE"
echo "Последние строки лога с ошибками:"
tail -20 "$LOG_FILE" | grep -A 10 -B 5 -i "error|fail"
exit 1
fi
Такой скрипт интегрируется в пайплайн CI (например, Jenkins или GitLab CI) для автоматического запуска и отчетности.