Всем доброго времени суток!
Дано:
- Полуготовый тестовый фреймворк на Java+TestNG+Selenium/Selenide с почти сформированной тестовой архитектурой;
- 2 QA-инженера со знанием JavaCore и слабым пониманием проектирования ПО;
- большая команда Java/Groovy разработчиков;
- большая потребность в инженерах по тестированию, т.е. возможность прибытия новичков;
Проблема:
- низкая скорость написания тестов;
- относительная сложность написания тестов (большая сложная система);
Варианты решения:
- поиск более легкого высокоуровневого языка под JVM с возможностью безболезненной интеграции с существующими тестами на Java
-- варианты языков: Clojure, Groovy, Kotlin.
Clojure - потому что наслышан про языки из lisp-семейства и про возможность легкого метапрограммирования и лёгкого создания DSL на языках этого семейства. Ну это не все фичи конечно же. Ещё плюсом может быть иммутабельность по дефолту и прочие возможности функциональщины. Сложность может представлять только не совсем привычный синтаксис языка, но я думаю это не такая уж большая проблема, т.к. эти особенности синтаксиса вполне можно объяснить за одну небольшую лекцию/daily + мне кажется, что поначалу может быть непривычно и сложно, но потом это окупится с лихвой (при проектировании тестов/фреймворка), но, возможно, я и не прав...
Groovy - история та же (возможность легкого метапрограммирования и лёгкого создания DSL), но синтаксис проще, но и есть подозрение, что язык предоставляет слишком большое количество развесистых граблей.
Kotlin - выглядит как самый вменяемый кандидат из всех, но лично я знаком с ним меньше всего. Радует то, что:
«В мае 2017 года компания Google сообщила, что инструменты языка Kotlin, основанные на JetBrains IDE, будут по стандарту включены в Android Studio 3.0 — официальный инструмент разработки для ОС Android.
На Google I/O 2019 было объявлено, что язык программирования Kotlin стал приоритетным в разработке под Android.»
и используется так же и для тестирования Android-приложений (тоже важный фактор).
Так же одним из не менее важных факторов при выборе является лёгкая интеграция и интероперабельность с джавой, существующими тестами, джавийными библиотеками.