Я и подумать не мог, что для bash существует фреймворк для написания юнит тестов. Но недавно в одном проекте увидел и, честно говоря поплыл. Начал разбираться, что за странные конструкции в скриптах и по итогу вышел на фреймворк который называется bashunit.
С одной стороны это удивительно и какое-то безумие, ну а с другой если в скрипте есть логика, почему бы не покрыть ее автотестами.
Bashunit это минималистичная библиотека тестирования Bash. Тестируйте свои bash-скрипты самым быстрым и простым способом.
Давай посмотрим как это работает и напишем первый тест:
Устанавливаем:
✅ Кто не знал, символ ~ означает домашнюю директорию текущего пользователя. А то сейчас начнешь искать, куда же эта тварь установилась.
Теперь создаем папку где будем складывать тесты: mkdir ~/tests. В этой папке создаем файл first_test.sh и закидываем в него такой код:
Получается такое: Переменная var у меня равна «hello», ожидаемый результат в тесте тоже «hello». Происходит сравнение и успешное завершение. Но если поменять значение var на что-то другое, то получим ошибку.
Весь список можешь посмотреть в официальной документации с наглядными примерами.
Это лишь верхушка айсберга, того что умеет bashunit, под капотом есть куда разгуляться и замутить настоящие, профессиональные юнит тесты.
Если ты девопс и делаешь какое-нибудь тестовое задание связанное с написанием скриптов. Добавь автотесты и твои шансы получить оффер намного повысятся. Техдиры такое любят. Сразу видно, что человек следует бест-практикам и работает на результат, а не за деньги📺
Конечно ты вряд ли будешь покрывать тестами свои скрипты, но для общего разнообразия имей в виду, что в bash такое возможно. Изучай.
💩 Официальный сайт фреймворка
🐱 Страница проекта на github
🐱 Старенькая альтернатива shunit2
Увидимся!
tags: #linux #bash #qa
—
💩 @bashdays
С одной стороны это удивительно и какое-то безумие, ну а с другой если в скрипте есть логика, почему бы не покрыть ее автотестами.
Bashunit это минималистичная библиотека тестирования Bash. Тестируйте свои bash-скрипты самым быстрым и простым способом.
Давай посмотрим как это работает и напишем первый тест:
Устанавливаем:
curl -s https://bashunit.typeddevs.com/install.sh | bash
ln ~/lib/bashunit /usr/local/sbin/bashunit
Все это добро залетит в папку: ~/lib/bashunit. Ну и симлинк сделаем для удобства. Если посмотреть исходник bashunit, то увидим что, оно тоже написано на bash. Bash тестирует bash, красиво.Теперь создаем папку где будем складывать тесты: mkdir ~/tests. В этой папке создаем файл first_test.sh и закидываем в него такой код:
#!/bin/bash
var="hello"
function test_var_equals_hello() {
assert_equals "hello" $var
}
Запускаем:cd ~/
bashunit ./tests
Получаем результат теста: All tests passedbashunit - 0.8.0
Running first_test.sh
✓ Passed: Var equals hello
Tests: 1 passed, 1 total
Assertions: 1 passed, 1 total
All tests passed
Time taken: 133 ms
Assert_equals принимает 2 параметра, первый = ожидаемый результат, второй = фактический результат.Получается такое: Переменная var у меня равна «hello», ожидаемый результат в тесте тоже «hello». Происходит сравнение и успешное завершение. Но если поменять значение var на что-то другое, то получим ошибку.
bashunit - 0.8.0
Running first_test.sh
✗ Failed: Var equals hello
Expected 'hello'
but got 'fuck'
Tests: 1 failed, 1 total
Assertions: 1 failed, 1 total
Some tests failed
Time taken: 128 ms
Помимо assert_equals, есть куча других методов проверки: assert_contains, assert_empty, assert_matches, assert_exit_code, assert_array_contains, assert_successful_code, assert_general_error, assert_command_not_found, assert_file_exists, assert_is_file и т.п.Весь список можешь посмотреть в официальной документации с наглядными примерами.
Это лишь верхушка айсберга, того что умеет bashunit, под капотом есть куда разгуляться и замутить настоящие, профессиональные юнит тесты.
Если ты девопс и делаешь какое-нибудь тестовое задание связанное с написанием скриптов. Добавь автотесты и твои шансы получить оффер намного повысятся. Техдиры такое любят. Сразу видно, что человек следует бест-практикам и работает на результат, а не за деньги
Конечно ты вряд ли будешь покрывать тестами свои скрипты, но для общего разнообразия имей в виду, что в bash такое возможно. Изучай.
Увидимся!
tags: #linux #bash #qa
—
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102
Пишу очередной урок для LF и понадобилось мне нагенерить мусорного трафика в прометеус. Чтобы ребятам показать визуально как это будет выглядеть в графане.
Тестировщикам (QA) кстати тоже эта хуйня отлично зайдет, хайлоад там устроить.
ㅤ
Для таких дел я обычно использую 2 утилиты.
Первая (Bombardier) отлично подходит для генерации паразитного http трафика.
Вторая (Stress) можно нагрузить ядра процессора и позырить чо будет. Ну или над жестким диском надругаться или памятью.
Ну а чтобы протестировать no space left on device просто генерим большой файлик удобным тебе способом.
Установка элементарная:
Эти утилиты отлично подходят для тестирования разнообразных алертилок, к примеру alertmanager. Нагнал синтетических данных, получил соплю в графане, алертилка тригернулась и накричала в чатик. Отладил, задеплоил.
Красота и удобно! Для этих дел есть еще всякие
Такие дела, бери на вооружение, мож сгодится в хозяйстве.
tags: #utilites #highload #qa
—
🔔 @bashdays➡️ @gitgate
Тестировщикам (QA) кстати тоже эта хуйня отлично зайдет, хайлоад там устроить.
ㅤ
Для таких дел я обычно использую 2 утилиты.
1. Bombardier
2. Stress
Первая (Bombardier) отлично подходит для генерации паразитного http трафика.
bombardier -c 125 -n 10000000 http://localhost:8080
Вторая (Stress) можно нагрузить ядра процессора и позырить чо будет. Ну или над жестким диском надругаться или памятью.
stress --cpu 4
stress --hdd 100
stress --cpu 4 --vm 2 --io 1 --timeout 20
Ну а чтобы протестировать no space left on device просто генерим большой файлик удобным тебе способом.
Установка элементарная:
apt install bombardier stress
Эти утилиты отлично подходят для тестирования разнообразных алертилок, к примеру alertmanager. Нагнал синтетических данных, получил соплю в графане, алертилка тригернулась и накричала в чатик. Отладил, задеплоил.
Красота и удобно! Для этих дел есть еще всякие
wrk, ab, hey и т.п. но с ними как-то у меня не сложилось.Такие дела, бери на вооружение, мож сгодится в хозяйстве.
tags: #utilites #highload #qa
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет друзья, Масим Братковский запилил для нас техническую статейку.
ㅤ
Сюда по классике не влезло, опубликовал в блоге. Идем читать.
Что делать если postman достал, а надо тестировать SOAP API.
Комментарий автора: Если вам интересно, давайте обратную связь, буду рад продолжить серию статей.
🛠 #dev #qa
—
✅ @bashdays ✅ @linuxfactory ✅ @blog
ㅤ
Сюда по классике не влезло, опубликовал в блоге. Идем читать.
Что делать если postman достал, а надо тестировать SOAP API.
Комментарий автора: Если вам интересно, давайте обратную связь, буду рад продолжить серию статей.
—
Please open Telegram to view this post
VIEW IN TELEGRAM