Поиск по сайту:

Как протестировать команды и программы Linux

Некоторое время назад я поделился несколькими альтернативами утилите командной строки top. Некоторые пользователи спрашивали меня, какой из этих инструментов лучше и на каком основании (например, функции, участники, количество активных лет, запросы страниц и т. д.) я сравнивал эти инструменты. Они также попросили меня поделиться результатами сравнительного анализа, если они у меня есть. К сожалению, в то время я не знал, как тестировать программы. В поисках простых и удобных инструментов для сравнения программ Linux я наткнулся на две утилиты с названиями 'Bench' и 'Hyperfine'. Это простые и удобные в использовании инструменты командной строки для тестирования команд и программ Linux в Linux и Unix-подобных системах.

1. Проверьте команды и программы Linux из командной строки с помощью Bench Tool

Утилита 'Bench' тестирует одну или несколько заданных команд/программ, используя библиотеку критериев Haskell, и отображает выходные статистические данные в простом для понимания формате. Этот инструмент может оказаться полезным, если вам необходимо сравнить аналогичные программы на основе результатов сравнительного анализа. Мы также можем экспортировать результаты в формат HTML, CSV или в шаблонный вывод.

1.1. Установить утилиту Bench в Linux

Утилита стенда может быть установлена тремя способами.

1. Использование Linuxbrew

Мы можем установить утилиту Bench с помощью менеджера пакетов Linuxbrew. Если вы еще не установили Linuxbrew, перейдите по следующей ссылке.

  • Linuxbrew — общий менеджер пакетов для Linux и Mac OS X

После установки Linuxbrew выполните следующую команду для установки Bench:

brew install bench

2. Использование инструмента стека Haskell

Сначала установите Haskell, как описано по следующей ссылке.

  • Начало работы с языком программирования Haskell

Затем выполните следующие команды для установки Bench.

stack setup
stack install bench

«Стек» установит стенд в ~/.local/bin или что-то подобное. Прежде чем использовать стендовый инструмент, убедитесь, что каталог установки находится в пути поиска исполняемого файла. Вам напомнят об этом, даже если вы забыли.

3. Использование менеджера пакетов Nix

Другой способ установить Bench — использовать менеджер пакетов Nix. Установите Nix, как показано по ссылке ниже.

  • Nix - мощный менеджер пакетов для Linux и Unix

После установки Nix установите Bench Tool с помощью команды:

nix-env -i bench

1.2. Тестирование команд и программ Linux с помощью Bench

Давайте проверим результат команды ls -al. Для этого запустите:

bench 'ls -al'

Пример вывода:

Проверить команду ls

Вы должны заключать команды в кавычки, когда используете с ними флаги/опции.

Аналогичным образом вы можете протестировать любые программы, установленные в вашей системе. Следующие команды показывают результаты тестирования программ «htop» и «ptop».

bench htop
bench ptop

Тестирование программ htop и ptop

Инструмент Bench также может тестировать несколько программ одновременно. Вот результат тестирования программ ls, htop, ptop.

bench ls htop ptop

Пример вывода:

Сравните несколько программ

Мы также можем экспортировать результаты теста в HTML, как показано ниже.

bench htop --output example.html

Чтобы экспортировать результат в CSV, просто запустите:

bench htop --csv FILE

Посмотреть раздел помощи:

bench --help

2. Протестируйте команды и программы Linux из командной строки с помощью Hyperfine

Hyperfine — это еще один инструмент для сравнительного анализа командной строки, созданный на основе инструмента «Bench», который мы только что обсуждали выше. Это бесплатная кроссплатформенная программа для сравнительного анализа с открытым исходным кодом, написанная на языке программирования Rust. Он имеет несколько дополнительных функций по сравнению с инструментом Bench, перечисленными ниже.

  • Статистический анализ по нескольким прогонам.
  • Поддержка произвольных команд оболочки.
  • Постоянная обратная связь о ходе выполнения эталонных тестов и текущих оценках.
  • Выполните прогрев перед фактическим тестом.
  • Команды очистки кэша можно настроить перед каждым запуском таймера.
  • Статистическое обнаружение выбросов.
  • Экспортируйте результаты тестов в различные форматы, такие как CSV, JSON, Markdown.
  • Параметризованные тесты.

