Programação & Data
Em busca dos bugs: 4 perguntas e respostas sobre testagem de software

A gente fala muito sobre profissões aqui no blog, não é mesmo? Já que estamos no início da semana, achamos que é de bom tom sugerir outra dica de carreira no mercado de tecnologia da informação.

Você já pensou em tornar-se um software tester ou testador de software? Também conhecida como engenharia de qualidade, esta profissão tem um potencial promissor para quem deseja trilhar uma trajetória bem-sucedida e (muitíssimo bem paga) em TI mesmo sem ter conhecimento aprofundado em programação.

Um software tester ou engenheiro de qualidade é responsável por planejar e coordenar atividades de testes ao longo do desenvolvimento de um software, revisar especificações de qualidade e documentos de projetos técnicos para fornecer respostas relevantes em tempo hábil. Resumindo, um testador de software sempre estará envolvido no estágio de desenvolvimento da garantia de qualidade de programas de computador.

Este profissional conduzirá testes automatizados e manuais para assegurar que o software criado pelos desenvolvedores seja adequado para sua finalidade. O software tester também deverá identificar possíveis bugs ou erros para que sejam removidos de um produto antes que esteja disponível para usuários comuns, ou seja, nós mesmos.

A testagem é como o design, sendo igualmente um trabalho muito criativo. Um engenheiro de qualidade deve compreender o sistema de um software como um todo, além de visualizar como suas partes individuais funcionam visando encontrar os pontos fracos e testá-los logo no início. É necessário ter bastante imaginação para refletir em diferentes cenários de teste que possam trazer resultados relevantes.
Como em todas as carreiras, há muitos aspectos que precisamos esclarecer. A área de testagem em software não é exceção.
Este assunto tem pano para manga, hein? Como em todas as carreiras, há muitos aspectos que precisamos esclarecer. A área de testagem em software não é exceção. A seguir, iremos responder 4 questões essenciais sobre esta área tão importante. Leia a seguir:

O que é mais caro: a testagem ou a programação?

Durante o processo de testagem de um software, os profissionais que atuam nesta função precisam ser remunerados. E é claro, muito dinheiro é gasto na correção de defeitos e principalmente bugs. Contudo, ignorar erros de programação pode custar ainda mais caro. Basta entender que mesmo pequenos errinhos nos códigos das empresas desenvolvedoras têm o potencial de causar danos gigantescos. Exemplos não faltam.

Em 1996, o fogute lançador Ariane-5 da Agência Espacial Europeia explodiu sozinho depois de sair de sua rota. Segundo a BBC, o desastre foi causado por um simples bug em um software, que fez cálculos errados ao se tornar sobrecarregado com números mais longos do que era capaz de suportar.

Em 1994, um erro "insignificante" foi encontrado em novos processadores da Pentium: era o escândalo do bug do ponto flutuante, uma espécie de erro no algoritmo dos novos processadores. A Intel na época negou que fosse algo sério e argumentou que um usuário comum encontraria esse erro uma vez a cada 27 mil anos. Todavia, os usuários ficaram indignados e exigiram dinheiro de volta. Como resultado, a empresa substituiu os processadores de todos. O erro custou à Intel aproximadamente US$ 470 milhões. Subestimaram o resultado dos testes.
Testes acontecem somente em softwares finalizados?

Falso. Os testes ocorrem em paralelo ao desenvolvimento dos sofwares. Quanto mais cedo os erros forem descobertos, mais fácil e barato será o processo de correção.

Portanto, ao desenvolver requisitos técnicos, um software tester poderá editar e complementar a documentação do projeto tanto quanto achar necessário. Mas se descobrir que há algo errado nos requisitos e o código já tiver sido escrito, as consequências serão complexas. Às vezes será até mesmo necessário reescrever o programa do zero, o que pode ser custoso.

Assim sendo, quando um código é desenvolvido, o teste é feito pelos próprios desenvolvedores e testadores. Ao verificar todos os módulos prontos, os programadores procuram erros no código, atualizam os bugs e aí testam os módulos novamente.

