6 инструментов-помощников для разработки и тестирования
Попросили специалистов Bell Integrator поделиться теми инструментами, которые могут быть полезными разработчикам и тестировщикам.
Руслан Комаров, ведущий инженер-программист, рекомендует инструменты для Java, backend-программиста
Testcontainers
Для кого предназначен: разработчики, тестировщики
Как и для чего используется: позволяет запускать настоящую БД, MQ, Selenium Web browser внутри Docker-контейнера. Применяется для написания интеграционных/UI/БД тестов на любом из JVM-языков.
Чем полезен в работе: при написании интеграционных тестов нередко встает вопрос – что делать с внешним ресурсом, таким как БД или очередь сообщений (MQ). Можно делать заглушку/mock или же применять embedded-версию. Но, к сожалению, эти варианты не всегда могут полностью заменить тот ресурс, который мы пытаемся таким образом сэмитировать. И тогда на выручку приходит testcontainers. С его помощью можно легко воссоздать рабочее окружение при запуске тестов (вплоть до минорной версии требуемого сервиса). Правда есть и минусы: замедляется время запуска и могут возникнуть сложности при конфигурации, что не так критично, поскольку делается единожды.
Где взять: https://www.testcontainers.org
Schemaspy
Для кого предназначен: разработчики, аналитики, тестировщики
Как и для чего используется: позволяет создавать автоматическую документацию по схеме БД – создает веб-сайт (локально), на котором есть описание таблиц со всеми столбцами и заданными ограничениями, а также ER-подобная схема со связями между таблицами.
Чем полезен в работе: поможет познакомиться со схемой БД на новом проекте, в генерации и публикации документации по БД для заинтересованных участников команды (тестировщики, аналитики).
Где взять: http://schemaspy.org
Денис Холмогоров, инженер-программист, рекомендует инструмент для Java-разработчиков, связанных с jvm-машиной, для языков Java, Kotlin
VisualVM (VVM)
Для кого предназначен: Java-разработчики
Как и для чего используется: без него невозможно обойтись при разработке и запуске как высоконагруженных сервисов, так и простых проектов на виртуальной машине Java (JVM).
Чем полезен в работе: VVM – это инструмент, который предоставляет визуальный интерфейс для отображения информации о Java-приложении, запущенном в реальном времени на JVM. Позволяет наблюдать за количеством потребляемой приложением памяти, нагрузкой на процессор, снять дамп приложения при «падении» для дальнейшего анализа и многое другое. Есть возможность профилировать приложения не только локально, но и удаленно. Анализируя полученные данные, мы можем «протюнить» приложение или определить проблему.
Пример из личного опыта: VVM помог справиться с «плавающей» проблемой падения сервиса из-за быстрой утечки памяти. Как это было: при разработке высоконагруженного сервиса, который получает маркет-дату с фондовой биржи, перерабатывает и отдает ее по веб-сокетным каналам другим сервисам, процесс стал в разное время завершаться с ошибкой. С помощью VVM я подключился к нашему сервису на удаленном сервере, в течение нескольких часов наблюдал за несколькими параметрами, такими как: нагрузка на процессор и потребление памяти. Уже при первых наблюдения стало понятно, что память и количество процессоров необходимо увеличить. Это помогло, но проблема осталась. Позже при разных кейсах работы приложения, а именно – отключении связанного сервиса, я обнаружил резкую утечку памяти, которая и завершала наше приложение с ошибкой. После определения симптомов с проблемой сразу разобрались. И это был далеко не единственный пример, когда мне на выручку приходил VVM.
Где взять: VVM находится в свободном доступе, а также поставляется вместе с Java Developer Kit с базовыми настройками и модулями. Есть возможность добавлять модули, например, для наблюдения за работой garbage collector.
Кирилл Баландин, инженер по автоматизированному и нагрузочному тестированию, рекомендует инструмент для тестировщиков НТ
Apache JMeter
Для кого предназначен: тестировщики (НТ).
Как и для чего используется: позволяет записывать скрипты разного уровня сложности, проводить нагрузочное тестирование и получать визуализированные данные по результатам НТ (таблицы, графики).
Чем полезен в работе: помогает решать не только основные задачи (проведение тестов), но и вспомогательные. Например, наполнение БД тестовыми данными напрямую, SQL-запросами, с использованием разного уровня параметризации (в том числе, чтение параметров из файла). На скриншотах ниже отображён графический интерфейс инструмента и пример отчёта, сформированного в html-формате самим инструментом:
Преимущества: данный инструмент находится в бесплатном доступе, он универсален и отвечает всем требованиям, предъявляемым со стороны НТ. Много возможностей для тюнинга как самого инструмента, так и отдельных скриптов. Позволяет сохранять полученные данные (интересующие нас) как в файлах разных форматов, так и на прямую в базу данных.
Недостатки: интуитивно менее понятен, чем платный аналог Loadrunner. Для разных задач необходимо применение определённых плагинов, которые могут являться устаревшими (со стороны производителя данного инструмента проводится поддержка только основного функционала).
Пример из личного опыта: стоит учесть, что в ходе эксплуатации Apache JMeter можно столкнуться с несколькими проблемами. Одна из них связана с устаревшим плагином для отправки сообщений в Kafka, вторая – с форматом сообщения для открытия websocket-соединения. Первая проблема была решена мной путём самостоятельной доработки плагина (части кода) при помощи Java. Вторую проблему решил при помощи создания сообщений в необходимом формате в JSR 223 pre-processor инструмента с использованием groovy.
Где взять: https://jmeter.apache.org/
Владимир Сабитов, инженер-программист, рекомендует инструмент собственной разработки для тех, кто работает с VS Code
Плагин vscode-favorites-panel
Для кого предназначен: JavaScript/TypeScript front-end-разработчики
Как и для чего используется: панель быстрого доступа к часто используемым каталогам, файлам, скриптам, сниппетам, командам VS Code
Чем полезен в работе: плагин разработан примерно год назад для упрощения работы с большим проектом. Используется для доступа к часто используемым каталогам, для запуска программ, для быстрого открытия избранных файлов, для поиска в определенных каталогах. Позволяет быстро запускать js-скрипты для внесения изменений в файлы проекта с целью облегчения разработки, тестирования и включения функционала. Решает такую проблему, как частое внесение в код изменений, которые не должны попасть в репозиторий, но требуются для локальной разработки.
Где взять: https://marketplace.visualstudio.com/items?itemName=sabitovvt.favorites-panel
Григорий Осипов, ведущий инженер-программист, рекомендует инструмент для backend-разработчиков
Hasura
Для кого предназначен: для разработчиков мобильных и Web-приложений, а также любых других приложений, использующих облачную базу данных.
Как и для чего используется: позволяет в несколько кликов реализовывать повторяющиеся задачи вроде CRUD, REST, RPC и т.д.
Чем полезен в работе: представляет собой среду для выполнения GraphQL запросов к базам данных и относится к классу продуктов «бэкэнд как услуга (BaaS)». Основным преимуществом использования Hasura является быстрота, с которой можно разрабатывать веб-приложения. Есть возможность работать с таблицами внешних баз данных, внешними сервисами, есть авторизация и аутентификация. И все это без необходимости написания кода.
Пример из личного опыта: в первый раз услышал про этот инструмент на хакатоне, впоследствии применял его в проекте. Считаю, что за подобными технологиями будущее разработки, так как они позволяют ускорить выведение на рынок новых сервисов, инкапсулируют техническую реализацию, сокращают время разработки повторяющихся операций.
Где взять: https://hasura.io/ (тут есть все необходимое: документация, YouTube-канал с большим количеством уроков)
Полная версия статьи тут