Latest / Entre Chaves / #220 TDD e BDD: código rápido ou solução com menos bugs?
Transcript
- 0:02E está começando mais um entre chaves, o seu podcast de
- 0:07desenvolvimento de software. Eu sou a Rafa e no episódio de
- 0:10hoje a gente vai falar sobre um assunto que pode ser
- 0:12controverso, porque todo mundo, ou pelo menos a gente espera,
- 0:16né? Que todo mundo concorda em
- 0:17testar, mas nem todo mundo concorda em como testar.
- 0:20E uma das metodologias de teste mais famosas, a gente sabe que é
- 0:24OTDDEA, gente, também tem um outro, uma outra metodologia que
- 0:27é OBDD, que também gera aí. Uma certa dúvida, né?
- 0:31O pessoal confunde muito e pra isso, né?
- 0:33Eu trouxe aqui o meu colega de bancada, o Ângelo.
- 0:37E aí, Rafa, vamos desmistificar toda essa esse mundo de
- 0:41qualidade de software aí de TDDEBDDE, vamos falar um
- 0:44pouquinho sobre outros conceitos a mais aí também.
- 0:45E também a gente está aqui com a Amanda, que é deve, e o Jonathan
- 0:49que é QA, né? 2 especialistas aí que vão
- 0:51brigar aí hoje. E aí, pessoal?
- 0:53E aí, tudo bem? E aí, gente, vou apresentar aqui
- 0:56rapidinho. Eu sou o Jonathan, estou atuando
- 0:57como QA aqui na DTI tem uns 3 anos.
- 1:00Um presente mais? Boa.
- 1:01Mas vamos na paz hoje. Vamos.
- 1:03Vamos ver se a gente chega num consenso.
- 1:05É, a gente sabe que são, né, assuntos aí que gera muitas
- 1:07opiniões, né? Mas assim, primeiro de tudo, né,
- 1:10vamos pelo menos falar da dessas siglas aí que são meio confusas.
- 1:13OTDD é teste driving, development, EOBDD, você troca
- 1:18aí para o behaview, né? E aí eu queria que vocês
- 1:21contextualizassem essas 2 siglas, já dando uma breve
- 1:25contextualização e também no que que elas se diferenciam.
- 1:28Vamos começar pelo TDD. Gente, pelo menos se
- 1:30contextualizar que a gente está falando de uma metodologia de
- 1:33desenvolvimento e não simplesmente do jeito como a
- 1:35gente vai escrever 11 história ou como a gente vai testar.
- 1:38Isso diz muito a respeito da da cultura que vai ser aplicado no
- 1:41time e nos processos que a gente vai rodar como um time.
- 1:44Então, basicamente OTDD, ele vai partir do princípio de que a
- 1:47gente rode o teste antes do desenvolvimento nossa, mas isso
- 1:51não vai falhar. Todos os testes, sim, ele vai
- 1:53falhar, mas a ideia é que realmente o teste falhe, mas que
- 1:56a gente identifica esses cenários no começo e depois a
- 1:58gente faça os ajustes. Necessários que ele passe e
- 2:01depois a gente aprimora ele enquanto OBDD.
- 2:04Ele vai partir de uma premissa diferente.
- 2:05A ideia do BDD é, na verdade, que a gente consiga pensar no
- 2:08comportamento como um todo. E a partir desse comportamento,
- 2:11a gente gere testes que consigam testar AA possibilidade desejada
- 2:15para garantir uma expectativa que seja cumprida.
- 2:19Algumas diferenças também que podem causar entre eles.
- 2:21Vai ser na escrita da história e que vai ser um pouquinho
- 2:23diferente também. Mas a gente vai falar um pouco
- 2:25mais sobre isso ao longo da crise.
- 2:27Eu gosto quando Jonathan comenta que muita gente acha que.
- 2:30EOTDD é simplesmente fazer o teste antes, né?
- 2:32Claro que isso é uma parte importante da metodologia, mas
- 2:35não é só isso, né? Quando a gente fala sobre TDDA,
- 2:38gente, tem aquela aquele ciclo, né, de primeiro fazer o Red,
- 2:42depois o green, depois Oo rifactor, né?
- 2:44Tem alguma cor pra esse pro rifactor?
- 2:46Geralmente ele é marronzinho o amarelo.
- 2:48É isso, mas não é simplesmente fazer o teste primeiro e pronto.
- 2:52Só isso. E depois não revisitar, não
- 2:55voltar a refaturar, organizar e melhorar o seu código.
- 2:58Então, OTDD vai um pouco. Além de simplesmente fiz o teste
- 3:01primeiro e o código depois. OTDD vai além disso, né, Amanda?
- 3:04Tem algo mais a completar aí nesse nesses conceitos iniciais?
- 3:07Ah, eles também, né? Ele meio que obriga o princípio
- 3:10da responsabilidade única, porque a pessoa tem que fazer um
- 3:13teste pequenininho Pra Ele quebrar, depois implementa
- 3:16aquele pedacinho, depois faz a faturação dele.
- 3:19E aí ao longo prazo, a pessoa ela meio que é obrigada a fazer
- 3:21pequenas coisinhas no código. Ela não pode fazer lá uma classe
- 3:24gigantesca com um Monte de coisa que No No final, quando ficar
- 3:28escava, não vai ficar bem problemático.
- 3:30Até para manutenção. As famosas Gold classes nas
- 3:33classes que faz tudo que elas linguiciona a classe de 1000
- 3:35linhas, né? É isso que você falou do
- 3:37acoplamento também, né? Eu acho que ele impede muito que
- 3:40o seu teste ele fique. Quando você constrói o código
- 3:42primeiro e depois eu fazer o teste, o teste ele é orientado
- 3:45pelo seu código, né? E aí muitas vezes ele está tão
- 3:47acoplado que AA qualidade do teste cai, a manutenção do teste
- 3:51fica mais difícil e essa parte de boas práticas de
- 3:54implementação de teste é tão importante que no clicode tem um
- 3:56capítulo só pra falar disso, né? E o.
- 3:58Legal também é que quando a gente fala de.
- 4:00De TDD esse todo esse ciclo que a gente está falando, né?
- 4:02De primeiro fazer o Red, depois o green, que primeiro o teste
- 4:05que fale, depois o teste que passa e depois se você voltar e
- 4:08refaturar tem um outro jeito fácil da gente falar isso né?
- 4:10Primeiro você faz de qualquer jeito que é o que o teste que
- 4:13vai quebrar, depois você faz o certo que aí o teste vai passar,
- 4:16depois você faz melhor porque tudo que você faz na segunda, na
- 4:18terceira vez você faz melhor, tudo que você faz na primeira
- 4:21vez você faz ali desvendando um mistério, abaixando o Mato,
- 4:25aprendendo como é que vai ser o comportamento ali depois quando
- 4:28você volta e refaz aquilo? Você faz melhor, então OTDD te
- 4:31obriga a isso, né? E entra um pouco do que Amanda
- 4:33falou também. Ele te obriga a fazer isso em
- 4:35pequenas partes do código também, sempre trazendo solid
- 4:38ali no princípio da responsabilidade única, que é OS
- 4:40do solid. EOTDD meio que te obriga te
- 4:43força ou ou pelo menos te orienta a isso, né?
- 4:46Pra usar uma palavra um pouco melhor aqui, né?
- 4:48Então assim, né? Do jeito que a gente está
- 4:49falando aqui, parece que é tudo uma maravilha.
- 4:51Mas por que que os stakeholders? Muitas vezes, em geral, o time
- 4:55de produto de negócios é tão resistente, com testes em geral
- 4:59e com OTDD. Eu acho que dos times que eu já
- 5:02participei, os stakeholders nem eram os mais resistentes.
- 5:05Eu já vi muito desenvolvedor resistente a fazer OTDD aí não
- 5:09sei se é a minha experiência só ou se o Jonathan e a Amanda tem
- 5:13percepções diferentes aí. Concordo, eu acho que deve é
- 5:16meio empolgado. Daí ele pega uma testa que fala
- 5:18eu quero fazer, eu quero terminar e depois eu testo.
- 5:20Então você chega na dele e é muito comum o pessoal falar, Ah,
- 5:22eu já terminei o desenvolvimento, agora falta só
- 5:24os testes. Então você vê que todo mundo
- 5:26desenvolve antes e faz o teste depois.
- 5:29Eu acho que é é mais. Do time mesmo porque o pessoal
- 5:31tem a ideia de que isso demora mais às vezes que é mais
- 5:34complexo. Às vezes o pessoal pensa que é
- 5:36desnecessário. Aí você falou, todo mundo faz
- 5:38teste, mas eu acho que o pessoal fala assim, Ah, eu tenho que
- 5:40fazer o teste. Por isso eu vou fazer não.
- 5:41O porquê eu tenho que fazer. Até complementando a Amanda, é
- 5:45porque a perceção que a gente tem, quando a gente implanta um
- 5:49pouquinho de TDD, é literalmente a diminuição da velocidade, né?
- 5:52A gente tem até o dado que diminui em média 15% ali de
- 5:56velocidade e tal. Mas OA questão é que a gente não
- 5:58compara com o ganho. O que a gente tem porque a gente
- 6:01não não consegue medo de ficar Oo bug que nunca existiu.
- 6:04Então a grande diferença que a gente vai ganhar de tempo é anão
- 6:08geração desse desse bug. Só que não tem como medo de
- 6:11ficar para comparar, né? Quanto tempo você gastando um
- 6:13bug que existe? Não, não dá para.
- 6:15Comparar no médio que não aconteceu, né?
- 6:17O que não existiu. Mas eu acho que isso é um bom
- 6:19argumento que a gente pode ter com o pessoal de produto, que é
- 6:22justamente o tempo que os times em geral, né, gastam com bugs,
- 6:27resolução de de chamado, né? De sustentação.
- 6:30São, ou então você sobe uma coisa em produção ali, né?
- 6:33Às vezes, né, você tem que subir sexta-feira e aí aquilo sai do
- 6:36controle, porque é uma coisa que você alterou ali.
- 6:38Por exemplo, você tem que alterar uma formatação de um
- 6:41campo ali que está errado naquele contexto.
- 6:43Mas aí quando você sobe a produção, você descobre que
- 6:45aquela formatação era daquele jeito, porque em outro pedaço do
- 6:49sistema, nada a ver era daquele jeito.
- 6:51E o que resolve? Em teoria, isso é os testes, né?
- 6:53Os testes bem feito, EODDD que Visa você construir os testes da
- 6:57forma correta, né? E eu acho que.
- 7:00E é exatamente esse o ponto, é construir bons testes.
- 7:03A qualidade dos dos testes é é o ponto chave, independente se
- 7:07você está seguindo OTDD ou não. Porque a frase que a Amanda
- 7:09falou ali, de que muita gente chega na dele e fala assim, Ah,
- 7:13já terminei, agora falta só os testes, Ah, cara, isso é isso, é
- 7:16clássica. E muita gente faz teste
- 7:19simplesmente para cobrir a cobertura.
- 7:21A gente define lá no sonar que vai ter 80 ou 90% de cobertura
- 7:24de testes, e maioria dos testes que eu vejo são testes que estão
- 7:28ali simplesmente para cobrir a cobertura.
- 7:30Teste de Gate 7. Os testes mais simples
- 7:32possíveis, só pra poder cobrir a cobertura.
- 7:34E não é essa a ideia do do TDD, né?
- 7:37TDD inclusive. Uma das coisas que ele prega é
- 7:38isso, partido de você voltar e refaturar é, é justamente pra
- 7:41isso, pra você fazer um bom teste, garantir a qualidade pra
- 7:43não acontecer isso que a Rafa falou que Jonathan falou aí
- 7:45também de ter problemas com qualidade, né?
- 7:47O negócio é assim, se diminui a um pouco a velocidade, pode até
- 7:50diminuir um pouco a velocidade, mas aumenta a qualidade do
- 7:53código que está sendo entregue, né?
- 7:54Entrega mais valor no final das contas pro seu cliente.
- 7:57É seu famoso, você só tem certeza que seu código está
- 7:59funcionando. Você tem um bom teste para ele.
- 8:01E aí, igual já não, tu falou, Ah, é difícil medir que tempo
- 8:04que você não gastou com um Bang novo.
- 8:06Mas se você for parar para olhar a um Squad que está começando e
- 8:09ainda não não implementou testes, pessoal geralmente faz
- 8:11ali um MPE, depois começa a fazer testes.
- 8:13Você vê que o tempo gasto com sustentação antes é muito maior
- 8:16do que o tempo depois que a galera começou a fazer teste.
- 8:18Então você vê que mesmo que pouco mais tarde, isso tem uma
- 8:22diferença. Eu acho que um ponto também, né,
- 8:24relacionado aos stakeholders, é que um time de produto, uma
- 8:28pessoa de produto, ela não deveria.
- 8:30Ser responsável por dizer se você pode ou não.
- 8:32Você deve ou não implementar alguma metodologia de teste.
- 8:35Eu acho que isso é da responsabilidade do
- 8:37desenvolvedor. Ele estabeleceu um prazo que
- 8:40inclua a desenvolvimento dos testes e que inclua A Entrega
- 8:44com qualidade e não você esperar.
- 8:46Ah, vamos desenvolver tudo, entregar rápido aqui, porque tem
- 8:49que ser do jeito mais rápido. E aí depois, quando estiver
- 8:52homologando, a gente começa aqueles débito técnico de teste.
- 8:54E tem 2, né? Porque tem o primeiro, que é o
- 8:57que o pessoal não entendeu, o que que era para fazer que a
- 8:59pessoa não entende. Entendeu a regra de negócio e
- 9:01tem o pessoal entendeu o que era pra fazer, mas fez o código que
- 9:03não funciona direito. Então eu acho que isso meio que
- 9:05puxa também OOBDD, que é meio que eles Oo desenvolver dele,
- 9:08fica mais ciente do que que ele tem que fazer e como ele tem que
- 9:11fazer, como que tem que funcionar para ele fazer ali um
- 9:14teste, depois ele começar AA fazer o desenvolvimento mais
- 9:17orientado para o para o que ele quer.
- 9:18Então vamos explorar um pouco mais.
- 9:20Aí você falou do BDD, que traz um pouco o time de
- 9:23desenvolvimento mais perto do time de negócio.
- 9:25Pelo entendimento do que deve ser feito, pelo entendimento do
- 9:28que é a tarefa, pelo entendimento do que é a.
- 9:30Tonalidade, né? Vamos trazer um pouco mais de
- 9:31detalhe. Como que funciona OBDD então?
- 9:34Ele meio que surgiu para tornar OODDD mais simples, que é vai
- 9:38ajudar o pessoal de desenvolvimento.
- 9:40E o pessoal, né? De produto a resolver os
- 9:42problemas que estão relacionados com as diferenças de
- 9:44desenvolvimento e comportamento da aplicação.
- 9:46E a ideia é que eles meio que conversem Na Na mesma língua.
- 9:49Então não é uma coisa que é muito técnica só para o pessoal
- 9:52de desenvolvimento, mas também não é uma coisa que é muito só
- 9:54pessoal de produtos, que conhece mais o negócio.
- 9:57E é isso. Eu acho que o que liga
- 9:59justamente. E é os desenvolvedores e as
- 10:01pessoas de negócio, é justamente o propósito do BDD, é OBDD, ele
- 10:05é feito pra que a gente seguir a partir de comportamento, só que
- 10:08a maneira como ele faz isso, ela começa da escrita, então OBDD,
- 10:12ele parte o princípio que as histórias vão ser escritas em
- 10:14garking, que é o formato lá, dado que em, por exemplo, dado
- 10:17que o usuário esteja Na Na tela de login, quando ele inseriu um
- 10:21login válido, então deve fazer login com sucesso.
- 10:23É uma linguagem que todo mundo entende, beleza?
- 10:25Eu entendi que eu entrei na página, eu vou lá fazer meu
- 10:27login, e funcionou Oo que como era esperado.
- 10:30Porém, quando a gente fala de TDDA, gente vai falar um
- 10:32pouquinho mais técnico EEA compreensão disso, ela se torna
- 10:35diferente. Então, ao invés de ser quando o
- 10:38usuário estiver Na Na tela, dado que o usuário esteja na tela de
- 10:40login, quando o login forme e os Enem receber uma streaming no
- 10:47formato e-mail arroba provider, não sei o que lá e esse user
- 10:50Enem tiver no banco de dados, então deve retornar tudo, por
- 10:54exemplo, aí a gente consegue destrinchar um pouco mais esses
- 10:57cenários, mas a gente fala numa língua muito mais técnica.
- 11:00E de muito mais difícil acesso às pessoas de negócio.
- 11:03Então a compreensão entre as pessoas do time ela fica menor.
- 11:06A minha experiência acaba que os projetos que acabam usando TDD,
- 11:09eles partem de pessoas muito técnicas, uma maioria de pessoas
- 11:13técnicas e poucas ou nenhuma pessoa de negócio, né?
- 11:16Já eu, talvez 11, projeto de sustentação ou algo nesse
- 11:18sentido. O roteiro de teste, então, é uma
- 11:21forma de implementar BDD num projeto ou são coisas
- 11:24diferentes? Eu Acredito que o roteiro de
- 11:27teste, se você fizer num formato que OBDDD.
- 11:30Vende lá give o endem, ele pode ser considerado SIM 1 um BDD
- 11:33agora, do jeito que a gente você está falando, isso é um roteiro
- 11:36de texto que você escreve ali No No Word qualquer, só pra
- 11:39documentar ali dentro da sua tarefa para você conseguir
- 11:41testar depois, né? Ver se cumpriu o critério de
- 11:43aceite e tal. Tratamento de exceção também.
- 11:46Coisa desse tipo. Agora, quando a gente fala de
- 11:49BDD atualmente, a gente tem ferramentas que quando você
- 11:54escreve o seu texto, quando você escreve o seu teste ali no
- 11:57formato correto, né? Give o endem ou ou.
- 12:00Dado que quando então, né, igual o Jonathan estava falando OBDDAA
- 12:04ferramenta gera o código que você tem que usar para conseguir
- 12:07testar, então existem ferramentas hoje.
- 12:10Aí eu acho que Amanda e Jonathan podem até citar aí as
- 12:12ferramentas que vocês já conhecem, usam e tal, mas
- 12:15ferramentas que vão um pouco além de só tem um roteiro de
- 12:17teste aqui, sabe? Mas já automatiza um pouco do
- 12:20processo também, né? Falando em ferramentas que vão
- 12:23ajudar a gente nesse processo, a gente tem algumas e eu acho que
- 12:25o que é importante a gente entender antes da gente escolher
- 12:28uma ferramenta, é entender Oo que que a gente.
- 12:30De que é como objetivo, por exemplo, um teste voltado ao
- 12:32comportamento, ele geralmente vai ser mais lento de ser
- 12:35executado do que um teste feito para rodar em TDD.
- 12:38Então, por exemplo, quando a gente está falando de TDDA,
- 12:40gente vai testar uma parte muito pequena de um forma de login com
- 12:43valor, forma de login com outro valor, e a gente vai fazer um
- 12:46teste bem pequeno. Porém, quando a gente fala de um
- 12:48teste voltado ao comportamento, a gente vai falar de um teste
- 12:50maior e a gente vai ter que abrir uma interface, entrar numa
- 12:52página e acessar ali aquele campo e fazer a interação com
- 12:56aqueles elementos lá até conseguir é executar o cenário
- 12:59que. E a gente pensou inicialmente,
- 13:01então assim, partindo da premissa que a gente escolheu o
- 13:03nosso, que o nosso objetivo é ser rápido, geralmente a gente
- 13:06tende AA optar por testes unitários mesmo.
- 13:09Então a gente geralmente, o que vai utilizar alguma coisa em
- 13:11torno de 11 geste ou fazer um teste de etário na própria
- 13:15ideia, Na Na própria linguagem nativa que a gente está
- 13:17executando ali, OA nossa programação, o gyunity, enfim,
- 13:20algo menor. Quando a gente tiver falando de
- 13:23testes de comportamento, tem uma ferramenta que todo mundo usa.
- 13:26Na verdade, quando a gente fala desse tipo de teste, que é o
- 13:28cucuumber, o cucuumber. Ele geralmente vai fazer a gente
- 13:32ter uma camada extra de de teste, por isso que ele é um
- 13:35pouco polêmico, porque todos os métodos que que a gente
- 13:39desenvolve, a gente tem que importar num arquivo do cucuber
- 13:42pra poder utilizar num arquivo de featuring pra conseguir
- 13:45executar aquele comportamento. Então você acaba meio que
- 13:47kodando 2 vezes e isso torna ele devagar em relação aos testes do
- 13:52do. Tdd então, com isso tudo que o
- 13:54Jonathan falou dessas ferramentas, a gente percebe
- 13:56também que você pode usar o cucuber, mas pode usar o Jay
- 13:59Unity também. Você pode usar BDDE, pode usar
- 14:02OTDD. Acho que são bons exemplos aí de
- 14:04que eles são complementares, né? Perfeito.
- 14:06Voltando um pouco no TDD, uma coisa que quando a gente estava
- 14:09comentando sobre as equipes, né, eu vejo muitas pessoas, muitos
- 14:14deves que eles são relutantes porque eles falam que Ah, como é
- 14:18que eu vou saber como implementar o meu teste se eu
- 14:21nem sei ainda como o meu código vai ser, né?
- 14:24Eu nem sei o que que eu vou fazer no meu código.
- 14:25Queria que vocês tentassem, como que vocês convenceriam essa
- 14:28pessoa a. Testar OTDDE também se essa
- 14:32conceção está errada. Eu acho que pra pessoa fazer o
- 14:35código dela também tem que pensar um pouquinho de como ela
- 14:37vai fazer. Da mesma maneira.
- 14:38Ela precisaria de pensar como ela vai fazer um teste.
- 14:41Porque quando eu fazer um código, eu falo, o que que eu
- 14:42espero que ele faça? Então, Oo teste, ela faria a
- 14:45mesma coisa. O que que eu espero que isso
- 14:47faça? É um bom argumento, uma coisa
- 14:48também. Eu até faço um paralelo aqui com
- 14:50as artes, né? Na escrita, por exemplo, tem
- 14:52muitos é autores que quando eles começam a escrever, eles usam
- 14:56aquele método. Jardineiro, né?
- 14:57Quem é fã de Game of Thrones sabe que o George a.
- 15:00Martin, ele escreve dessa forma, então ele não planeja o que ele
- 15:03vai escrever, ele simplesmente deixa a história, né, se auto
- 15:06guiar. E aí tem outros autores que eles
- 15:09planejam cada etapa da história e depois escreve e muitas vezes.
- 15:13Agora ele voltando para a programação, eu acho que nós
- 15:16deves a gente, somos muitos jardineiros, né?
- 15:18E aí acho que OTDD ele vem para mudar um pouco, porque ao invés
- 15:21de você ficar rodando, aí você lembra o putz, esqueci o campo
- 15:24de CPF aqui Na Na minha API que eu estou construindo, aí você
- 15:28tem que ir lá alterar o código aí.
- 15:30E você testa de novo. Aí descobre aí que você esqueceu
- 15:32outra coisa. Aí você volta lá e altera.
- 15:34Então acho que a ideia é você pensar tudo nisso antes de você
- 15:37começar a acordar, né? É que nem quando a gente está
- 15:39aprendendo. Lá na faculdade, no curso, o
- 15:41pessoal falou assim, olha, você tem sempre que programar com o
- 15:43papelzinho do lado que você tem que saber o que que você vai
- 15:46usar, o que que você quer e um teste de mesa ali de como que
- 15:49seu, seu seu código vai funcionar.
- 15:51Quando o pessoal vai desenvolver, eles tem que ter
- 15:53também um pouquinho, pensar no o que que espera.
- 15:55Se não é bem claro que a pessoa talvez não entendeu o que tinha
- 15:57que fazer, que aí puxa um pouco de pode, se você não.
- 16:00Entendeu a regra de negócio que você vai construir?
- 16:02Não, não tem, porque você começa.
- 16:04Voltando naquilo que a gente estava falando, né?
- 16:05De forçar o planejamento da sua implementação.
- 16:09Você garante um código mais limpo, garante que você está
- 16:11seguindo os melhores padrões, porque você está pensando mais
- 16:14sobre aquilo. Você está voltando, fazendo de
- 16:15novo, né? É até.
- 16:16Legal que quando é, a gente pega sobre essa parte do da
- 16:20implementação dentro do time. Meio que é importante a gente
- 16:24analisar o contexto. Acho que o contexto ele vai
- 16:26dizer muito dentro dessas implementações da das metas.
- 16:30Ideologias e tal. E o ágio?
- 16:31Ele é basicamente sobre implementar e testar.
- 16:33Então, por exemplo, OTDD, ele vem com a premissa de diminuir
- 16:37bugs a custo de 15% ali em média da sua velocidade.
- 16:41Só que Oo seu time tem um problema com bugs, ou será que o
- 16:44seu time ele produz menos bugs com uma é produzindo as
- 16:48histórias ali utilizando um BDD com um entendimento melhor entre
- 16:53o time de negócio e o time de desenvolvimento.
- 16:55Se o entendimento da galera está bom e eles estão conseguindo
- 16:59desenvolver. Ver e isso está achando poucos
- 17:02ou com nenhum bug? Então OBDD acaba servindo melhor
- 17:05para aquele time, né? Agora, se o time produz muitos
- 17:07bugs, então talvez seja necessário a gente voltar na
- 17:10base do Spring e se adaptar. AA pop primórdia ali do Spring
- 17:14vem sobre adaptação, né? Então quando o time se adapta e
- 17:17vê, olha, estou com muitos bugs, o que a gente pode fazer, né?
- 17:20E Nessas Horas é muito importante a gente, a gente ter
- 17:22domínio sobre essas metodologias e o que a gente pode fazer,
- 17:25porque uma implementação de uma metodologia, TDD, num time que
- 17:28tem muito, tem muitos bugs. Pode ajudar bastante, né?
- 17:31Assim como um time que tem pouco entendimento do negócio, um BDD
- 17:34pode ajudar bastante também. Basta saber como a gente
- 17:36aplicar. Bom, você falou um negócio ali
- 17:38que eu eu estranhei. Assim, reduz em 15% a velocidade
- 17:41do time. Mas isso aí é uma métrica ruim,
- 17:43né? Assim como é que essa
- 17:45compensação aí é isso mesmo. Então, depende.
- 17:48Se a gente está falando de 15% de de redução na velocidade,
- 17:52tudo depende do quanto o de bug a gente vai reduzir.
- 17:54Se a gente tem um índice de bugs, por exemplo, cada 2
- 17:57histórias a gente gera um bug. Por exemplo, o índice de bugs.
- 18:00Ele está alto, a gente vai ter muitos bugs, então se a gente
- 18:02conseguir reduzir 30% disso, já é um ótimo ganho, né?
- 18:07Então a média de diminuição de bugs que a proposta do TDD traz
- 18:12pra gente é de em torno de 20 a 30%, então você gasta 15, mas
- 18:16você ganha de de 20 a 30 em bugs e então tudo depende, né?
- 18:19Do quanto quanto de bugs você tem e não só a quantidade, até
- 18:23para galera não ver de forma genérica, ver um número alto e
- 18:25falar, não precisamos implantar OTDD, às vezes você tem 200 bugs
- 18:29no sistema e os dos. 200 vão ser o texto está um Pixel para
- 18:32esquerda, o título está um pouquinho para direita.
- 18:35Ah, esse aqui não está exatamente alinhado.
- 18:37Então, assim, se a gente vai falando de bugs de baixa
- 18:40severidade, então nem nem sempre esse ganho vai se justificar só
- 18:44por uma diminuição desses, desse número.
- 18:46Então, é importante a gente tomar em consideração 2 fatores,
- 18:49é que é a quantidade e a severidade desses.
- 18:51Bancos a importância de calcular esses números, né?
- 18:53Porque se você não tem esse isso aí para essas métricas, para
- 18:56você poder provar, vai ser difícil você mostrar o valor de
- 18:59forma subjetiva. E outra coisa também, quando Oo
- 19:02sistema é pequeno, né? Maravilhoso, você tem a poucos
- 19:04bugs, você tem um código pequeno, só que pensando um
- 19:07pouco em escalabilidade, quanto maior o sistema ficar, mais bugs
- 19:11você poderia ter e teria mais demorado porque pensa os outros,
- 19:15vai ficar lá horas e horas procurando, investigando o que
- 19:17que está acontecendo, que aquilo ali ficou errado e a boa prática
- 19:20que o outro DD meio que obriga, que a gente comentou que é fazer
- 19:22as coisas pequenininha, ela evita esse tipo de coisa, então
- 19:25você pensa também, Ah, um sistema legado, Ah, 11 time de.
- 19:30Apresentação com o pessoal que acabou de pegar ele.
- 19:32É muito mais fácil para pessoa que está chegando também
- 19:34entender como que as coisas funcionem e fazer um ajuste caso
- 19:37seja necessário, ou fazer alguma implementação de alguma fritura
- 19:40inova que ela vai se encaixar melhor do que numa coisa que
- 19:43seria ali enorme. O que você está?
- 19:45Querendo dizer então que o teste ele também é uma documentação,
- 19:48né? Do seu projeto?
- 19:49Interessante isso que o Jonathan falou, vou trazer uma frase aqui
- 19:52que diz assim que se os programadores não estão
- 19:55interessados no domínio, eles aprendem apenas o que a
- 19:58aplicação deve fazer e no. Não os princípios por trás dela.
- 20:01Então o software útil. Ele pode até ser desenvolvido
- 20:03dessa maneira, mas o projeto nunca vai chegar num ponto onde
- 20:06as funcionalidades mais poderosas surgirão como
- 20:09desdobramento natural das funcionalidades existentes,
- 20:12porque os programadores não aprenderam o princípio que está
- 20:16por trás ali, a regra de negócio.
- 20:17E esse é um livro do Eric Evans, que é um livro famosíssimo
- 20:21também de uma outra sigla super parecida aqui, que é ADDD, que é
- 20:24o do main drive in design. Vai ficar difícil de decorar
- 20:27tudo, Hein? DDD é 31, como é que é?
- 20:30Esse domind drive design. Agora, quando a gente fala de
- 20:34design, nesse caso, para ficar bem claro, assim é o design, é o
- 20:37é o projeto, é o que você está pensando para arquitetura, é
- 20:40como você está desenhando o seu sistema ali, né?
- 20:43E se você está fazendo uma arquitetura, um sistema
- 20:46orientado pelo seu domínio, esse domínio, no caso, é o que a
- 20:49gente vem falando aqui da lógica de negócio, é o que a gente vem
- 20:53falando aqui que OBDD ajuda a gente, aproxima os filmes de
- 20:56desenvolvimento e negócio, né? Porque é um domínio, não é?
- 21:00Aquela coisa onde o desenvolvedor cria uma tabela
- 21:02usuário, que que representa esse usuário usuário, se você tiver
- 21:04numa numa aplicação de uma faculdade, pode ser um aluno,
- 21:07pode ser professor, pode ser secretário, pode ser qualquer
- 21:10coisa. Então usar termos comuns entre o
- 21:14time do desenvolvimento e o time de negócio é um pouco do que
- 21:17defende ODDD, tem até um, eles têm um conceito lá de linguagem
- 21:20umbico, aqui defende muito isso. EE funciona bem, né?
- 21:23Assim como o Jonathan deu alguns exemplos aí agora também, né?
- 21:27O Jonathan comentou dos 15%, trouxe alguns dados aqui é que.
- 21:30E na verdade o tempo de desenvolvimento ele pode
- 21:32aumentar de 15 a 35%, né? Então é um, é um, é um tempo
- 21:34considerável. Só que a gente tem uns outros
- 21:36dados interessantes aqui, não vou citar nomes aqui, mas tem 11
- 21:40varejista que reduziu mais de 40% dos defeitos pós
- 21:43implantação, depois que adotou ODDD é a Microsoft, essa gente
- 21:47pode citar não, não tem problema, aumentou o código, a
- 21:50qualidade do código deles quase 4 vezes, não sei qual a qual, a
- 21:53exatamente, qual a meta que eles usaram, mas eles afirmaram que
- 21:56aumentaram em 4 vezes a qualidade do código e isso
- 21:59depois de adotar o. E tem uma aqui que é
- 22:00interessante, que teve uma fintech que acelerou o ciclo de
- 22:03lançamento em 30% ao adotar ODDD.
- 22:06Então AA se acelerar o ciclo de lançamento de uma startup cara,
- 22:10é um valor incalculável, porque o timing é extremamente
- 22:14importante dentro de startups, né?
- 22:16Empresas que estão começando, que tem que lançar logo o
- 22:18produto, que tem que testar logo.
- 22:19E aí a gente pode citar todos os outros conceitos do agilismo que
- 22:22a gente conhece, né? De experimentar, errar, sentir e
- 22:24responder. Se você tem uma velocidade maior
- 22:26para entregar o seu produto, de testar mais rápido o seu
- 22:29produto. Você vai corrigir ele mais
- 22:31rápido também e vai melhorar ele mais rápido também, né, ó, tem
- 22:34um negócio. Legal sobre isso, que quando a
- 22:36gente fala dessas empresas, a gente tá falando de big techs, a
- 22:39gente tá falando de Microsoft, a gente tá falando de IBM que
- 22:41implementam OTDD dentro dos próprios processos, né?
- 22:44E Microsoft, que tem produtos gigantes, IBM que tem produtos
- 22:47gigantes também. Mas ainda assim a gente ainda
- 22:50tem algumas polêmicas nacionais, né?
- 22:52Até em torno dessa implementação, né?
- 22:54Muita gente a gente acaba vendo em alguns fóruns, por exemplo,
- 22:57de que não vamos implementar TDD porque é uma coisa.
- 23:00A gente fica muito na ideia e a gente não consegue fazer isso.
- 23:02Não temos exemplos nacionais Fortes disso, mas acaba que tudo
- 23:07é sobre uma resolução de problemas, né?
- 23:08Então, assim, se a gente partir do princípio, conseguir atuar,
- 23:12tem tudo pra dar certo, né? Mas depende da nossa atuação,
- 23:15tá? E a gente sabe da dificuldade.
- 23:16Que a gente tem no mercado, nós estamos aqui fazendo a nossa
- 23:18parte, né, trazendo números, dados, comprovando aí a eficácia
- 23:22desses, dessas metodologias para tentar convencer, motivar os
- 23:26nossos ouvintes a usarem mais isso, melhorarem a qualidade dos
- 23:29seus corpos. Códigos de melhorarem os
- 23:31processos, melhorarem a comunicação com o time de
- 23:33negócios com OBDD, né? Acho que esse é um benefício
- 23:36difícil de calcular em número também, né?
- 23:38O quanto que você ganhou melhorando a qualidade da
- 23:40comunicação entre David EPO, sabe?
- 23:42É difícil traduzir isso em números, né?
- 23:44Mas não deixa de ser um benefício, né?
- 23:46Eu acho que às vezes. Também até pensando em uma
- 23:48métrica de produto que seria o sensat, né?
- 23:50De satisfação uma pessoa quando ela está usando um sistema
- 23:53principalmente igual a gente comentou, Ah, a startup, alguma
- 23:55coisa nova e ela encontra lhe um bug, perde um pouco a
- 23:57credibilidade que a pessoa fica assim, Ah, isso aqui está.
- 24:00Não tá estragada. Tô zoada, não vou usar, não.
- 24:01Você desiste, né? Desinstala o aplicativo
- 24:04exatamente. Então, às vezes, até nisso ajuda
- 24:07Na Na Na adesão dos usuários ao produto boa bem.
- 24:10Lembrado e tem algum case assim que vocês atuaram, que foram
- 24:13implementados? BDD ou TDD ou os 2 assim tem um
- 24:17case? Um case até um pouco trágico,
- 24:19que a galera entendeu que OBDD era o caminho certo, que era de
- 24:22111 avião. E aí a funcionalidade do avião
- 24:26era voar. Só que a galera esqueceu de
- 24:27exercitar esses cenários com OTDDE.
- 24:29Acabou com a. Avião voou, mas ele caiu.
- 24:31Esqueceram de fazer a gente 8 de terça.
- 24:33Era uma piada. Apesar.
- 24:36Disso a gente tem diversas aplicações, né?
- 24:39Então, assim, a gente precisa entender aonde a gente quer
- 24:41chegar para conseguir implementar.
- 24:42Quando a gente fala de algumas aplicações, tipo no caso,
- 24:46aplicações de aviação, que são um pouco delicadas, a gente tem
- 24:50que testar muitos cenários. É uma coisa bem delicada.
- 24:52Geralmente a gente opta por um TDD, por uma questão de
- 24:55segurança, né, para conseguir garantir mais testes ali. 11
- 24:58segurança maior e. Como vocês já falaram, a
- 25:01credibilidade, né? Do do cliente em torno desse,
- 25:04desse produto, desse serviço. Agora tem alguns cenários que a
- 25:06gente tá falando de que o comportamento talvez seja um
- 25:09pouco mais interessante, que, por exemplo, a gente tem algumas
- 25:11aplicações de restaurante que OBDD, acaba sendo bem
- 25:14interessante do tipo, o usuário tem que ser capaz de adicionar
- 25:18um produto no carrinho, ele tem que ser capaz de fazer no login,
- 25:20então acaba que OBDD se torna um pouco mais didático nesse tipo
- 25:23de aplicação. Então só alguns exemplos, né?
- 25:26A gente tem alguns produtos de restaurante aqui, já que OBD tem
- 25:29sido. Mostrado muito bom e tem algumas
- 25:31aplicações mais sensíveis, como aplicações bancárias e tudo mais
- 25:34que OTDD tem se mostrado um pouco melhor.
- 25:37O contexto vai dizer bastante sobre a aplicação das
- 25:40metodologias aí. E, mais que tudo, eu acho que em
- 25:43algum momento isso tudo se complementa e que é a parte mais
- 25:46legal de tudo. Então você, por exemplo, a gente
- 25:48faz alguns testes usando OTDD ali, fazendo os testes
- 25:51unitários, bonitinho, antes de desenvolver a aplicação.
- 25:54Mas isso não precisa eliminar o fato de que a gente vai fazer
- 25:57alguns testes utilizando BDD também.
- 25:59Então, e. Enquanto deve, por exemplo,
- 26:01estar desenvolvendo os testes em TDD ali bonitinho, fazendo 11
- 26:04aumento da cobertura no gesto e tudo mais, a gente pode
- 26:07colaborar com os demais membros do time, por exemplo, que chamar
- 26:10o pessoal de Kia para incrementar alguns testes
- 26:12utilizando o cumber. E aí essas 2 coisas acabam se
- 26:15juntando e trazendo um nível de qualidade de código muito
- 26:18melhor, uma confiabilidade melhor e por consequência, um
- 26:21sucesso maior do produto ali, confiança do cliente e tudo
- 26:23mais. Uma dúvida, Jonathan.
- 26:24A gente deveria adotar então um BDD somente quando a gente tem
- 26:29um time de. QAA pergunta é porque quando
- 26:31você citou aí sobre OTDD, você citou o último desenvolvimento.
- 26:34Quando você citou OBDD, você citou o time de QA.
- 26:37Então existe essa divisão a quem faz OBDDA galera do QA.
- 26:42Quem faz OTDD é a galera do desenvolvimento ou tanto faz?
- 26:45Não necessariamente. A gente precisa segmentar isso,
- 26:48tá? Tudo depende do entendimento e
- 26:50do resultado que a gente consegue gerar a partir disso.
- 26:52Então, por exemplo, quando a gente tá falando em TDD, vamos
- 26:54ter uma linguagem mais técnica. Isso não impede da gente ter um
- 26:58QA ou não, tudo que vai. Para que está?
- 27:00Na verdade é se o que a entende, o que está ali ou não.
- 27:03Porque a proposta do BDD, ela é sobre comunicação, é sobre
- 27:06entendimento do negócio, facilitar com que os deves EE,
- 27:09as pessoas ter negócio, consigam se comunicar ali sobre o que as
- 27:13funcionalidades devem fazer ou não.
- 27:15Então se a gente fazendo um TDD ali, como o processo do time e
- 27:20os deves estarem entendendo isso e os que as também, a gente
- 27:23consegue seguir numa boa. Agora, se a gente não consegue
- 27:26ter essa comunicação clara e efetiva para garantir OA
- 27:29funcionalidade. Idade, como ela deve estar
- 27:31funcionando? Então talvez seja interessante a
- 27:33gente abordar as coisas com OBDD, então a parte muito da
- 27:36comunicação, nossos ouvintes. Estão ouvindo aí sobre TDDBDDE?
- 27:40Estão curiosos por onde começar? Vocês têm algum livro, alguma
- 27:43boa referência? E aí a gente pode até colocar
- 27:46essas referências aí na descrição do episódio junto com
- 27:49o nosso link. Quem quiser acessar lá nosso
- 27:51link de vagas, nosso link de newsletter, fique à vontade
- 27:54também na descrição. Tá bom, eu acho que os próprios.
- 27:56Livros que você comentou do Eric acho que são os mais comuns,
- 27:59assim, quais são? Lugar que a gente pesquisa,
- 28:01comenta sobre eles, tem mais um também.
- 28:02Que é pouco famoso, que é o manifesto ágil.
- 28:05O manifesto ágil acaba alincando bastante com a proposta não só
- 28:09de uma, mas das 2 metodologias, das 3.
- 28:11Na verdade que a gente falou do DDD também, né?
- 28:13Então o manifesto ágil ele representa muito disso, né?
- 28:16Que tem a uma premissa lá que a nossa maior prioridade é
- 28:19satisfazer do cliente através da entrega contínua e adiantada de
- 28:23software com valor agregado. E mais do que isso, as pessoas
- 28:26de negócios e desenvolvedores devem trabalhar diariamente em
- 28:28conjunto por todo o. Projeto, ou seja, desde que a
- 28:31gente consiga trabalhar em equipe e entregar valor.
- 28:33A gente vai entregar 111. Bom software é um manifesto
- 28:36argem aí pra gente demais. Ou, na verdade?
- 28:39Faltou a gente falar de último assunto, né?
- 28:41OOGDD conhece? AI meu Deus, que que é isso?
- 28:44Gambiarra driven. Developman é uma brincadeira
- 28:47essa eu vejo. Várias, todo dia.
- 28:50Ou só só uma dúvida também, se vocês já ouviram falar no ATDD
- 28:55daí, esse esse é. Piada ou não, não, esse é.
- 28:57Sério mesmo? Axetans teste driven develop.
- 29:00A gente já ouviram falar nisso, é na prática, não muda.
- 29:02Muito é porque assim, basicamente você está falando de
- 29:04níveis de teste diferente. Enquanto um a gente vai
- 29:07representar programaticamente em teste unitário, o outro a gente
- 29:10vai ter que fazer um teste dentro da interface.
- 29:13Então, apesar dessa diferença pequena, que é o nível do teste,
- 29:16e isso acaba impactando Na Na velocidade de execução e de
- 29:19implantação, esse teste é um é um pouquinho mais caro, um
- 29:22pouquinho mais lento, mas no final faz a mesma coisa, mas
- 29:25você aproxima um. Pouco do BDD também, né?
- 29:27Sim, vai ser bem próximo. Então eu acho que é isso a
- 29:29gente. Explorou.
- 29:30Tem os conceitos aqui de TDDBDDA gente, sabe agora que OTDD tem
- 29:34uma linguagem mais técnica, OBDD, tem uma linguagem mais de
- 29:37negócios. Temos boas referências aí, que
- 29:39são os livros do do Eric Evans, né?
- 29:41Pra gente poder começar no assunto, pra gente poder começar
- 29:44a experimentar nos times. E temos boas métricas para
- 29:47justificar esse começo, para justificar esse uso, né?
- 29:50Mesmo que às vezes a gente possa perder um pouco na velocidade, a
- 29:53gente ganha muito na qualidade, ganha muito na entrega de valor
- 29:56para os nossos clientes, né? Então eu queria agradecer
- 29:58Jonathan e Amanda aí pela parte. Participação eu que agradeço.
- 30:01Obrigada obrigadão gente. Um prazer participar aí com
- 30:04vocês, então é isso aí, pessoal. Valeu, Rafa, valeu.
- 30:07Até a próxima.