Guia de Linguagem

Testes e DevOps


Neste Guia de Referência você encontrará diversos conteúdos sobre Testes, DevOps e Integração Contínua, tópicos fundamentais na carreira do programador Java.

Introdução aos Testes

Geralmente presentes em todas as etapas do desenvolvimento, testes asseguram que cada parte do sistema está funcionando de acordo com o esperado. Atualmente, entretanto, esse processo vai além da funcionalidade, procurando validar também usabilidade, performance, entre outras características desejáveis em uma aplicação de qualidade. Os artigos abaixo te apresentarão aos diferentes tipos de testes:

Testes Unitários

Imagine se todas as peças de um carro fossem testadas de uma só vez? O resultado poderia ser um desastre devido à complexidade desse artefato. A fim de antecipar falhas e garantir a qualidade, os testes unitários se concentram na menor unidade em sistema sistema. Apresentar essa técnica é papel do seguintes curso:

E para complementar, indicamos os seguintes artigos:

Test-Driven Development - TDD

TDD é uma técnica de desenvolvimento de software na qual o teste é criado antes da funcionalidade ser codificada. Apesar de parecer contraintuitivo a princípio, muitos têm adotado o desenvolvimento baseado em testes devido às suas vantagens, como menor quantidade de falhas apresentadas, possibilidade de reavaliar durante o desenvolvimento tanto as regras de negócio quanto a modelagem da aplicação, além da certeza de que cada funcionalidade do sistema estará documentada através de um ou mais testes. Conheça essa técnica no curso:

Para saber mais consulte também os artigos:

Behavior-Driven Development - BDD

BDD é um conjunto de práticas de engenharia de software projetado para ajudar as equipes a construir e entregar mais rápido software de alta qualidade. Além de proporcionar uma melhor integração entre programadores/testadores, o BDD procura facilitar a codificação das regras de negócio. Para isso é utilizado, entre outras técnicas, um vocabulário comum para descrever a funcionalidade, conforme demonstrado nos artigos abaixo:

Testes de Integração

Dentre as diferentes etapas de teste, nesta os módulos são combinados e testados em grupo. Estes testes ocorrem após a realização de todos os testes unitários e antecede os testes de sistema, a fim de verificar os requisitos funcionais, de desempenho e de confiabilidade na modelagem do sistema. Com ele é possível descobrir erros de interface entre os componentes do sistema. Acompanhe os artigos abaixo para ficar por dentro desse tema:

Testes Funcionais

A fim de permitir encontrar as não conformidades em relação aos requisitos do sistema, os testes funcionais, ou testes de caixa preta, como também são chamados, procuram avaliar como o sistema se comporta ao receber dados diferentes do esperados. Durante essa etapa observamos se o sistema acata os dados incorretos, falha, alerta o usuário, etc. Para conhecer melhor essa técnica acompanhe os seguintes artigos:

Testes de desempenho, carga e stress

Os testes de performance, também chamados testes de carga, têm por objetivo submeter o software a situações intensas de uso e avaliar seu comportamento. Esse tipo de teste é muito comum em aplicações web, que são submetidas a um grande número de requisições para verificar se o servidor suportará tamanha carga. Nesta etapa normalmente são utilizadas ferramentas específicas que simulam o uso da aplicação em grande escala, como você verá nos artigos abaixo:

Testes automatizados

Durante o desenvolvimento de um software vários testes podem ser realizados e normalmente cada um será executado várias vezes. A automação desse processo visa reduzir o tempo gasto nessa etapa, bem como reduzir a probabilidade de falha humana. No entanto, nem todo teste pode ser feito dessa maneira com facilidade, portanto é importante planejar adequadamente e usar ferramentas eficientes.

Testes na Prática

Aqui separamos um conteúdo adicional para que você possa aprofundar seus estudos sobre testes de software.

Introdução ao DevOps

Em um modelo DevOps as equipes de desenvolvimento, operações e infraestrutura são integradas a fim de permitir a otimização e o aperfeiçoamento de produtos em um ritmo mais acelerado. Do ponto de vista do negócio, essa melhor colaboração permite uma vantagem estratégica sobre empresas que utilizam modelos tradicionais. Conheça a cultura, assim como as práticas e ferramentas envolvidas nessa metodologia nos artigos:

DevOps na Prática

Reunimos nesta seção mais alguns posts que lhe ajudarão a compreender conceitos relacionados a DevOps, assim como ter uma visão mais detalhista, com base em estudos aplicados, de como obter mais dessa prática de desenvolvimento de software.

Integração Contínua

Integração contínua é uma prática dentro da DevOps que procura criar a cultura de “entregar com frequência”. Nela, os programadores utilizam um repositório central para o qual enviam alterações continuamente. Com isso é possível identificar falhas mais rapidamente, melhorando a qualidade do software, reduzindo o tempo entre as atualizações. Os artigos a seguir trazem uma apresentação completa dos conceitos inerentes a esta prática:

Ferramentas

Por exigir muita disciplina e um constante acompanhamento, grande parte das tarefas definidas na DevOps são automatizadas. Com isso a equipe pode se dedicar a entrega e deixar o início dos testes, construção da aplicação e relatórios de falhas para um sistema especialista. Esta seção reúne as mais utilizadas dentre essas aplicações.

Jenkins

Com o Jenkins é possível agendar o início dos testes, bem como criar alertas de falhas, erros de compilação, entre outras, para as equipes responsáveis. Saiba mais sobre o Jenkins nos artigos:

Hudson

Hudson é uma ferramenta de integração contínua de código aberto, criada pela Sun e atualmente mantida pela Eclipse Foundation em parceria com a Oracle. Atualmente apontado como um dos servidores de mais fácil implementação e baixa curva de aprendizado, suas funcionalidades são exploradas no artigo:

Apache Software Foundation

Responsável por projetos de código aberto como Tomcat, Cordova, Hadoop e muitos outros casos de sucesso, a Apache Software Foundation possui inúmeras ferramentas para integração contínua. Confira as principais dentre elas nos artigos:

Integração contínua na prática

A seguir reunimos mais alguns posts que abordam a integração contínua na prática:

Mais sobre Java

Além material sugerido nesse guia, a DevMedia publica com frequência novos conteúdos sobre Java, os quais você pode conferir nos Guias de Consulta abaixo:

Além disso, você pode conferir todo o conteúdo de Java clicando aqui.

Ficou com alguma dúvida?