da a compreender melhor os requisitos, estimar custos mais precisamente, garantir menos bugs etc. Na situação em que vivemos, estamos aprendendo vagarosamente a não prender-se tanto à programação de regras de negócio, mas olhando também para um fator muito importante a esse tipo de produto: a sua qualidade final. Clientes não querem mais ver apenas o produto pronto e implantado, querem ver seu sistema funcionando e sem erros. Erros esses que podem levar sua empresa a uma situação de caos e fazê-los despender muito mais tempo e outros recursos em manutenção. Mas como garantir que o sistema não terá erros? Veremos como o Test-Driven Development pode ajudar a diminuir a quantidade de bugs e ainda mais: aumentar a confiança no código pelos programadores, melhorar a qualidade da modelagem do projeto e estimar prazos e custos com muito mais precisão. Como manipularemos código e nos basearemos fortemente em testes unitários, faremos uso do framework DUnit, uma ferramenta free e de código aberto, bastante utilizada Agile Development Gosto sempre de fazer uma analogia ao explicar metodologias ágeis. Nos primórdios das teorias da administração, um dos fundamentos básicos era a formalização. Todo e qualquer tipo de processo era formalizado (escrito) para que, posteriormente, se pudesse aprender com experiências passadas e entender como funciona a empresa. Com isso nasceu a burocracia. Algo relativamente bom se for seguido com disciplina, mas que pode atrapalhar e muito o andamento de uma organização. Hoje, vemos que o foco é realmente outro. A valorização nas pessoas é muito grande quando comparada a antigamente. A motivação do colaborador é muito importante para que tudo ocorra bem. Quebras na estrutura hierárquica das organizações também são práticas que vêm ganhando espaço para diminuir as barreiras à comunicação entre os funcionários. Se pararmos para analisar o desenvolvimento de software, algo muito mais novo veremos que a situação é muito semelhante. No início, não havia nenhuma forma de documentação. Após alguns anos, documentava-se tudo o que se podia especificar. Hoje, estamos vendo na prática que a documentação não deve ser o fim, mas o meio para chegarmos ao produto final. Por isso, metodologias ágeis vêm ganhando espaço ao lado de metodologias pesadas, fortemente baseadas em documentação como, por exemplo, o Unified Process, definido pelo RUP da empresa Rational. Outros motivos também levaram especialistas a pensar em processos mais ágeis na hora de desenvolver: Incompreensão nos requisitos, Mudança freqüente nos requisitos, Falta de planejamento, Mudança de equipe e Bugs e regressões freqüentes. Para resolver esses e outros problemas, celebridades na área, reuniram-se e escreveram o manifesto ágil, que define diversos pontos para eliminar barreiras ao desenvolvimento de software. Talvez a metodologia ágil mais comentada e utilizada hoje seja o eXtreme Programming, que define alguns pontos muito importantes e interessantes. Outras metodologias ágeis conhecidas são: Scrum, Crystal Clear, xUP, dX, MSF Agile etc. Qualidade no software Quando se fala em qualidade, logo temos em mente certificações ISO, CMMI etc. No entanto, esse tipo de controle de qualidade é aplicado basicamente aos processos utilizados, não ao produto final, que no caso é o sistema gerado. O que podemos observar hoje, no mundo do software, é uma enorme movimentação de empresas de grande porte para que seu produto final não contenha erros de programação. Com isso nasce um novo cargo muito bem visto atualmente: o de Quality Assurance (QA), que traduzido também significa Controle de Qualidade. Para se desenvolver um software é preciso levar em conta basicamente quatro quesitos: o tempo, os recursos (pessoal, financeiros etc.), os requisitos e a qualidade (Figura 1).
Figura 1. Os quatro pilares no desenvolvimento de software Se um desses pilares é afetado, certamente afetará os outros. Por exemplo, se o tempo está muito curto para a entrega do projeto, teremos que aumentar os recursos, contratando um funcionário, ou diminuir os requisitos e funcionalidades a serem implementadas, ou, o que quase sempre acontece, aumentar a velocidade na programação, deixando diversos bugs não corrigidos e causando enormes problemas. Outra situação muito comum em um projeto é a seguinte: na hora da implantação do programa no cliente, muitos erros acontecem. O prazo quase sempre está estourado, ou quase lá, e o usuário continua pedindo novas funcionalidades, alterações de módulos existentes e correções. Isso leva a não testar o que é feito e podemos chegar facilmente a um ciclo vicioso (Figura 2).
Figura 2. Ciclo vicioso de Kent Beck Se temos mais pressão, certamente construiremos menos testes ou fazê-los menos abrangentes. Quanto menos testes escrevermos, maior a probabilidade de introduzirmos erros na aplicação. Quanto mais erros a aplicação possuir, maior vai ser a pressão por parte do cliente para que os bugs sejam corrigidos e o sistema passe a funcionar perfeitamente. Ou seja, entramos em um ciclo muito comum e que se não for bem administrado pode levar um projeto a um estado de caos! Mas será possível não entrar em um ciclo evitando a tal situação de caos? A saída dada por Kent Beck em seu livro “Test-Driven Development: By Example” é muito simples: precisamos reverter a ordem. Quanto mais erros, mais testes devemos escrever. Quanto mais testes, menos bugs serão deixados no sistema. Com isso, o cliente fará menos pressão, o que nos deixará mais tranqüilos para codificar. Existem diversos tipos de testes de software executados por testers e equipes de QA nas empresas. Os mais utilizados e importantes são: Testes Unitários, Testes de Aceitação e Funcionais e Testes de Performance, Carga e Stress. O Test-Driven Development Agora que tivemos uma boa base sobre metodologias ágeis, qualidade e testes podemos começar a entender o que é e porque foi criada a metodologia Test-Driven Development. Elaborada basicamente por Kent Beck e formalizada no livro “Test-Driven Development – By Example”, essa não é uma metodologia de testes, mas sim, de desenvolvimento de software que pode ser facilmente integrada a outras delas como o tão conhecido XP.
Artigo Clube Delphi 78 - Desenvolvimento Ágil e Seguro com Test-Driven Development
Veremos como o Test-Driven Development pode ajudar a diminuir a quantidade de bugs e ainda mais: aumentar a confiança no código pelos programadores, melhorar a qualidade da modelagem do projeto e estimar prazos e custos com muito mais precisão.
Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.