Уважаемые хабражители и жительницы, по работе пришлось столкнулся с таким вопросом: Существует ли фреймворк для нагрузочного тестирования, реализованный на Ruby(с условием, что этот фреймворк реализован не на ruby on rails, а именно на ruby)?
После непродолжительного исследования сложилось мнение, что таковых на данный момент не существует.
А что именно тестировать?
Можно элементарно завернуть спеки в бенчмарк и получить тестирование перфоманса
describe Foo do
context 'performance' do
it 'takes time' do
Benchmark.bm do |bm|
bm.report("test1") {10000.times do; do_something; end }
end
end
end
end
Можно конечно и бэнчмарком, но все таки хотелось бы делать это мультипоточно.
Тестировать нужно апликейшн сервер как со стороны апи, так и показатели перфоманса бэк-энда.
Я бы, все же, посоветовал не строить велосипеды, а воспользоваться профессиональными решениями для нагрузочного тестирования. В качестве нагрузочных приложений, посмотрите на или yandex-tank. В большинстве случаев, этими инструментами можно воспользоваться не написав вообще ни единой строчки кода.
>Весь фреймворк автоматизации реализован именно на нем.
Даже встроить что-то из apache jmeter или yandex-tank в свой фреймворк будет не так сложно как кажется, а в будущем избавит от ряда проблем, учитывая практически возможности этих инструментов.
Фреймворк для нагрузочного тестирования на ruby, уже, знаете ли, пахнет не хилым извращением=)
Против руби аргументов нет. Ровно как и достойных инструментов на нем. На других же есть. Можете взять уже готовые решения, да на самом деле абсолютно любые, хоть ab или siege и сделать для них обертку на ruby в свой инструмент автоматизации тестирования. Но вы должны понимать, что руки у вас будут развязаны на столько, на сколько это разрешает инструмент. Любой фреймворк будет хуже проф. решений, по точности нагрузки, по фичам, по возможностям, стабильности и производительности работы. Хуже community. Я не думаю что этот список стоит продолжать. Выбор за вами. Если цель понять СЕЙЧАС тянем или нет, ну можете использовать фреймворк. Но что будете делать завтра, когда добавите новый функционал, который не вписывается в фреймворк? Что если упретесь в фреймворк? Вы уверены в нем? В стабильности, в точности? Если что-то сломается, есть community?