VAGAS DE EMPREGO

balta.io balta.io
  • Cursos
  • Carreiras
  • Para sua Empresa
  • Livros
    • Background Services
    • Blazor com .NET 8
    • Segurança em APIs
    • Futuro do C# 12
    • Nullable Types
    • Clean Code
  • Blog

Seja Premium
balta.io

  • Cursos
  • Carreiras
  • Para sua Empresa
  • Agenda
  • Livros
    • Background Services
    • Blazor com .NET 8
    • Segurança em APIs
    • Futuro do C# 12
    • Nullable Types
    • Clean Code
  • Blog
  • Player
Seja Premium

Entre ou Cadastre-se

  • Home
  • Artigos
  • Eu não tenho tempo para testar


👉 Temos uma versão mais atualizada deste artigo no nosso novo Blog

Eu não tenho tempo para testar

Quantas vezes você ignorou os testes, quantas vezes começou um projeto com testes de unidade e abandonou no meio do caminho por falta de tempo?

Testar é polir sua aplicação, e ao mesmo tempo que isto toma tempo, é isto que difere seu produto dos concorrentes.

Pare de remover tempo das tarefas de testes

É incrível! O tempo aperta e o primeiro item a ser descartado é o teste de unidade. A tarefa que foi estimada em 8 horas e agora atrasou, ao invés de cumprir o prometido e testar, usamos a desculpa “está atrasado” e deixamos os testes de lado.

Muitas funcionalidades, deixam para ser testadas no final da Sprint e a mesma história se repete. 40 horas para produzir uma funcionalidade, 1 hora para testá-la.

Seja sincero, você acha que uma entrega com o mínimo de testes possíveis, tem chances de dar certo? De passar tudo redondo?

Talvez, quando seu cliente recebe um bug, ele está tão acostumado com erros, que nem se manifesta mais. Não significa que ele está feliz e satisfeito, mas sim que já desistiu de brigar por algo melhor.

Não testar por estar atrasado é a mesma coisa que sair de casa com o tanque na reserva e não parar no posto de gasolina para “não perder tempo”.

Se você já atrasou, muitas vezes para entregar algo melhor, entregue ao menos algo testado. Se você sempre remover tempo dos testes VOCÊ NUNCA TERÁ TEMPO PARA TESTAR.

Esqueça os CRUDs

Já rodei muitas empresas fazendo consultoria, e muitas delas falando sobre DDD, domínios ricos e outras palavras bonitas.

Em diversos cenários, vi times implementando interfaces, modelando entidades, aplicando Design Patterns no cadastro de categoria, de estado civil, de unidade de produto. Estes itens não têm sequer regras de negócio!

Me lembro de chegar em um cliente e ele comentar que 90% do sistema dele era CRUD apenas, e realmente era. Sentamo-nos na frente do computador, escrevemos as entidades ANÊMICAS, geramos o banco e Scaffold da API. Pronto, 90% do sistema estava concluído, em menos de duas horas.

Se você não tem regras de negócio, não implemente complexidade. Se tem apenas validações simples, se são apenas entidades simples, seja simples com elas e economize este tempo.

Nesta simples decisão, 90% do projeto de seis meses estava pronto, em um dia, sobrando assim seis meses para o que realmente importava, a modelagem do domínio, com testes de unidade.

Talvez você esteja gastando tempo (e esforço) na parte errada do seu sistema, e por este motivo VOCÊ NUNCA TERÁ TEMPO PARA TESTAR.

SOLID, Clean Code

Um código bom é um código testável! Eu sempre digo esta frase e sempre que crio algo eu penso em como vou testá-lo, se está fácil de entender.

SOLID e Clean Code são dois assuntos batidos pela comunidade, com muitos artigos sobre o assunto e até cursos aqui no balta.io (1975 – Modelando Domínios Ricos), mas será que são realmente utilizados no dia-a-dia?

Quanto mais tempo você “gasta” escrevendo um código utilizando estes padrões, mais fácil serão seus testes de unidade, mais simples serão de testar.

Se você não se prende a escrever um bom código, VOCÊ NUNCA TERÁ TEMPO PARA TESTAR.

A propósito, se tem um curso MANDATÓRIO para todo Dev, este é o 1975 - Modelando domínios ricos, que está GRATUITO no balta.io.

Curso 1975 - Modelando Domínios Ricos

Regras de Negócio

