Инструменты тестировщика
Bash для тестировщика: файлы и папки, поиск, процессы, ping и curl
Bash – командная оболочка Linux, через которую тестировщик работает на серверах без графического интерфейса: переходит по папкам, читает логи и ищет в них ошибку, смотрит процессы, проверяет связь с сервером и отправляет запросы. Для этого хватает базовых команд cd, ls, cp, mv, rm и cat для файлов, grep и find для поиска, ps и kill для процессов, ping и curl для сети. В Linux и macOS терминал есть сразу, а на Windows Bash ставят через подсистему Linux (WSL) или берут Git Bash, который устанавливается вместе с Git.
- grep
- находит нужную строку в логе прямо на сервере
- WSL или Git Bash
- два способа получить Bash на Windows
- Бесплатно
- урок с заданиями в моём базовом курсе
Зачем тестировщику Bash и как его установить
Командная строка нужна, когда приходится зайти на сервер. Графического интерфейса там обычно нет, а логи и файлы лежат в папках, по которым ходят командами. Иногда говорят, что разбираться в логах тестировщику не обязательно, но я советую всё-таки уметь их читать: нужную строку лога прикладывают к баг-репорту, и с ней понятнее, что произошло. Читать логи несложно, в каждой записи есть время события и то, что случилось, например отвалилась база данных или пропало соединение.
В Linux и macOS терминал работает сразу, ставить ничего не нужно. На Windows 10 я включаю в уроке режим разработчика и компонент "Подсистема Windows для Linux", перезагружаю компьютер и ставлю Ubuntu из Microsoft Store. При первом запуске Ubuntu просит придумать имя пользователя и пароль. Сейчас WSL вместе с Ubuntu ставится одной командой wsl --install в PowerShell, запущенном от имени администратора. Способ ещё проще – Git Bash, который приходит вместе с Git, и в нём работает большинство тех же команд.
Строка приглашения вида artem@machine:~$ показывает имя пользователя, имя компьютера и текущую папку, где ~ означает домашний каталог. Знак $ в конце значит, что команды выполняются от обычного пользователя, у администратора root там стоит #.
На собеседовании, по моему опыту, чаще всего спрашивают основные команды: как посмотреть файлы и изменить их, скопировать и переместить, пропинговать сервер, посмотреть процессы и остановить их и что такое curl. Остальное осваивают уже на проекте.
Файлы и папки: навигация, создание, копирование и удаление
Команда состоит из названия, ключей и параметра. В ls -l folder1 команда ls выводит содержимое папки, ключ -l делает вывод подробным, а параметр folder1 говорит, какую папку показать. Ключи чувствительны к регистру, и их можно объединять: ls -a -l, ls -al и ls -la дают одно и то же. Все ключи команды описаны во встроенной справке, например man ls, а выходят из неё клавишей q.
Набирать меньше помогает Tab, который дописывает имя папки или файла, а стрелки вверх и вниз листают уже введённые команды. clear очищает экран. Имена файлов лучше писать латиницей и без пробелов. touch file one создаст два файла, file и one, потому что пробел разделяет параметры, поэтому вместо пробела ставят нижнее подчёркивание. Кириллица в именах может сломаться из-за разных кодировок.
pwd
Полный путь к текущей папке от корня /. Название расшифровывается как print working directory.
cd
Переход между папками: cd ~ в домашний каталог, cd / в корень, cd .. на уровень выше, cd ../.. на два уровня, cd - в предыдущую папку.
ls
Содержимое папки. ls -a покажет и скрытые файлы, имена которых начинаются с точки, ls -l добавит права доступа, владельца, размер в байтах и дату изменения, ls -R выведет содержимое вложенных папок. Папки обычно выделены синим, исполняемые файлы зелёным.
mkdir и touch
mkdir lesson2 создаёт папку, touch file2.txt создаёт пустой файл.
rm и rmdir
rm file2.txt удаляет файл, rmdir lesson2 удаляет только пустую папку, а rm -r lesson2 удалит папку со всем содержимым. rm удаляет мимо корзины, поэтому имя стоит проверить до нажатия Enter.
mv и cp
mv folder1/doc1.txt folder2 перемещает файл, mv folder2/doc1.txt folder2/doc3.txt переименовывает его. cp folder2/doc3.txt folder1 копирует файл, cp folder1/* folder2 копирует все файлы из папки, а вложенные папки без ключа -r пропускает. В пределах одного диска mv только меняет ссылку на файл и работает быстрее cp.
sudo chmod 755
Выручает при ошибке Permission denied, которая бывает с файлами, созданными через проводник Windows. После команды пишут имя файла или папки: владелец получит все права, остальные смогут читать и запускать.
Просмотр и правка файлов: cat, less, nano и vi
На сервере файлы чаще читают, чем правят. cat file1.txt выводит файл целиком, а cat file2.txt file3.txt выводит два файла подряд, сами файлы при этом не меняются. Длинный файл удобнее открыть через less: текст откроется в отдельном окне, а поиск запускается косой чертой, например /error. Так в логе быстро находят нужную ошибку.
Править файлы прямо в терминале помогают текстовые редакторы. Я показываю два, nano и vi, и считаю, что базовых действий в них хватает: на сервере обычно нужно поправить строку, сохранить и найти нужное место.
cat
Выводит содержимое файла в консоль. Подходит для коротких файлов и для того, чтобы показать несколько файлов одним выводом.
less
Листает длинный файл стрелками, ищет по /слово, переходит к следующему совпадению клавишей n и закрывается клавишей q.
nano
nano file3.txt открывает простой редактор с подсказками внизу, где значок ^ означает Ctrl. Ctrl+O сохраняет файл и позволяет задать новое имя, Ctrl+X закрывает редактор.
vi
Команда vi file3.txt открывает редактор. Печатать в нём можно после нажатия i, а Esc возвращает в режим команд. Там :w сохраняет файл, :q закрывает редактор, :wq делает и то и другое, а :q! выходит без сохранения. Ещё пригодятся dd для удаления строки, u для отмены, :2 для перехода на вторую строку и /слово для поиска.
Поиск и вывод: grep, find, > и |
grep ищет текст внутри файлов, а find ищет сами файлы и папки по имени или типу. В уроке у меня есть file1.txt с пятью строками со словом line. В одной из них слово написано с заглавной буквы, поэтому grep line file1.txt найдёт четыре строки: grep различает регистр. С ключом -i, то есть grep -i line file1.txt, найдутся все пять.
Вывод команды можно сохранить в файл. Команда echo "привет" > file5.txt запишет строку в файл и сотрёт всё, что в нём было. Двойной знак >> дописывает в конец и ничего не стирает. Команда cat file5.txt file6.txt > file7.txt собирает два файла в третий. Так же из вывода нескольких команд готовят, например, отчёт о тестировании.
Вертикальная черта | передаёт вывод одной команды на вход другой. cat bash.txt | grep -i test покажет только строки со словом test, а ls | grep file оставит в списке только файлы, в имени которых есть file.
Например, в интернет-магазине заказ 10482 после оплаты картой остался в статусе "Ожидает оплаты". На сервере тестировщик выполняет grep 10482 app.log | grep -i error и получает строку 2026-11-05 14:32:33 ERROR Payment callback timeout order=10482 after 30000 ms. Из неё видно, что магазин не дождался ответа платёжной системы, и эту строку прикладывают к баг-репорту вместе с номером заказа и временем.
grep -i
grep -i line file1.txt ищет без учёта регистра. Чтобы найти ошибку в логе, подставляют слово вроде error или имя базы данных, которая отвалилась.
grep -v и grep -c
grep -v 1 file1.txt покажет строки, где нет единицы. grep -c line file1.txt посчитает строки с совпадением, а grep -ic line file1.txt сделает то же без учёта регистра.
grep -r
grep -r line folder1 ищет во всех файлах папки и выводит имя файла рядом с найденной строкой.
find по имени
find . -name file1.txt ищет файл в текущей папке и во вложенных, точка здесь означает текущую папку. find . -name "*.png" найдёт все файлы с расширением png.
find по типу
find . -type d -name "folder*" найдёт папки, имя которых начинается на folder. Шаблон со звёздочкой берут в кавычки.
find с удалением
find . -name "*.png" -delete -print удалит найденные файлы и выведет их имена, чтобы было видно, что именно удалено.
Процессы, ping и curl
Команда ps показывает процессы текущего терминала: идентификатор PID и название. С ключом u к ним добавятся владелец и загрузка процессора и памяти. Команда ps aux выведет все процессы всех пользователей, в том числе не связанные с терминалом. Таблицу процессов, которая обновляется в реальном времени, показывает top, а закрывается она клавишей q. Зависший или лишний процесс останавливают командой kill с его номером, например kill 52.
ping проверяет, отвечает ли сервер и как быстро. ping google.com в Linux отправляет пакеты без остановки, пока не нажать Ctrl+C, а потом выводит итог: сколько пакетов ушло, сколько вернулось, какой процент потерян и сколько времени это заняло. Высокий процент потерь говорит о нестабильном соединении или о проблемах на сервере, поэтому с ping начинают, когда сайт вдруг начинает тормозить.
curl отправляет запрос и выводит ответ сервера, по умолчанию методом GET. Мне для повседневной проверки API удобнее Postman, Fiddler или DevTools, но curl хватает, чтобы быстро проверить, уходят ли данные на сервер, и некоторые тестировщики работают в нём постоянно. Запросы в уроке идут к учебному API reqres.in. Учебные API со временем меняют правила, и если сервер отвечает ошибкой доступа, стоит заглянуть в его документацию, а ключ или токен передать в заголовке через -H.
Например, в веб-версии сервиса доставки экран заказов на тестовом стенде бесконечно показывает загрузку. ping -c 3 до сервера стенда проходит без потерь, значит, связь есть. curl -i с адресом запроса из DevTools (ключ -i добавляет к выводу код и заголовки ответа) возвращает код 502: сервер-шлюз не получил нормального ответа от сервиса заказов. С выводом curl в баг-репорте разработчики сразу видят, что искать нужно в сервисе заказов.
ping -c и ping -i
ping -c 3 google.com отправит только три пакета, а ping -i 3 google.com будет слать пакет раз в три секунды вместо одной.
curl -L
Если сайт перенаправляет на другой адрес, curl без ключей дальше не идёт. curl -L yandex.ru следует перенаправлениям и выводит HTML страницы.
curl --verbose
Показывает весь обмен: метод, версию HTTP, заголовки запроса вроде Host и User-Agent, код и заголовки ответа, а затем тело.
GET с параметрами
curl https://reqres.in/api/users вернёт первую страницу пользователей, а curl "https://reqres.in/api/users?page=2" вторую. Адрес с параметрами берут в кавычки, чтобы Bash не понял знаки ? и & по-своему.
POST с телом
curl -X POST https://reqres.in/api/login --data "email=eve.holt@reqres.in" --data "password=cityslicka" отправляет почту и пароль в теле запроса и получает в ответ токен. Без почты сервер вернёт ошибку.
Видеоуроки, шпаргалка и задания
Я разбираю Bash в мини-курсе из шести уроков на YouTube: установка, файлы и папки, перемещение и текстовые редакторы, поиск через grep и find, вывод и процессы, ping и curl. В 2023 году уроки вышли одним роликом, полным курсом. В бесплатном базовом курсе по тестированию тема открывается уроком "Установка и настройка bash", и после теории в нём есть задания. Дальше в модуле идут уроки о файлах и папках, текстовых редакторах, поиске файлов, командах с выводом и процессами, ping и curl.
Шпаргалка по Bash собирает команды, которые нужны в работе: посмотреть логи на сервере, найти файл, проверить права, остановить зависший процесс и отправить запрос к API без Postman. В тренажёре по Bash отрабатывают работу с файлами, поиск и процессы в командной строке.
- Урок курсаЭтот урок с заданиями – бесплатно
- Мой видеоурокустановка и настройка Bash
- Мой видеоуроккоманды ls, mkdir, rm
- Мой видеоуроккоманды mv, cp, nano, less, vi, cat
- Мой видеоурокпоиск через grep и find
- Мой видеоуроккоманды с выводом и процессами
- Мой видеоуроккоманды ping и curl
- Мой видеоурокBash для тестировщика, полный курс
- ШпаргалкаBash для тестировщика
- Тренажёрфайлы, поиск и процессы в Bash
- СтатьяGit и GitHub для тестировщика
- СтатьяЛоги для тестировщика
Курсы по теме
Вопросы и ответы
Зачем тестировщику Bash и командная строка?
Чтобы работать на серверах без графического интерфейса: ходить по папкам, читать логи и прикладывать нужные строки к баг-репорту, искать файлы, смотреть и останавливать процессы. На собеседовании junior-тестировщика часто спрашивают базовые команды.
Какие команды Linux нужно знать тестировщику?
Для навигации и файлов pwd, cd, ls, mkdir, touch, cp, mv и rm, для просмотра cat и less, для поиска grep и find, для процессов ps, top и kill, для сети ping и curl. Ещё пригодятся перенаправление вывода > и >> и вертикальная черта |.
Как установить Bash на Windows?
Через подсистему Windows для Linux: команда wsl --install в PowerShell от имени администратора ставит WSL и Ubuntu, а при первом запуске Ubuntu просит придумать имя пользователя и пароль. Другой вариант – установить Git, вместе с которым приходит Git Bash с большинством тех же команд.
Как найти ошибку в логе через терминал?
Командой grep: grep -i error app.log выведет все строки со словом error в любом регистре, а grep -r error logs найдёт его во всех файлах папки logs. Длинный лог удобно открыть через less и искать в нём косой чертой, набрав /error.
Чем > отличается от >> в Bash?
Знак > записывает вывод команды в файл и стирает всё, что в нём было. Знак >> дописывает вывод в конец файла. Например, echo "привет" > file.txt оставит в файле одну строку, а echo "привет" >> file.txt добавит её к уже записанным.
Как выйти из редактора vi?
Нажать Esc, чтобы вернуться в режим команд, и набрать :q. Чтобы сохранить файл и выйти, набирают :wq, а чтобы выйти без сохранения, набирают :q!.
Посмотреть программы курсов
Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.






