Тестирование веб сервера nginx


В декабре 2013 года я был на конференции ruBSD, которую проводил Яндекс в Москве. В перерывах между докладами я увидел Игоря Сысоева (разработчика nginx) и не упустил возможность с ним поговорить о тестировании nginx. Но Игорь был занят и отправил меня к Максиму Дунину, хотя позднее всё равно подключился к разговору и сам ответил на пару вопросов. :) Меня интересовали процессы разработки и тестирование веб-сервера.

Процессы

Из процессов в принципе ничего интересного:

Любое изменение в коде ревьюится другим разработчиком, который дополнительно еще проверяет компиляцию.

Компания маленькая (15 человек) и как такового QA у них нет. Есть один человек, который пишет регрессионные тесты на новые фичи.

Тестирование

Для нагрузочного тестирования они используют HTTP benchmarking tool wrk, т.к. она лучше чем ab (наверное гибкостью, потому что в wrk можно задавать паттерны нагрузки на языке LUA).

Для выявления регрессий в производительности они используют codespeed.

Для функционального регресионного тестирования используют свой тестовый фреймворк, написанный на Perl.

Компиляцию проверяют на нескольких дистрибутивах Linux, нескольких версиях FreeBSD, Solaris, Windows (хотя сами же сказали, что особо никто не использует nginx под Windows). Приоритет отдается Linux, так как это мейнстрим.

Тестируют сборку с разными опциями в ./configure, которые включают/выключают фичи вебсервера. Я им предложил тестировать сборку со случайным набором опций (по аналогии с ‘make randconfig’ в Linux ядре), но отказались, соcлавшись на то, что для того, чтобы полностью протестировать все возможные комбинации нужно будет очень много времени.

Что меня сильно удивило, так это то, что они не тестируют nginx с конфигами от кастомеров, которые используют платную версию (Nginx Plus). Объясняют это тем, что: это увеличит время тестирования, конфиги время от времени изменяются и сложно иметь все используемые конфиги в актуальном состоянии. К тому же кастомеры перед обновлением на новую версию в production тестируют nginx самостоятельно на нескольких своих серверах и репортят им проблемы, если таковые нашлись.

Fin

Метки: opensource softwaretesting