Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 29, 2022 04:24 am GMT

Aprendendo sobre testes de softwares

Estudo programao desde 2017, mas s em 2020 que tive a necessidade de implementar testes nas aplicaes que eu desenvolvo. J tinha ouvido falar sobre esse assunto antes, mas nunca parei para estudar. Quando comecei a estudar com mais profundidade, tive muita dificuldade de entender alguns conceitos. Nesse artigo vou relatar minhas dificuldades, e dar algumas dicas para quem est estudando sobre testes de software.

O que so e quais os tipos de testes de softwares?

O primeiro passo que eu considero importante entender ao comear a estudar sobre testes, aprender o que so testes de softwares, para que servem e quais os tipos de testes que existem.
De uma forma resumida os testes de softwares servem para garantir que as funcionalidades que estamos implementando esto funcionando da forma esperada.

Pirmide de testes

Existem vrios tipos de testes de software, irei falar um pouco sobre os trs principais tipos baseado na pirmide de software.

Image description

  • Os testes E2E pretende testar todas as funcionalidades do seu software, indo do frontend at o acesso do banco de dados ou de um sistema externo. Esse tipo de teste pouco aplicado no dia-a-dia, pois ele tem um custo muito alto e leva muito tempo para executar.

  • Os testes de integrao visam testar partes da sua aplicao, por exemplo, a gerao de nota fiscal em um sistema de loja online. O teste de integrao ira executar o teste na classe de gerao de nota fiscal integradas com outras classes necessrias para executar essa ao. Esse tipo de teste possui um custo e tempo de execuo mdio, comparados aos testes de E2E voc ira implementar esse tipo de teste com mais frequncia, mas mesmo assim no ser to frequentemente.

  • Os testes de unidades, procura testar a menor parte funcional de um sistema, esse tipo de teste, voc implementa para testar uma classe ou ento uma funo, isolada de outras partes do sistema. Esse tipo de teste voc ira implementar frequentemente, pois ele possui um baixo custo de implementao e possui uma velocidade muito rpida de execuo.

Meus estudos sobre teste de software

Quando comecei no meu estgio em 2020, a pessoa que tava sendo minha mentora, pediu pra eu fazer um curso de cypress. At aquele momento eu no tinha tido nenhum contato com testes de softwares. Quando comecei a fazer as aulas achei incrvel o poder dos testes automatizados, uma das minhas tasks foi implementar testes de interfaces em algumas partes do sistema que a gente desenvolvia.

Com o passar do tempo comecei a escutar sobre TDD e entrou na minha lista de coisas para estudar. S em 2021 quando comecei em uma nova empresa, que comecei a olhar sobre TDD e procurar materiais para estudos, mas tive dificuldade de entender e saber como implementar. Nessa nova empresa eu escrevia testes de unidade frequentemente nas tarefas que eu trabalhava, mas tinha um pouco de dificuldade de criar um teste do zero. Sempre que ia implementar um teste, pegava como exemplo outros testes que algum j escreveu no projeto. Eu entendia o conceito de teste, tinha uma noo de como estruturar um teste, mas na hora de programar tinha dificuldade.

Dificuldades em aprender sobre testes

A minha maior dificuldade foi de aprender sobre TDD. O TDD uma metodologia de desenvolvimento que visa escrever o teste antes de implementar a funcionalidade. Comecei a procurar materiais sobre TDD. Estudei com livros, cursos, videos, artigos e outras formas. Mas era complicado, parecia que o conceito no entrava na minha cabea.

Em fevereiro de 2022 comecei a buscar por um novo emprego, e durante as entrevistas quando me perguntavam qual era a maior dificuldade que eu tinha, eu sempre falava que era em escrever os testes de software. Durante a entrevista para a vaga que estou trabalhando atualmente, uma das coisas definida de ser trabalhado quando eu comeasse na empresa, era de evoluir minhas habilidades em testes.

Durante meus estudos eu tentava implementar os conceitos de TDD que eu via, nos sistemas que eu estava desenvolvendo, mas sempre acabava preso em duas principais coisas. A primeira era de saber o que testar. No sabia quais as classes eu devia testar, quais os casos de uso criar para testar uma funcionalidade.

Outro conceito que tinha muita dificuldade de entender era o de mocks. Os mocks servem para simular aes de uma classe, como, por exemplo, o acesso ao banco de dados. Eu no sabia em que momento deveria utilizar o mock.

Superando as dificuldades

