QA na DreamHost

by Guest Author
QA na DreamHost thumbnail

Não quero me gabar, mas acontece que tenho um dos trabalhos mais legais do mundo. Sou engenheiro de QA aqui na DreamHost, mas o que isso significa? Ainda recebo perguntas sobre isso de vez em quando, e é fácil esquecer que o mundo inteiro não sabe tudo sobre desenvolvimento de software e os papéis que diferentes grupos desempenham, então vou dar um passo para trás e explicar um pouco sobre como as coisas funcionam aqui.

O que exatamente você diria que faz aqui?

Office-Space-homies4-1024x576

QA significa “Garantia de Qualidade”. Pode significar muitas coisas diferentes, mas a maneira como gosto de pensar é “quebrar as coisas antes de nossos clientes”. Uma maneira mais suave de ver isso: testar alterações em nosso software antes de implementá-las nas máquinas de produção, para tentar capturar coisas que poderiam dar errado. E há MUITAS coisas que podem dar errado. Deixe-me guiá-lo por uma visão geral rápida!

Ch-ch-changes

david-bowie-changes-resized-600

DreamHost conta com uma equipe de desenvolvedores, trabalhando em produtos como DreamObjects e DreamCompute e todos os tipos de outros projetos dos quais você pode estar ciente, como a integração com serviços externos como o CloudFlare.

Nossos desenvolvedores usam git para gerenciar o código-fonte dos projetos em que trabalham. A maioria dos repositórios de projetos de código aberto que contribuímos (ou criamos) estão disponíveis no GitHub, mas também temos um servidor interno executando Gerrit para revisão de código. Sempre que mudanças são enviadas para o GitHub ou Gerrit, Jenkins executa testes automatizados escritos pelos desenvolvedores e QA contra o novo código. Jenkins integra com Gerrit por meio de alguns Plugins úteis, e automaticamente vota contra mudanças que quebram os testes.

Felizes para sempre?

O único problema com essa abordagem é que ela só funciona quando existem testes automatizados para o Jenkins executar. Às vezes, o código que está sendo alterado não possui nenhum teste automatizado. Antes que essas mudanças possam ser implementadas, elas precisam ser analisadas por alguém além dos desenvolvedores. Como engenheiro de QA, eu preciso saber algumas coisas, como:

Como isso funcionava antes? Como deveria funcionar agora? Existem instruções especiais de configuração? Onde posso conseguir um bom burrito por aqui?

(Burritos são essenciais para o processo de QA.)

Armado com esse conhecimento, tento exercitar a nova funcionalidade o máximo que posso. Por exemplo, uma das mudanças que fizemos no painel desde que comecei aqui é o DNS hosting automático (gratuito!) quando um domínio é adicionado a uma conta. Testar isso envolveu registrar novos domínios, assim como transferir domínios de um registrar externo, e garantir que o DNS hosting fosse ativado automaticamente no novo domínio. Geralmente, as coisas não são perfeitas na primeira tentativa, então eu reporto os bugs aos desenvolvedores responsáveis pelo novo código e trabalho com eles para garantir que estamos em acordo sobre o que está acontecendo, o que deveria estar acontecendo, e o que eu fiz que causou o problema.

E então…

Essa não é exatamente a história completa, mas a engenharia de lançamento vale uma postagem inteira por si só. Espero que esta postagem tenha fornecido uma visão geral útil sobre o QA na DreamHost, e em futuras entradas irei detalhar mais sobre quais ferramentas usamos para testes automatizados.