Por que não estamos fazendo testes de unidade no frontend? #1169
Replies: 41 comments 4 replies
-
Ainda brigo, em quase todo sprint... |
Beta Was this translation helpful? Give feedback.
-
Eu faço poucos testes. Embora esteja corrigindo isso, eu ainda não me sinto "confortável" fazendo testes no front-end. Quando eu faço libs ou aplicações mais simples aqui, fazer teste vira meio automático, mas no front, sempre tenho um pouco de dificuldade. |
Beta Was this translation helpful? Give feedback.
-
Infelizmente esse tipo de teste é totalmente subestimado em muitas empresas, principalmente start-ups, não faz parte da cultura no final (mesmo que escrevam textões sobre e seja requerido em vagas abertas). Não posso dizer que estão errados, as entregas são sempre para ultima hora e como o front é o ultimo estágio do processo fica difícil convencer seu gerente que vc vai atrasar (mais) a entrega para implementar testes. Quando vc está em empresas com melhor estrutura de processos e se tem um prazo melhor para desenvolvimento a implementação dos testes fica mais fácil, diria que até obrigatória. |
Beta Was this translation helpful? Give feedback.
-
Nós utilizamos testes com Jasmine aqui na empresa, temos algumas telas com alguns cálculos bem complexos e decidimos testar isso. Nós tivemos que vender essa ideia aqui dentro, fazendo apresentações sobre os benefícios que isso pode trazer. Mas foi primeiramente implementado no back-end, muito devido a cultura que trouxemos da linguagem Python aqui. |
Beta Was this translation helpful? Give feedback.
-
Me lembro que na época do AngularJS, bower e compania (2~3 anos atrás) eu implementava BASTENTE unit tests. Os frameworks mudaram, as coisas mudaram, e parece que cada vez mais ficou com o sentimento de "não preciso fazer unit pra isso", como se o culpado disso fosse a evolução das tecnologias. Afinal, "em um mundo facilitado como o nosso, e com certas garantias que o Typescript e o flow dão, pra quê testar?". A primeira coisa que vem na minha mente é: "o que testar em um componente? Se ele renderiza X div? Se ele faz X logica?" e meio que fui deixando de lado. Porém confesso que sinto falta de unit tests, só me falta ter menos "preguiça" pra criar e executar os mesmos. Outro ponto importante é as empresas. Se você tá em um cliente que não tem essa cultura (meu caso), realmente testes unitarios ficam de lado, e mesmo que você indique o beneficio deles pro seu gestor, é capaz dele "cagar" pra o que cê fala já que tem seguir os processos da empresa/cliente. Aqui é mais critico os testes e2e que os unitários por exemplo. Porém ainda é executado de forma errada em minha visão. Pois vão esperar o produto ficar pronto pra começar a criar os testes. |
Beta Was this translation helpful? Give feedback.
-
Eu queria muuuuuuito implementar testes no front-end, mas sempre fico perdido, não sei direito como começar. :( |
Beta Was this translation helpful? Give feedback.
-
Criei essa enquete no twitter também pra tentar entender melhor. O problema, pra mim, é bem grave. |
Beta Was this translation helpful? Give feedback.
-
Em alguns códigos mais antigos não temos testes unitários mas sempre que entra um código novo é introduzido com testes unitários. Estávamos sofrendo muito com a falta de escrita de testes unitários e de integração com muito código voltando pra refactor mas hoje o fogo foi apagado e passamos bem 😂
|
Beta Was this translation helpful? Give feedback.
-
Liferay Recife é amor dms @diegonvs kkkk |
Beta Was this translation helpful? Give feedback.
-
O @WandersonAlves resumiu o que pra mim é uma dificuldade:
É difícil saber se estamos fazendo um teste útil ou não e o quanto ele vai durar no código (fazer sentido). Talvez dê aí uma boa discussão. Quem puder contribuir com um exemplo prático de um código real, eu agradeceria. Tenho bastante curiosidade. |
Beta Was this translation helpful? Give feedback.
-
Na minha empresa sempre foi por pura falta de conhecimento. Encabecei essa questão e confesso que fiquei bem perdido no início. Parece fácil mas quando se põe a mão se ve que nao é tao simples, muito pq envolve toda uma cultura realmente. Não é só criar testes e pronto, ta feito - tem que cultivar ao longo do desenvolvimento como algo previsto, tanto quanto versionamento ou deploy. Agora que já criei uma estrutura para os testes, já entendi como funciona e etc, está tudo parado por falta de apoio da gestão. Até consegui vender a importância e benefícios, mas sempre tem algo na frente pra priorizar nas sprints e pedem pra deixar isso de lado (assim como várias refatorações e débitos técnicos que estão no seu limite, que só vão receber atençao quando "estourar"). E2e nao estao nem perto de serem abordados. Quanto à duvidas em si nos testes unitários, ainda estamos incertos se usaremos blackbox ou whitebox, se usaremos mocks ou nao (alguns pregam que isso é devido apenas em e2e, nao unitario), e quanto prolífico eles serão (explico: para alguns utilizamos o fakerjs, com todo tipo de dado sendo enviado para as funçoes, pra ver se ocorre alguma quebra ou não, o que faz com que as funçoes sejam chamadas até mais de 60x - é util ou só perda de tempo?) |
Beta Was this translation helpful? Give feedback.
-
Acho que a receita pra ter bons testes é partir do ponto de vista do usuário, do requisito, produzindo bons testes (citando o @ rauchg, "Não muitos. Principalmente integração"), para garantir que os fluxos estão cobertos. Unitários só fazem sentido quando vc escreve libs ou regras de negócio em porções reutilizáveis, e os dados podem ser copiados de produção ou fake (o que parece fazer mais sentido). Outra coisa muito importante é deixar de encarar testes como algo separado, à parte do projeto. Eles são parte ativa do projeto, são código que embora não seja entregue em produção (?), dão consistência e propósito pro "código de verdade". Sobre testes atrasarem as entregas, deve-se fazer uma métrica sobre quantos bugs são causados por linha não testada, especialmente os que envolvem inputs e entradas de informações pelo usuário (quanto mais vulnerável ou menos confiabilidade se tiver nos dados de entrada, maior a chance de erros ocultos aparecerem no futuro). Há coisas que não fazem sentido testar, como layout ou cores e textos, exceto quando esse é o requisito. Exemplo: acessibilidade ou localização. |
Beta Was this translation helpful? Give feedback.
-
Acho que mais importante do que "porque não fazemos unitarios" é "porque não escrevemos testes". Unitários, pelo menos pra mim, poderiam focar em coisas dificeis (algoritimos raramente feitos no front) ou complexas de implementar, onde existem Eu tava com uma ideia fixa de testar as coisas guiadas pela necessidades de negócio, então acabava priorizando os de integração pro front, sem deixar o app tocar banco e essas paradas que não tenho controle (através de mocks e requests falsificados). Mas há um tempo vi que um time da ThoughtWorks de São Paulo faz algo que talvez, pro front, seja mais interessante: guiar esses mesmos testes de integração segundo o que se espera que os usuários façam. |
Beta Was this translation helpful? Give feedback.
-
Nas empresas onde eu trabalhei, tanto no Brasil quanto fora, o que acontecia é que, no início do projeto, sobretudo antes do lançamento, tudo era testado bonitinho. Depois de lançado, as demandas aumentavam, os prazos diminuíam, e as regras de negócio mudavam com frequência, o que é natural. O resultado é que os testes (não só unitários) iam diminuindo. Conforme o tempo foi passando, eu também fui dando menos valor a testes unitários no front end. Eu costumava testar cada parte do código, inclusive componentes React extremamente simples. Com o tempo, eu fui adotando uma abordagem, ao meu ver, mais efetiva. Comecei a fazer mais testes de integração que unitários. Parei de testar componentes e comecei a abstrair as complexidades dos componentes em pequenos Essa, na minha opinião, é a melhor combinação entre agilidade e confiabilidade de código. O próximo passo é fazer mais testes end to end. |
Beta Was this translation helpful? Give feedback.
-
MAs @diegohaz, e2e não pode gerar muito ruido? No sentido de que pra ser um e2e de verdade, até onde entendo, o sistema teria que ser o mais real possivel, ai lá se vai o controle que temos sobre o teste. Acho que esse lance de queremos testar tudo no começo e dps irmos entendendo que nem tudo é necessário testar, é total normal, parte da gente entendender nossas ferramentas. Sei lá. |
Beta Was this translation helpful? Give feedback.
-
Estou com o @ninetails , o problema é mais embaixo, diria até que em nível de processo e de como se escreve código e se planeja o desenvolvimento. Em muitos cenários, agile virou "desculpa" para cuspir software mal acabado e defeituoso. A falta de uma metodologia clara de desenvolvimento, a falta de requisitos e critérios de aceitação nas histórias, a falta de tradução dos requisitos em testes, tudo isso é uma realidade bem próxima de startup's que focam muito mais na entrega do que no valor gerado. Se esquecem completamente que entregar algo com débito técnico é como tomar um empréstimo a juros altíssimos. Nunca passam para o próximo estágio do produto porque não têm como evoluir o produto pelo alto custo que eles mesmos criaram. Depois dizem que isso é ágil. Bom se vc entrega um MVP q não consegue evoluir, por ser muito caro, onde está o valor nisso? |
Beta Was this translation helpful? Give feedback.
-
Saiu o resultado da enquete: Edit: |
Beta Was this translation helpful? Give feedback.
-
@matheusml não rola de trazer as respostas do "Outro" também? |
Beta Was this translation helpful? Give feedback.
-
Onde trabalho, o processo de frontend ainda é bem defasado e mesmo no backend não há a cultura de testes. Recentemente, em uma conversa com meu gestor, conseguimos implementar alguns testes em backend, está longe do ideal mas já é um começo. |
Beta Was this translation helpful? Give feedback.
-
Aqui onde trabalho vamos começar nossa primeira implementação de testes no próximo projeto, que envolverá Vue js. Mas eu noto que a maioria das empresas não incentivam isso e a nossa própria comunidade deveria continuar pregando muito esse conceito pra que venha a se tornar uma coisa imprescindível. |
Beta Was this translation helpful? Give feedback.
-
Eu comecei escrever bastante depois que fiz o curso JS com TDD do @willianjusten |
Beta Was this translation helpful? Give feedback.
-
Algo interessante para disseminar a cultura de escrever com testes, é a realização de Dojos com a equipe. Pode ser a implementação de atividades simples, mas no decorrer da atividade ir expondo a importância de testes para que o próximo desenvolvedor consiga fazer as alterações sem quebrar o que já tinha. Fora que é bem divertido e dissemina vários aprendizados :) |
Beta Was this translation helpful? Give feedback.
-
Aproveitando a deixa, outra coisa que eu estou percebendo é que mesmo implementando testes, não vejo fronts implementando bons testes. Já peguei também muita coisa na empresa que estou sobre testes usando beforeAll por exemplo, ou seja, testes interdependentes. Teve até um outro projeto onde eu tentei usar um Estou bem pessimista sobre a falta de cultura e importância sobre testes. +1 pra Dojos, tentei implementar Coding Dojo no último lugar onde trabalhei, foi bem promissor em relação a ensinar a galera a testar e ter empatia pelo próximo. |
Beta Was this translation helpful? Give feedback.
-
Testes hoje em dia são muito importantes, hoje não vejo mais um projeto sem testes, é essencial, desde que sejam bem escritos e abordam aquilo que precisa ser abordado. Sobre o fato de não saberem testar, o curso JS com TDD do @willianjusten é excelente, recomendo para quem ainda não faz testes. Tanto no meu blog quanto no meu canal estou para escrever artigos/vídeos falando sobre testes, para tentar ajudar ainda mais e mostrar o porque de testes. |
Beta Was this translation helpful? Give feedback.
-
@ninetails alinha justamente com o resultado da enquete, muita gente nem sabe o que é teste unitário pra começo de conversa, +1 para Dojos, mas o que vai ensinar mesmo é por a mão na massa e dar oportunidade para os devs desenvolverem da forma correta, e principalmente, sem pressão de tempo e sim de qualidade. E sim isso custa caro, desenvolver software em geral custa caro, se vc quer validar uma ideia prototipe, e só então desenvolva. |
Beta Was this translation helpful? Give feedback.
-
Depois da última experiência, passei a enxergar os testes como algo primordial. Acredito que vai da cultura da empresa que está atuando e de como você vai lidar com os "prazos" que te passam. |
Beta Was this translation helpful? Give feedback.
-
Eu entendo os beneficios do Front end teste para o projeto, |
Beta Was this translation helpful? Give feedback.
-
Muita gente está deixando de aprender o básico (no meu ponto de vista, testes, seja de unidade, integração, etc... faz parte do aprendizado de um profissional) e vejo que as escolas/cursos de desenvolvimento não abrange nessa parte do desenvolvimento, nem as coisas básicas. Também existem empresas que não ligam pra isso, porque o resultado final é entregar valor para empresa, independente da forma que vai ser entregue. |
Beta Was this translation helpful? Give feedback.
-
Um tempo atrás eu escrevi esse post no meu blog pessoal, justamente falando sobre qualidade em startups e algumas saídas pra não cair nessa cilada de desenvolver sem testes. É bem curto, mas sintetiza bem o que eu penso sobre o assunto. Deixando aqui para quem achar útil. |
Beta Was this translation helpful? Give feedback.
-
Sinceramente, eu sei fazer testes no frontend, porem ja trabalhei em dezenas de empresa, e literalmente so uma (uma gigante inclusive) pedia teste unitario, mas mesmo assim não era tão obrigatorio, na grande parte era melhorar testes ja existentes, porem havia diversos arquivos sem testes. Mas mesmo tendo o conhecimento, eu ainda não sinto a necessidade dos testes. Sempre vejo todo mundo falando que tem que fazer testes unitarios, que são importantes e etc, porem nunca vejo ninguem falando o PORQUE eles são importantes. Sinto um pouco de comportamento de manada, não falando que fazer tal teste seja errado, porem literalmente todos que confrotei do porque consideravel testes unitarios no frontend importantes, literalmente ninguem sabia responder, os mais afiados davam respostas vagas e genericas. Ainda espero uma explicação gorda e bem tecnica, que é oque o mercado e tecnologia precisa, para justificar tempo de desenvolvimento. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Galera, estou consolidando a pesquisa sobre ferramental frontend (#1154) e postando alguns resultados enquanto escrevo o artigo/procuro apoio para trazer conteúdo sobre as pendências técnicas encontradas na pesquisa.
Recentemente postei sobre testes de unidade mostrando que 40.2% não faz testes e isso é um número meio alarmante se pensarmos no valor que testes de software agregam a um produto digital.
O @matheusml levantou a bola sobre por que será que as pessoas não estão fazendo testes em suas aplicações.
Abri essa issue para discutirmos sobre isso.
Então vamos nessa!
Pesquisa
#pracegover
De 495 respostas na pesquisa sobre ferramental frontend, 40.2% não faz testes de unidade, 33.3% utiliza Jest, 11.9% utiliza Mocha e 9.1% utiliza Jasmine. Os demais estão divididos em ferramentas específicas de suas stacks, como jUnit ou elm-test.
A pergunta foi: qual ferramenta de testes você utiliza?
Link da postagem aqui.
Beta Was this translation helpful? Give feedback.
All reactions