Я не хочу хвастаться, но у меня действительно одна из самых крутых работ в мире. Я инженер по качеству здесь, в DreamHost, но что это значит? Время от времени мне все еще задают вопросы об этом, и легко забыть, что не весь мир знает все о разработке программного обеспечения и о ролях, которые играют разные группы, поэтому я сделаю шаг назад и немного объясню, как здесь устроены дела.
Что именно, по вашему мнению, вы здесь делаете?
QA означает “Обеспечение качества”. Это может означать многое, но я предпочитаю думать об этом как о “испытании вещей перед нашими клиентами”. Более мягкий взгляд на это: тестирование изменений в нашем программном обеспечении перед их внедрением в производственные системы, чтобы попытаться выявить возможные проблемы. И проблем может возникнуть ОЧЕНЬ много. Позвольте мне провести вас через краткий обзор!
Изменения
DreamHost занимает команду разработчиков, работающих над продуктами вроде DreamObjects и DreamCompute, а также над множеством других проектов, о которых вы, возможно, знаете, таких как интеграция с внешними сервисами вроде CloudFlare.
Наши разработчики используют git для управления исходным кодом проектов, над которыми они работают. Большинство репозиториев для открытых проектов, к которым мы вносим свой вклад (или создаем), доступны на GitHub, но у нас также есть внутренний сервер, на котором работает Gerrit для рецензирования кода. Когда изменения отправляются на GitHub или Gerrit, Jenkins запускает автоматизированные тесты, написанные разработчиками и отделом качества, против нового кода. Jenkins интегрируется с Gerrit с помощью пары удобных плагинов и автоматически выставляет отрицательные оценки изменениям, которые нарушают тесты.
Счастливы навсегда?
Единственная проблема этого подхода заключается в том, что он работает только тогда, когда есть автоматизированные тесты для их выполнения Jenkins. Иногда изменяемый код не имеет автоматизированных тестов. Перед тем как эти изменения будут запущены, их должен просмотреть кто-то, кроме разработчиков. Как инженер по качеству, мне нужно знать несколько вещей, таких как:
Как это работало раньше? Как это должно работать сейчас? Есть ли какие-либо особые инструкции по настройке? Где я могу взять хороший буррито здесь?
(Буррито необходимы для процесса контроля качества.)
Вооружившись этими знаниями, я стараюсь как можно чаще использовать новую функцию. Например, одно из изменений, которое мы внесли в панель с момента моего прихода, это автоматическое (бесплатное!) предоставление DNS-хостинга при добавлении домена в аккаунт. Тестирование этого включало регистрацию новых доменов, а также передачу доменов от внешнего регистратора и проверку того, что DNS-хостинг автоматически активирован на новом домене. Обычно с первой попытки все не идеально, поэтому я отправляю сообщения об ошибках разработчикам, ответственным за новый код, и работаю с ними, чтобы убедиться, что мы согласны относительно того, что происходит, что должно происходить и что я сделал, что привело к сбою.
А затем…
Это не совсем вся история, но инженерия выпуска продукта заслуживает отдельного поста. Надеюсь, этот пост дал полезный общий обзор QA в DreamHost, и в будущих записях я расскажу более подробно о том, какие инструменты мы используем для автоматизированного тестирования.