Quantas vezes você já ouviu que a regra de negócio deve permanecer na aplicação, mais especificamente no domínio? Mas por quê? Qual real motivo desta afirmação?

Com certeza, o negócio é o pilar da empresa, é o motivo pelo qual o software está sendo construído, e o domínio é o pilar do software, é o coração dele, então obviamente as regras ficam ali.

Parte está correta nesta afirmação, mas a meu ver, trazemos as regras para a aplicação pois a OOP é mais flexível que um MER, o C# é mais poderoso que o T-SQL e principalmente porque podemos testar unitariamente nossas entidades e regras.

Se você faz todo esforço para trazer as regras para seu domínio e não executa testes de unidade, você está perdendo a melhor parte desta mudança.

Dependências Externas

Você provavelmente já ouviu dizer que os domínios não devem ter dependências externas, apenas do CLR, que deve ser o mais puro possível.

As dependências externas, além de trazer acoplamento ao nosso domínio, trazem também a dificuldade na hora de testar, e lembre-se, um bom código é um código testável.

Utilize sempre interfaces, dependa sempre de abstração e não de implementação e mantenha seu domínio sempre livre de dependências externas.

Se você precisa de informações que vem do banco de dados ou mesmo de serviços externos, deixe-as nas assinaturas dos métodos. Não é problema do domínio resolver isto, afinal, ele não precisa saber de onde vem a taxa XYZ, ele só precisa saber como utilizá-la no cálculo.

Códigos Testáveis

Se você chegou até este ponto, significa que já tem insumo suficiente para escrever um código testável, utilizando SOLID, Clean Code e afins.

Mas o principal ponto na escrita de um código testável é pensar em como ele será testado, calcular o tempo de escrita e execução dos testes, além da criação do código.

Sei que muitas vezes deixamos de lado esta estimativa, mas ela é importante. Embora aplicando os conceitos anteriores os testes se tornem mais fáceis, ainda leva tempo escrever bons testes de unidade.

Então não deixe de lado a estimativa para escrever BONS testes de unidade, leve em conta o tempo necessário para testar, refatorar os testes e tudo mais.

Curso 7182 - Refatorando para Testes de Unidade

Cultura de Testes

A diferença entre os testes serem uma CULTURA na sua empresa ou serem apenas TAREFAS é que a CULTURA SEMPRE SERÁ LEVADA A SÉRIO.

Cultura é aquilo que está no sangue, que é mantido não importa a situação. Um time que tem uma forte cultura de testes, entende sua importância e não deixa uma entrega sem seus testes de unidade, mesmo que o prazo esteja apertado, ou mesmo já tenha estourado.

Implementar uma cultura de testes também não é um trabalho fácil. Todos os envolvidos têm que estar cientes das vantagens e principalmente tem que acreditar que é algo que funciona. Se você não acredita que testes de unidade são importantes, você sempre terá uma desculpa para não os escrever.

Uma dica é começar testando o mais importante, algo que envolva financeiro por exemplo, que não pode ocorrer uma falha, um cálculo importante.

De fato, as vezes é complicado enxergar a necessidade dos testes e faço até uma analogia ao seguro automotivo. Enquanto você não tem seu carro roubado ou bate ele, parece que todo dinheiro investido no seguro não tem valor algum.

À medida que, ao modifica uma simples linha de código na sua aplicação, no contexto A e um teste no contexto B, que não tem nada a ver com a modificação falhar, todos se darão conta da importância de ter uma boa cobertura de testes.

Conclusão

Quase tudo pode ser testado e os testes não tomam tempo, talvez você esteja focando em algo que toma mais tempo do que deveria.

Foque sempre no seu domínio, escreva códigos legíveis, testáveis e será muito fácil testá-los unitariamente.

Lidere uma cultura de testes no seu ambiente de trabalho, seja você a mudança que espera que aconteça.

Populares

Priority Queue

Priority Queue ou fila prioritária é um tipo de lista inclusa no C# 10 que permite que seus itens...


Implicit Operators no C#

Implicit Operators permitem adicionar comportamentos de conversão a objetos Built In ou complexos...


ASP.NET 5 – Autenticação e Autorização com Bearer e JWT

Este artigo atualmente utiliza a versão 5.0.0-rc.1 do ASP.NET/.NET, o que significa que ainda não...


Clean Code - Guia e Exemplos

Saiba como manter seu código limpo (Clean Code) seguindo algumas práticas sugeridas pelo Robert C...


