[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] [MÚSICA] Vamos testar minha gente. [MÚSICA] [MÚSICA] Então, eu estou aqui. Eu trouxe para vocês o Daniel Cukier. O Daniel é formado Ciência da computação aqui no IME-USP. E ele tem uma startup de software que está causando bom impacto na música digital aqui no Brasil, utilizando o big data 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 código ter teste. 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 esse negócio de teste 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. >> Você acha que funciona você escrever o software e depois escrever os testes, ou passar para outra equipe escrever os testes? >> Olha! Na nossa empresa quem escreve o código escreve o teste também. E, na maioria das vezes, a gente até faz bastante TDD, a gente escreve o teste antes mesmo do código. >> Você poderia descrever pouco para a gente como é o dia a dia da sua empresa termos de produção do software e dos serviços associados? >> Claro. A gente trabalha muito pares, então, normalmente, duas pessoas ocupando mesmo computador tentando desenvolver software. E no nosso caso, a gente usa 'Ruby' que é uma linguagem que é parecida com 'Python', no sentido de ser uma linguagem que a tipagem é fraca, tipagem dinâmica, na verdade. E a gente escreve testes usando 'RSpec' que é basicamente para teste tanto de uso unitário como testes de integração. Então, a gente chega e tem uma feature nova que precisa ser desenvolvida, ou uma parte interna do sistema mais de 'back-end'. A gente sempre começa definindo o que tem que ser feito e, uma vez que está feito, a gente começa a desenvolver incrementalmente, código incremental, fazendo teste e fazendo esse teste passar. E 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, eu diria que não. Algumas vezes, a gente tem coisas que são mais protótipos, são experimentos, são provas de conceitos. Então, a gente sempre... Se é uma coisa que a gente não sabe se vai entrar, porque, é uma startup, a gente precisa fazer muito rápido, com bastante agilidade. Às vezes, só teste para ver se funciona, se os clientes vão aceitar aquela funcionalidade. Então, às vezes, a gente faz sem teste, vê qual é a resposta e, imediatamente, a gente vai lá e desenvolve os testes se aquilo for evoluir ao longo do tempo. >> No total, você tem alguma idéia de quantos testes ou quantas linhas de testes? >> Olha! Eu diria que metade da nossa base de códigos é teste. Hoje, a gente mais de 1300 testes que são executados cada vez que a gente vai fazer novo 'deploy'. 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 a obrigação de rodar os testes antes de enviar. Na verdade, o nosso servidor de integração contínua, também, se ele recebe o 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 essa diferença. >> Não. A gente não tem diferenciação, não tem time de qualidade. A gente acredita que a qualidade tem que ser permeada pela empresa toda. Todas as pessoas têm que ser responsáveis pela qualidade, então, desde o programador até a pessoa do atendimento, o pessoal de marketing, o pessoal de produto. Eu diria que 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 os testes, principalmente, os automatizados, são uma ferramenta. Porquê automatizado? Porque você pode, também, fazer testes manuais, mas o custo do teste manual vai ser sempre muito maior. Talvez no curto prazo ele seja menor, mas é uma dívida que, se você não tem automatizado, você vai sempre ter que repetir. É como se você estivesse pagando juros todo 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, esquecer alguma coisa. >> Então está bom. Muito obrigado e boa sorte na sua startup. >> Obrigado. Vamos testar, hein galera?! [MÚSICA] [MÚSICA] [MÚSICA]