Agora nessa sessão do curso nós vamos ver a questão de depuração e testes, que tem a ver com o fato de que são seres humanos que desenvolvem software e seres humanos cometem erros. Portanto, o nosso software, com grande probabilidade vai ter erros e a gente precisa de mecanismo para extrair esses erros. A gente costuma chamar esses erros de 'bug'. 'Bugs' são erros no nosso software. Erros podem ser provenientes de erros de programação mesmo, porque a gente está lá digitando o código, a gente comete deslizes, faz erros, ou o mais comum é que os erros vêm de problema de comunicação ruim, de falta de comunicação ou má comunicação entre o cliente, ou seja, quem está pedindo que o software seja feito, especificando o software, e a equipe de desenvolvimento. Para solucionar esse tipo de erro é importante você tentar formalizar pouco melhor o que é que o cliente está pedindo e utilizar método ágil de desenvolvimento de software, no qual você como desenvolvedor, tenha encontros frequentes com o cliente, para tirar dúvidas do que é que o cliente tem mente e que deve ser desenvolvido. Além disso, a equipe de desenvolvimento deve curtos períodos de tempo mostrar versões intermediárias do software para o cliente, de forma que o cliente possa dizer '' isso aqui está certo, isso aqui não, falei isso mas, na verdade, eu queria dizer outra coisa ou você não entendeu muito bem o que eu disse." Então, é muito importante que o cliente colabore com a equipe de desenvolvimento. Quanto mais próximo o cliente estiver da equipe de desenvolvimento, menor é a tendência da equipe estar desenvolvendo algo longe daquilo que o cliente tem na cabeça. Supondo que você já está usando método ágil de desenvolvimento de software, você está já junto com o cliente, mesmo assim, são seres humanos que estão programando, vão acontecer erros. Existem duas abordagens principais para a gente catar esses 'bugs', matar esses 'bus', que não é inseticida, é outro mecanismo equivalente a inseticida. O primeiro é o que a gente chama de depuração ou debugging inglês. E eu vou mostrar para vocês... eu convidei o Dr. Igor Amário, que é doutor localização de defeitos software fazer vídeo. É vídeo muito simples, não precisava ser doutor para fazer, mas, já que eu tenho acesso ao doutor porque não trazer o melhor. Ele vai falar sobre como é que a gente usa depurador ou debugger, particular, a gente usa de exemplo o ambiente Eclipse na linguagem Java. Ele vai mostrar como funciona o debugger, o depurador do Eclipse Java. É uma ferramenta que todo o bom desenvolvedor deve usar. Antigamente era muito comum o programador passar horas por dia dentro do debugger tentando achar os bugs mas por volta do ano 2000 começou a ficar muito popular a ideia de você ter uma bateria de testes automatizados para cobrir o seu código e encontrar os 'bugs' o mais rápido possível, de forma que você nem precisa do debugger. Então, se você tem uma excelente bateria de testes automatizados cobrindo a maior parte do seu código, você acaba por nunca usar o debugger. Quanto mais testes automatizados você tem, menos depuração você precisa. Hoje dia é considerado o jeito mais maduro, sofisticado e recomendado desenvolvimento de software, você ter esses testes automatizados. Investir bastante do seu tempo para ter uma boa bateria de testes automatizados e você não precisa investir muito depuração. De novo, esse não é curso de testes automatizados nem curso de depuração. A gente só está mostrando rápido como a coisa funciona, e particular, para testes automatizados, a gente vai demonstração a ferramenta pytest que é arcabouço para testes automatizados na linguagem Python e eu peguei dois vídeos do nosso curso de introdução à ciência da computação com Python que falam sobre o pytest. Então, vocês vão ter uma ideia de como isso funciona. Se você quiser aprender outras linguagens, tem o Junit para Java, tem o C++ Unit para C++, Sharp Unit para CSharp e assim por diante. Você procurando na internet você vai encontrar tutoriais específicos de cada uma dessas ferramentas, de cada desses arcabouços. Se você quiser aprender pouco mais profundamente sobre testes de software eu recomendo o curso Introdução a Testes de Software que tem aqui no Coursera e é feito por uma equipe excelente da USP, de professores da área de teste, lideradas pelo professor Márcio Delamaro. Se você quiser se tornar também conhecedor dessa área de testes de software, depois que terminar esse curso, termina esse curso primeiro e vai lá fazer o outro curso no Coursera de Introdução a testes de Software. Além disso, para finalizar, a gente vai ter também uma entrevista com o Dr. Daniel Cuckier que é doutor ciências da computação que tem décadas de experiência no mercado, trabalhando diferentes empresas, liderando equipes de desenvolvimento de software com alta qualidade. E a gente vai perguntar para ele a importância dos testes automatizados na indústria de software, nas empresas. E para descontrair, para relaxar você vai ver uma música que eu gravei com ele. Então, espero que você aproveite essa sessão. Vamos lá!