Durante o desenvolvimento de software é regra que exista uma equipe trabalhando em conjunto em diversos módulos, algumas vezes criados a partir de diferentes tecnologias e com distanciamento de outras partes. É fácil imaginar os problemas que podem surgir durante este processo, como trabalho duplicado, desencontros de execução e incompatibilidades entres as diversas frentes de desenvolvimento. Buscando resolver alguns destes problemas é que foram inventadas metodologias para o teste de software.

Testes de software tornam possível para qualquer pessoa que faz parte da equipe de desenvolvimento e executa os mesmos testes, garantir que suas alterações não vão atrapalhar o bom funcionamento do programa, que os módulos deste sistema continuam funcionando como deveriam e que novas funções se integrem perfeitamente a todo o trabalho já executado.

Processo simplificado de desenvolvimento/teste de software

Tipos de teste

É importante notar que existem outros tipos de testes que podem ser feitos durante a execução de um projeto, dentre eles podemos citar os testes de usabilidade (quão fácil é utilizar este sistema), acessibilidade, entre outros. No entanto, alguns testes não fazem parte da rotina de um programador, uma vez que devem ser executados por agentes externos e seus resultados antes de serem aplicados no código devem ser analisados por profissionais de diferentes perfis. A seguir estão listados os testes que fazem parte do dia a dia de um programa em desenvolvimento, e que devem ser executados exaustivamente pelos programadores.

Testes Unitários: Estes testes são executados em pequenas partes do código para garantir que funções especificas e não dependentes (que não utilizam outras partes do programa) funcionam corretamente. Este tipo de teste em geral é utilizado para funções simples, como junção de dados ou cálculos, uma vez que as partes testadas não dependem de outras partes do software.

Testes de Integração: São testes que visam testar o funcionamento entre os diversos módulos de um programa, buscando determinar se a comunicação e a troca de dados está funcionando corretamente. Estes testes em geral se concentram em módulos específicos para garantir que suas dependências retornem os valores desejados, sendo uma parte muito importante a garantia de que o comportamento seja o esperado mesmo durante erros.

Testes de aceitação: É possível que mesmo após a execução dos testes anteriores, um software que passe em todos os casos de teste contenha falhas não previstas durante sua programação, e por isso se faz necessário a execução dos testes de aceitação. Estes testes são feitos em geral pelos usuários alvo do sistema, que testam o seu uso em situações reais para que em caso de falhas sejam feitas alterações antes do inicio do seu uso extensivo.

Além disso é possível que testes de software sejam executados de diferentes maneiras, dependendo do ambiente em que os mesmos estão inseridos. Uma vez que testes unitários e de integração possuem conjuntos de entradas e saídas já esperadas, é possível que os mesmos sejam automatizados através de outros programas, que permitem a execução do sistema a ser testado com as entradas definidas pelo desenvolvedor, para em seguida analisar as saídas produzidas de acordo com as regras pré-estabelecidas.

Entendendo o que são testes de software e qual sua função em um projeto, se torna fácil enxergar como estes são importantes durante os ciclos de desenvolvimento, tornando-o mais ágil e seguro, ao contornar possíveis falhas de comunicação e execução dentro de uma equipe de desenvolvimento. Testes de software garantem a compatibilidade entre as mudanças nos diversos ciclos e ajudam a garantir o melhor resultado possível para um projeto, inserindo ativamente tanto os desenvolvedores quanto o usuário no processo de melhoria de um sistema.


Este texto é uma breve introdução à o que são testes e como eles podem ajudar a executar a criação de um software. Na parte 2 entraremos em detalhes sobre os tipos de execução destes testes (automatizados ou não, testes white, gray e black-box), com exemplos reais encontrados durante o desenvolvimento de novas aplicações.

Launchpad

Tecnologia, negócios e desenvolvimento pessoal em uma só plataforma.

Karl Marx Alexander

Written by

The less smarter and Brazilian Feynman, Product Owner at @espressolabs

Launchpad

Launchpad

Tecnologia, negócios e desenvolvimento pessoal em uma só plataforma.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade