Implantando Integração Contínua com Delphi

Como já é sabido por nossos clientes, a TecnoSpeed está constantemente mantendo seus produtos atualizados com a legislação vigente e com novas tecnologias. Porém, o que muitos não sabem é que por trás de tudo isso também estamos investido bastante na qualidade de nossos produtos.

A TecnoSpeed sempre teve como prática a utilização de testes automatizados como forma de garantia de qualidade. Por vezes, tivemos problemas com estes testes e em algumas ocasiões foi necessário reescrever conjuntos inteiros de testes, por encontrarem-se defasados.

Por bastante tempo estivemos incomodados com esta situação e passamos a buscar formas de solucionar este problema. A solução veio através da implantação de um servidor de integração contínua com a ferramenta Jenkins .

Nós já conhecíamos o Jenkins há algum tempo, porém a integração do Jenkins com o Delphi parecia impossível para nós. Até que, em 2014, conhecemos o framework de testes DUnitX , um fork de um framework bem conhecido para Delphi, o DUnit.

O DunitX nos permitiu integrar o resultado da execução de testes com o Jenkins, o que já foi um grande avanço. Faltava apenas conseguirmos medir o quanto nosso código estava coberto por testes. Para isso, utilizamos a ferramenta Delphi Code Coverage.

Com todas estas ferramentas em mãos, partimos para a integração entre elas, e aí a história começou a tomar novos rumos.

Como a TecnoSpeed melhorou a qualidade de seus produtos?

Percentual de testes passando e falhando
Ao final de 2014 a TecnoSpeed possuía uma qualidade média dos produtos de 73%, segundo nosso modelo de medição. Precisávamos de novas ações para elevar a qualidade dos produtos para que nossos clientes não fossem afetados e o servidor de integração contínua parecia uma ótima ideia.

Porém, tínhamos o desafio de migrar todos os nossos testes, que estavam escritos em DUnit, para o DUnitX. E tínhamos muitos testes para migrar. Porém, acreditamos na ideia e fizemos um grande esforço de migração, com o objetivo de manter nosso servidor de integração contínua rodando todos os testes, o tempo todo.

A migração deu bastante trabalho, porém o novo servidor logo de cara já nos trouxe informações que antes eram complicadas de se obter ou que ficavam “ocultas” em logs e bancos de dados. Agora, era possível saber em tempo real a saúde de nossos testes. Com isso foi visível a nossa mudança de comportamento e o foco que passamos a dar para a criação de testes que aumentassem a cobertura de nosso código. Finalmente tínhamos métricas em tempo real que nos mostravam a direção a seguir, era como se acendêssemos uma luz que havia estado apagada por bastante tempo.

O resultado, após alguns meses de trabalho pesado, foi muito gratificante: Aumentamos consideravelmente a quantidade e qualidade de nossos testes, a também aumentamos a cobertura de testes sobre o código dos produtos. Todos os testes foram migrados para o novo servidor e conseguimos enxergar os pontos fortes e fracos de cada um, criando planos de ação para eles. Hoje, nossos testes são executados várias vezes ao dia, e conseguimos saber imediatamente quando há algum problema. E por fim, a qualidade de nossos produtos subiu para 86% e tem se mantido alta.

Nosso desafio a partir de agora é continuar com a criação de testes cada vez mais especializados. Cada bug reportado em nossos produtos é analisado por nossa equipe e procuramos entender as causas e nosso processo prevê a criação de testes que evitem que o bug volte a acontecer.

Também começamos a automatizar alguns testes que ainda hoje precisam ser feitos manualmente e já conseguimos algum avanço nesta parte, porém ainda há um caminho considerável a percorrer.

Tudo isto é resultado da preocupação da TecnoSpeed em atender seus clientes da melhor maneira possível, se utilizando de tecnologias que venham de encontro às suas necessidades e procurando a excelência em todos os nossos processos!