[MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] Vamos testar, minha gente! [MÚSICA] Então, eu estou aqui, trouxe pra vocês o Daniel Cukier. O Daniel é formado Ciências da Computação, aqui no IME-USP, e ele tem uma startup de software que está causando aí bom impacto na música digital aqui do Brasil, utilizando BigData para análise de músicas. Mas eu trouxe o Daniel para ele falar pouco sobre a experiência dele de usar testes automatizados na indústria, ele trabalhou empresas antes, e agora ele tem a startup dele. Eu queria saber: essa coisa de testar, e todo o código ter testes, isso é uma coisa para acadêmicos, ou é uma coisa que realmente ajuda o dia-a-dia da sua empresa ajuda na qualidade do software da sua empresa? >> Olha eu diria que, eu acho que esse negócio de teste, ele nasceu muito mais na indústria do que na própria academia, porque a necessidade de você ter teste num produto que você entrega para cliente é fundamental, então, não tem como você entregar software de qualidade no longo prazo, principalmente se você quer ter software que vai evoluindo ao longo do tempo, sem que você tenha uma base de testes bem... >> Mas você acha que funciona você escrever o software, depois escrever os testes, ou passar para outra equipa escrever os testes? >> Olha, na nossa empresa, a gente, quem escreve o código escreve o teste também, e na maioria das vezes até a gente faz bastante TDD, a gente escreve o teste antes mesmo do código. >> Você poderia descrever pouco pra gente como é o dia-a-dia da sua empresa, termos de produção do software? >> Claro! A gente trabalha muito pares, então, normalmente duas pessoas ocupando mesmo computador, tentando desenvolver o software e a gente, no nosso caso, a gente usa Ruby, que é uma linguagem que é parecida com o Python, tipo de sistema que, uma linguagem que não tem tipagem, que é tipagem fraca, tipagem dinâmica na verdade, e a gente escreve testes usando [ESTRANGEIRO], que é uma, basicamente para testes tanto os unitários quanto teste de integração Então a gente chega, tem uma feature nova que precisa ser desenvolvida ou uma parte interna do sistema mais de backend, então, a gente sempre começa definindo o que é que tem que ser feito, e aí uma vez que está feito a gente começa a desenvolver, incrementalmente, código incremental, fazendo teste, aí fazendo esse teste passar, aí depois melhora pouco a funcionalidade, faz mais teste e assim por diante. Se você perguntar se a gente testa 100% do que a gente faz, então eu diria que não, assim. Algumas vezes a gente tem coisas que são mais protótipo, são experimentos, são provas de conceito, então, a gente sempre, se é uma coisa que a gente não sabe se vai entrar, porque é uma startup e a gente precisa de fazer muito rápido, com bastante agilidade, fazer só teste para ver se funciona, se os clientes vão aceitar aquela funcionalidade. Então, a gente às vezes faz sem teste, vê qualquer resposta, e aí imediatamente a gente vai lá e desenvolve os testes se aquilo for evoluindo ao longo do tempo. >> Por acaso você tem uma ideia de quantos testes, ou quantas linhas de testes? >> Olha, eu diria que metade da nossa base de código é teste. Hoje, metade, a gente tem mais de 1300 testes que são executado cada vez que a gente vai fazer novo deploy e antes de fazer commit para o repositório, de enviar o código para o repositório principal, sempre tem que passar todos os testes antes, o desenvolvedor tem obrigação de rodar os testes antes de enviar. Na verdade, o nosso servidor de integração contínua também, se ele recebe código que não tem todos os testes passando, ele rejeita o código. >> Então, na sua empresa, todo o programador é testador também, não existe diferença. >> Não, a gente não tem diferenciação, não tem time de qualidade. A gente acredita que a qualidade, ela tem de ser permeada pela empresa toda, então todas as pessoas têm que ser responsáveis pela qualidade. Então, desde o programador até à pessoa do atendimento ou o pessoal de marketing, o pessoal de produto, eu diria, todo o mundo que trabalha na empresa tem que se preocupar com a qualidade, principalmente a qualidade percebida pelo cliente, então, Eu acho que o teste, testes, principalmente os automatizados, porquê automatizado? Porque, você pode também fazer testes manuais mas o custo do teste manual, ele vai ser sempre muito maior. Talvez num curto prazo ele é menor, mas é uma dívida que, se você não tem automatizado, você vai sempre ter que repetir, é como se estivesse pagando juros lá, todo o mês. Então, quando você automatiza, você evita de ter que testar manualmente. Além do que, manualmente sempre corre o risco de não testar tudo, de esquecer alguma coisa. >> Então tá bom, muito obrigado e boa sorte na sua startup! >> Obrigado, obrigado! Vamos testar, hem, galera? MÚSICA MÚSICA MÚSICA