2.1. Установите Hyperfine в Linux

Мы можем установить Hyperfine, используя любой из следующих методов.

1. Использование Linuxbrew

brew install hyperfine

2. Использование груза

Убедитесь, что вы установили Rust, как описано по следующей ссылке.

  • Установить язык программирования Rust в Linux

После установки Rust выполните следующую команду, чтобы установить Hyperfine через Cargo:

cargo install hyperfine

3. Использование вспомогательных программ AUR

Hyperfine доступен в AUR. Таким образом, вы можете установить его в системах на базе Arch, используя любые вспомогательные программы, такие как YaY, как показано ниже.

yay -S hyperfine

4. Загрузите и установите двоичные файлы

Hyperfine доступен в виде двоичных файлов для систем на базе Debian. Загрузите последнюю версию двоичного файла .deb со страницы релизов и установите его с помощью диспетчера пакетов dpkg. На момент написания этого руководства последней версией была 1.4.0.

wget https://github.com/sharkdp/hyperfine/releases/download/v1.4.0/hyperfine_1.4.0_amd64.deb
sudo dpkg -i hyperfine_1.4.0_amd64.deb
sudo apt install -f

2.2. Тестирование команд и программ Linux с использованием Hyperfine

Чтобы запустить тест с использованием Hyperfine, просто запустите его вместе с программой/командой, как показано ниже.

hyperfine 'ls -al'

Тестирование команд с использованием сверхтонкого

Протестируйте несколько команд/программ:

hyperfine htop ptop

Пример вывода:

Протестируйте несколько программ с помощью Hyperfine

Как вы можете видеть в конце вывода, Hyperfine упоминает: 'htop работал в 1,96 раза быстрее, чем ptop', поэтому мы можем сразу сделать вывод, что htop работает лучше, чем Ptop. Это поможет вам быстро определить, какая программа работает лучше при сравнении нескольких программ. Однако мы не получаем такого подробного вывода в утилите Bench.

Hyperfine автоматически определит количество запусков для каждой команды. По умолчанию он выполнит не менее 10 тестов. Если вы хотите установить минимальное количество запусков (например, 5 запусков), используйте -m/-- параметр min-runs, как показано ниже:

hyperfine --min-runs 5 htop ptop

Или,

hyperfine -m 5 htop ptop

Аналогично, чтобы выполнить максимальное количество запусков для каждой команды, команда будет такой:

hyperfine --max-runs 5 htop ptop

Или,

hyperfine -M 5 htop ptop

Мы даже можем выполнить точное количество запусков для каждой команды, используя следующую команду:

hyperfine -r 5 htop ptop

Как вы, возможно, знаете, если время выполнения программы ограничено дисковым вводом-выводом, на результаты тестирования могут сильно влиять дисковые кэши и то, являются ли они холодными или теплыми. К счастью, у Hyperfine есть возможность выполнить определенное количество запусков программы, прежде чем приступить к фактическому тестированию.

Чтобы выполнить ЧИСЛО прогонов (например, 3) перед фактическим тестом, используйте -w/--warmup вариант, как показано ниже:

hyperfine --warmup 3 htop

Как и утилита Bench, Hyperfine также позволяет экспортировать результаты тестов в заданный файл. Мы можем экспортировать результаты в форматы CSV, JSON и Markdown.

Например, чтобы экспортировать результаты в формате Markdown, используйте следующую команду:

hyperfine htop ptop --export-markdown <FILE-NAME>

Дополнительные параметры и подробности использования см. в разделе справки:

hyperfine --help

И это все на данный момент. Если вы когда-либо оказывались в ситуации, когда вам нужно было протестировать аналогичные и альтернативные программы, эти инструменты могут вам помочь.

Ресурсы:

  • Репозиторий Bench на GitHub
  • Репозиторий Hyperfine GitHub

Статьи по данной тематике