OpenJDK TestFest

В эту субботу побывал на занятном мероприятии - OpenJDK TestFest. Занятным оно прежде всего было по своему формату - люди собрались для того, чтобы пописать тесты для Open JDK 8. Это второе подобное событие в мире, первое было в Лондоне, следующее планируется в Москве. Собралось около 20 человек, я ожидал что будет больше, организаторы отметили, что в Лондоне было примерно столько же. Посмотрим, сколько будет в Москве =).

Что интересного я вынес для себя:

  • функциональные тесты для OpenJDK пишутся не только с использованием всем известных junit, testng, но и не менее популярного фреймворка “public static void main()” (метод выполнился без исключений - значит тест прошёл успешно), а так же - SHELL-скриптов. И это несколько отталкивает. Если без SHELL-скриптов никак не обойтись, то первые три способа было бы неплохо привести к какому-то одному.
  • для исполнения всего этого безобразия есть разработанный SUN’ом opensource’ный швейцарский нож под названием jtreg
  • без mock’ов и matcher’ов писать тесты чертовски неудобно
  • инструменты в Oracle называют почему-то harness’ами =)
  • для тестирования производительности используются интсрументы harness’ы jmh и jcstress

Как оказалось, в OpenJDK есть области, совсем не покрытые общедоступными тестами (т.е. код этот тестируется конечно, но собственными силами и инструментами Oracle). После раздумий, за что же взяться, был выбран модуль java.sql, и мы в паре с java-разработчиком Фёдором по-быстрому его покрыли. Оказалось, что в этом модуле в основном интерфейсы, и единственный класс, заслуживающий внимания - DriverManager. Тем не менее всё это заняло прилично времени - т.к. сначала была пара докладов про процесс разработки OpenJDK в целом и интсрументы harness’ы, используемые в тестировании. Да и после написания теста пришлось изрядно повозиться, чтобы jtreg его таки-выполнил.

В целом мне очень понравился формат - этакий workshop, который еще и приносит пользу opensource-сообществу. Большое спасибо организаторам, ждём, когда тест вмёржат в codebase!

comments powered by Disqus