Em seguida, os testadores assumem o programa. Eles fazem uma verificação “externa”, ou seja, sem olhar para o código: trabalham com o programa da mesma maneira que o usuário faria, procuram bugs manualmente ou por meio de testes automatizados. Em seguida, eles passam informações sobre os erros encontrados para os desenvolvedores. E assim será com cada módulo até o final do desenvolvimento. É um processo trabalhoso, mas gratificante.
O que é TDD e BDD?

A gente precisa falar sobre o TDD: o desenvolvimento orientado a testes ou test driven development em inglês. No TDD, o programador primeiramente escreve um teste na linguagem de desenvolvimento para verificar algumas funções do futuro programa. Em seguida, ele aplica o código que executa as etapas necessárias para passar neste teste. Se este for bem-sucedido, o desenvolvedor passa para as próximas funções. Porém, o desenvolvimento orientado a testes também possui seus defeitos, embora seja uma técnica testada e aprovada por grandes empresas desenvolvedoras. Há basicamente uma diferença de abordagem: quando uma equipe de testagem vai exercer sua função, os profissionais desse time se preocuparão com o comportamento do sistema e não com os testes unitários.

Para complementar a aplicação do TDD e ajudar na comunicação entre desenvolvedores e testes, surgiu o behaviour driven development (BBD) ou desenvolvimento orientado ao comportamento. O profissional em testagem de software fará um passo a passo baseando-se o comportamento do usuário utilizando testes automatizados. Entretanto, alguns tipos de teste não podem ser realizados desta maneira. Por exemplo, a usabilidade e acessibilidade da interface do usuário só podem ser verificadas por um ser humano.
Um software sempre virá sem erros para o usuário?

Quando um programa é finalizado, este certamente terá sido testado em sua totalidade. Somente quando todos os bugs são corrigidos é que um software será lançado oficialmente ao cliente.  A gente sempre espera que um software esteja livre de possíves bugs. Porém, isso não acontece na vida real.

Até um pequeno de pequenas dimensões tem um grande número de combinações de dados de entrada. É praticamente impossível testar todas elas. Além do mais, o número de ações e movimentos possíveis do usuário no programa também é muito grande para uma verificação 100% completa.

E um milhão de testes não oferecem nenhuma garantia: o primeiro milhão de testes podem facilmente estar errados. Sendo assim, é justo afirmar que os testadores simplesmente não têm tempo suficiente para uma verificação profunda. Mas não se preocupe: ainda dá para arrumar possíveis bugs com atualizações. A gigante Apple faz isso frequentemente com o iOS, o sistema operacional de seus smartphones.
Invista numa carreira promissora e valorizada

O teste de software é a maneira mais fácil de começar uma carreira em TI, mesmo sem nenhuma habilidade em programação. Torne-se um profissional qualificado em uma das áreas mais requisitadas do mercado de tecnologia. Grandes empresas que constantemente buscam por QAs, pensando nisso lançamos o curso Profissão: Software Tester.

Ganhe experiência real no desenvolvimento de testes e padrões de qualidade de um software. Torne-se um tester capaz de testar aplicações de ponta a ponta com abordagens e resultados efetivos.


Neste curso, você irá domine os princípios do testing, como pirâmide e shift left. Também entenderá Ciclo de vida do desenvolvimento de Software, bancos de dados e autenticações, escreverá testes de cenário com Gherkin e muito mais.


Nossos especialistas: Fábio Araújo e José Ernesto Barbosa


Com mais de 20 anos na área de Tecnologia da Informação, sendo mais de 12 anos na Área de Qualidade de Hardware e Software, Fábio já passou por empresas como Dotz, pela rede de comunicação Valor Econômico e hoje atua como Chapter Lead de Qualidade na Via Varejo, com foco em melhoria de processos sistêmicos e em capacitar profissionais para a área.


Com 10 anos de experiência no mercado de TI, Ernesto ajudou na construção de softwares com qualidade e segurança em diversas áreas de negócios, como indústrias, bancos, financeiras, varejistas, entre outros. Bacharel em Ciência da Computação e mestre em Computação Aplicada, tem como paixão estimular a evolução técnica em equipes e comunidades de tecnologia.