Como disse anteriormente, ao entrar na empresa nova, iria evoluir meus conhecimentos em testes de software e assim est sendo. A equipe que estou trabalhando est desenvolvendo projetos do zero, e com isso tive a oportunidade de participar desde a escolha da ferramenta utilizada para escrever os testes e o primeiro teste escrito na aplicao. Mas isso no quer dizer que voc precisa entrar em um projeto que est comeando, pra poder aprender sobre testes. Um dos conceitos que eu aprendi que testes bem escritos ajudam muito as pessoas novas que esto entrando no projeto. E esse um ponto que eu sempre levanto com o meu time quando estamos escrevendo os testes.

Durante esse tempo implementando testes, consegui amenizar as dificuldades que eu tinha ao entrar na empresa. Comecei a entender pra que serviam os mocks e quando utilizar. Uma das coisas que aprendi, foi que uma das dificuldades de utilizar mocks nos sistemas que eu desenvolvia, era pela forma que as classes estavam escritas.

Com o tempo e muita prtica consegui a habilidade de formular de maneira mais fcil os casos de uso que devem ser escritos.
Entender quais classes no devem ser testadas. Uma coisa que eu descobri que existe, foram os testes mutantes. Esse tipo de teste pretende testar os seus testes. Nessa thread do twitter que eu criei, explico um pouco sobre eles e materiais que voc pode utilizar pra aprender mais sobre eles.

Ao executar os testes mutantes na nossa aplicao, a gente descobriu vrias falhas nos testes que escrevemos. Logo foi criado uma task para poder refatorar os testes. E ali eu vi uma oportunidade de aprender mais sobre testes, como precisei refatorar boa parte dos testes e escrever novos casos de uso, consegui aprender muita coisa.

Diferena entre a teoria e a prtica

Uma coisa que percebi que dificultou meu aprendizado tambm, de tentar implementar na prtica tudo aquilo que vi na teoria. A teoria importante voc estudar e te ajuda a resolver muitos problemas, mas no dia-a-dia, voc vai adaptar ao que te deixa mais produtivo.

Um exemplo que eu tive foi o de TDD, depois de um tempo que eu percebi que eu no tinha que seguir a risca o TDD para escrever meus testes, o mais importante era entender o conceito e levar o princpio do TDD para a prtica.

E isso no fica preso apenas a testes, isso tambm se aplica a outros conceitos. Se voc uma pessoa iniciante no mundo de desenvolvimento, no se preocupa que com o tempo voc vai percebendo isso e aprendendo quando voc no deve seguir a risca o que voc aprender na teoria.

Material para estudar sobre testes

Nessa seo irei deixar materiais que me ajudaram a aprender sobre testes. Quando eu estava estudando sobre testes, foquei em TDD e testes para backend.

Dois conceitos importantes que eu percebi depois de um tempo que te ajuda a entender melhor sobre testes, Orientao a Objetos e Padres de projetos. Vou deixar dois materiais gratuitos sobre esses assuntos.

Curso de Orientao a Objetos (Curso)

Site sobre padres de projetos (Artigos)

Em relao ao TDD e testes em geral, voc vai descobrir que existem muitas ferramentas que variam de linguagem para linguagem. Quando eu estava estudando, na maioria das vezes utilizei Java/Kotlin com Junit. Mas tambm consumi materiais em outras linguagens/ferramentas, afinal o conceito de TDD seria o mesmo.

Tdd - Desenvolvimento Guiado Por Testes (Livro)

Test-Driven Development (Livro)

TDD Desenvolvimento de software guiado por testes (Curso)

Aprenda TDD na prtica (Artigo)

API em NodeJS com Clean Architecture e TDD (Curso)

Concluso

Eu ainda no sou um especialista em testes, ainda possuo dificuldades e sempre peo ajuda as pessoas do meu time que tem mais experincia com teste quando fico empacado em algo. Mas durante esses seis ltimos meses nessa nova empresa, consegui perceber a minha evoluo com testes e consegui colocar em prtica as coisas que eu estava estudando durante um ano.

Resolvi escrever esse artigo pra contar para vocs, sobre a minha experincia e falar pra voc que no precisa ficar se culpando ao demorar para entender um conceito. Eu passei mais de um ano estudando sobre teste e s nos ltimos meses que consegui entender com mais facilidade e colocar em prtica tudo aquilo que eu vi.

Obrigado por ler esse artigo e espero ter te ajudado de alguma forma. Qualquer dvida que voc tiver pode me mandar mensagem l na DM do meu twitter.

No esquece de curtir aqui no dev.to e compartilhar esse artigo com outras pessoas que voc acha, que pode tambm gostar de saber como hospedar um site gratuitamente.

At uma prxima <3


Original Link: https://dev.to/acaverna/aprendendo-sobre-testes-de-softwares-2b6a

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To