Git e GitHub - Instalação, Configuração e Primeiros Passos

Git é um sistema de controle de versões distribuídas, enquanto GitHub é uma plataforma que tem o ...


Compartilhe este artigo



Conheça o autor

André Baltieri

André Baltieri

Microsoft MVP

Me dedico ao desenvolvimento de software desde 2003, sendo minha maior especialidade o Desenvolvimento Web. Durante esta jornada pude trabalhar presencialmente aqui no Brasil e Estados Unidos, atender remotamente times da ?ndia, Inglaterra e Holanda, receber 8x Microsoft MVP e realizar diversas consultorias em empresas e projetos de todos os tamanhos.





3.119

Aulas disponíveis

291

horas de conteúdo

76.349

Alunos matriculados

52.918

Certificados emitidos





Comece de graça agora mesmo!

Temos mais de 21 cursos totalmente de graça e todos com certificado de conclusão.

Começar


Prefere algo mais Premium?

Conheça nossos planos



Premium anual

Compra única, parcelada em até
12x no cartão de crédito


12x R$

99

,79

=R$ 1.197,44
  • 1 ano de acesso
  • Acesso à todo conteúdo
  • Emissão de Certificado
  • Tira Dúvidas Online
  • 66 cursos disponíveis
  • 10 carreiras disponíveis
  • 161 temas de tecnologia
  • Conteúdo novo todo mês
  • Encontros Premium

Começar agora

Política de privacidade



Precisa de ajuda?

Dúvidas frequentes



  • Posso começar de graça?

    Sim! Basta criar sua conta gratuita no balta.io e começar seus estudos. Nós contamos com diversos cursos TOTALMENTE gratuitos e com certificado de conclusão.

  • Vou ter que pagar algo?

    Nós temos cursos gratuitos e pagos, porém você não precisa informar nenhum dado de pagamento para começar seus estudos gratuitamente conosco. Os cursos gratuitos são completos e com certificado de conclusão, você não paga nada por eles.

    Porém, caso queira algo mais Premium , você terá acesso à diversos benefícios que vão te ajudar ainda mais em sua carreira.

  • Por onde devo começar?

    Siga SEMPRE as nossas Carreiras , elas vão te orientar em todos os sentidos. Os cursos já estão organizados em categorias e carreiras para facilitar seu aprendizado.
    Nossa sugestão para aprendizado é começar pelo Backend e seguindo para Frontend e Mobile.

    • Backend
    • Frontend
    • Mobile

  • Os cursos ensinam tudo que preciso?

    Nenhum curso no mundo vai te ensinar tudo, desculpa ser sincero! Os cursos são uma base, eles fornecem por volta de 30% do que você precisa aprender, o resto é com você, com dedicação e MUITA prática.

  • O que eu devo estudar?

    Java ou .NET? Angular ou React? Xamarin ou Flutter? A resposta é simples e direta: "Você já sabe o básico?"

    Se você ainda não sabe BEM o básico, ou seja, os fundamentos, OOP, SOLID, Clean Code, está perdendo tempo estudando Frameworks ou até coisas mais avançadas como Docker. Foque nos seus objetivos primeiro.
    Agora se você está indeciso sobre qual Framework estudar, a boa notícia é que o mercado neste momento está bem aquecido e você tem várias oportunidade. Desta forma o que levaríamos em conta para tomar esta decisão seria:

    • Já sei o básico
    • O Framework/Tecnologia tem mercado onde eu estou (região)
    • O Framework/Tecnologia é utilizado em uma empresa onde quero atual
    • O Framework/Tecnologia resolve meu problema
    • Eu gosto de utilizar o Framework/Tecnologia

  • Estou pronto para estudar no balta.io?

    Com certeza! O primeiro passo é começar e você pode fazer isto agora mesmo!

    Começar de graça

Ainda tem dúvidas?





Assine nosso Newsletter

Receba em primeira mão todas as nossas novidades.

Cadastrar


balta.io

Sobre

  • Como funciona?
  • Seja Premium
  • Agenda
  • Blog
  • Todos os cursos

Cursos

  • Frontend
  • Backend
  • Mobile
  • Fullstack

Suporte

  • Termos de uso
  • Privacidade
  • Cancelamento
  • Central de ajuda

Redes Sociais

  • Telegram
  • Facebook
  • Instagram
  • YouTube
  • Twitch
  • LinkedIn
  • Discord