TESTE DE SOFTWARE: O DESENVOLVIMENTO ORIENTADO A TESTES APLICADO AOS PEQUENOS DESENVOLVEDORES

Tipo de documento:TCC

Área de estudo:Tecnologia

Documento 1

A pesquisa se caracteriza como exploratória e descritiva com coleta de dados por meio de pesquisas bibliográfica e documental. Para a obtenção dos resultados, foram analisadas obras de autores clássicos e contemporâneos como Beck (2002-2010), Aniche (2012), Gomes (2013) e também pesquisa mercadológica a fim de entender o comportamento dessas pequenas empresas de desenvolvimento, objeto deste estudo, diante do TDD. Os resultados apontaram vantagens quanto à aplicação de testes automatizados ao mesmo tempo em que demonstraram algumas particularidades a serem analisadas para a tomada de decisão da efetiva implementação do TDD em casos específicos, à partir da observação analítica das principais alegações divergentes, levantadas neste estudo. Palavras-chave: Teste de software, Desenvolvimento orientado a testes, TDD. Introdução No intuito de assegurar a qualidade de seus projetos e manter a competitividade no mercado, a técnica TDD têm se mostrado uma prática de alta relevância nos processos de desenvolvimento de softwares para empresas de TI.

Conceito de Testes de Software e o TDD O teste de software, segundo Lazic & Mastorakis (2008), trata-se de uma prática que fornece não somente qualidade aos processos de desenvolvimento, como também qualidade, confiabilidade e visibilidade ao produto final. Faz-se possível, através das técnicas e métricas de testes, a compreensão da posição atual do desenvolvimento, bem como possibilita um planejamento mais eficaz quanto às fases de um projeto, de forma a mitigar e/ou reduzir os riscos envolvidos no processo de desenvolvimento e, posteriormente, produção. Aranha & Borba (2007), reafirmam essa linha de pensamento, definindo teste de software como uma atividade que agrega qualidade tanto ao processo de desenvolvimento, como ao produto final e, complementam, afirmando que a técnica vem sendo aprimorada por metodologias próprias, ferramentas de automação, bem como equipes capacitadas e independentes, tornando todo o processo mais acessível, embora os projetos de testes também possuam desafios comuns aos projetos de desenvolvimento, no que se refere a prazos e custos.

O processo de teste de software, segundo Zhou et alli (2013), pode ser definido como a execução sistemática do software com o objetivo de revelar falhas, sendo uma fase importante dos processos de desenvolvimento, no intuito de homologar e validar as correções necessárias. A etapas do teste de software são compostas da definição dos casos de teste, bem como a validação do comportamento da execução. Shyam e Green (2014) definem os princípios do TDD com algumas regras que ajudam a garantir um código enxuto ao dar um propósito a cada linha e, ainda que seja coeso e modular. Os autores acreditam que ao seguir essas regras, o teste passará a servir de especificação, podendo substituir a documentação do software em possíveis alterações futuras.

Os princípios são: • O código da funcionalidade somente é implementado no momento em que algum teste apresentar falha; • O código de teste dever ser escrito da forma mais simplificada possível a fim de fazê-lo passar; • A cada passo, elimina-se a duplicação; • Ao passarem todos os testes, inicia-se um ciclo novo com a próxima funcionalidade. De forma bastante similar, Aniche (2012) descreve esses passos, como sendo o ciclo de vida de um projeto de desenvolvimento orientado a teste: • Primeiramente, escrever um teste de unidade para funcionalidade que será desenvolvida; • O teste previamente escrito falha na execução; • Implementa-se então, o código simplificado até fazê-lo passar; • Sendo o teste executado com sucesso, realiza-se a refatoração do código a fim de melhorá-lo e remover duplicidades.

TDD na prática: O Desenvolvimento Orientado a Testes O Desenvolvimento Orientado a Testes ou, em inglês Test Driven Development (TDD), teve sua origem à partir da metodologia de desenvolvimento ágil, denominada Extreme Programming (XP2) de Kent Beck. Bernardo e Kon (2008) definem testes automatizados como sendo scripts ou programas simples cuja função é exercitar as funcionalidades do software a ser testado, fazendo verificações automáticas nas respostas ou efeitos obtidos. Os autores afirmam, ainda, que uma das vantagens dessa abordagem é que a totalidade dos casos de teste pode fácil e rapidamente ser repetida a qualquer tempo e com o mínimo esforço, pois são quase sempre escritos programaticamente, sendo, portanto, necessário conhecimento prévio de programação. No que se refere à utilização, o desenvolvimento orientado a teste é plurivalente e pode ser empregado em projetos de diferentes tamanhos e/ou complexidade.

Beck (2010) a esse respeito afirma que a quantidade de funcionalidades do sistema, aparentemente não influencia a efetividade do TDD, pois ao eliminar a duplicação tende-se a criar maior quantidade de objetos menores, podendo estes, serem testados de forma isolada independentemente do tamanho ou complexidade do sistema. Ao tratar sobre a escolha e opções de uso do TDD, Aniche (2012) menciona que o nível de experiência do desenvolvedor será determinante na definição sobre como, quando e onde a técnica será aplicada, já que é uma prática que será aplicada em todo o processo de construção de software que utiliza metodologias ágeis. Ao contrário do processo de desenvolvimento tradicional, o desenvolvido orientado a testes permite que os erros sejam detectados mais cedo; • Eleva a compreensão de requisitos do software: Segundo Beck (2002), se o programador não puder escrever os casos de testes previamente, ele sequer deveria iniciar a codificação da funcionalidade.

Tal pensamento corrobora com a concepção de Aniche (2012) sobre este ponto, que diz que o TDD auxilia o entendimento do problema que deverá ser resolvido; • Constantes Feedbacks: Requisitos de projeto podem sofrer alterações no decorrer do processo, em especial, se o projeto faz uso da metodologia ágil, e para atender satisfatoriamente à essas mudanças, os feedbacks constantes quanto ao correto desempenho das funcionalidades do software em processo de desenvolvimento é um benefício a mais para a produtividade, à partir da agilidade em responder, melhorar e corrigir. GOMES, 2013); • Produtividade: Aniche (2012) defende que, embora pode-se dar a impressão de maior investimento de tempo, por conta da programação dos casos e códigos de teste, no TDD a produtividade é aumentada pelo fato de ao finalizar cada funcionalidade, sabe-se que sua execução não apresentará erros, ganhando esse tempo que seria gasto apenas no final do projeto, em geral, de maneira mais onerosa.

As principais tecnologias e ferramentas disponíveis atualmente para o emprego de testes automatizados constam do Quadro 1. Quadro 1: Principais Tecnologias e Ferramentas de Automação de Testes Fonte: Adaptado de Publicação da Internet (TEIXEIRA, 2016) 4 Realidade e Comparativos do emprego de TDD em Empresas de TI Definidos os conceitos e importância do teste de software, em especial, os testes automatizados e o TDD, para a qualidade do produto final, faz-se relevante direcionar a atenção para a parte operacional quanto á implementação do ambiente de testes, orçamento de testes, dentre outros processos inerentes à prática de TDD e/ou testes em geral, e que, segundo o relatório Word Quality Report (2017), ainda possui deficiências no que se refere à preparação e capacitação dos profissionais de testes quanto ao uso das novas ferramentas e metodologias do setor.

O procedimento utilizado foi o estudo de campo de duas equipes de desenvolvimento onde a primeira utilizava a técnica TDD em seus processos de desenvolvimento e a segunda, corrigiria os erros do código somente ao final do projeto. Constatou-se neste estudo que equipe que aplicava técnicas de TDD, ou seja, que escrevia os testes anteriormente à implementação da funcionalidade, apresentou significativamente menos erros de caráter crítico no projeto que foi objeto do estudo; • Já o estudo feito de autoria de George e Willians (2003), que apresenta resultados quantitativos à partir de pesquisa realizada com programadores que utilizavam a técnica TDD em seus processos de desenvolvimento, constatou que 87,5% deles acreditavam que TDD tende a facilitar uma melhor compreensão de requisitos, ao passo que 95,8% disseram acreditar que houve redução no tempo levado usado para depuração.

Outros pontos importantes que foram descobertos nesse estudo diz respeito à produtividade, onde 78% dos programadores afirmaram aumento, 92% disse ter melhorado a qualidade do código, e, ainda, 79% afirmou perceber o design mais limpo e simplificado; • Nagappan e Bhat (2009) realizaram o estudo de duas empresa conjuntamente: a IBM e a Microsoft. Os resultados alcançados foram: as equipe de TDD produziram código entre 60% e 90% melhor no que se refere a ocorrência de defeito, ao ser comparada com a equipe convencional de desenvolvimento. Outro dado bastante relevante desta pesquisa é que as equipes-TDD precisam de um tempo maior para a conclusão dos seus projetos, entre 15% a 35% a mais. ARANHA, E. H. BORBA, P. H. An estimation Model for Test. Boston: Addison-Wesley Professional. BERNARDO, P. C. KON, F. A Importância dos Testes Automatizados.

Disponível em: < http://csse. usc. edu/TECHRPTS/1976/usccse76-500/usccse76-500. pdf>. Acesso em: 08 de março de 2018. GEORGE, B. WILLIAMS, L. An Initial Investigation of Test Driven Development in Industry. GIL, R. L. São Paulo: Casa do Código. LARMAN, C. BASILI, V. Iterative and Incremental Development: A Brief History. Disponível em: <http://www. Acesso em: 06 de março de 2018. LEMOS, M. motivos por que TDD falhou em ser mais utilizado. tradução do original de Manuel Lemos]. Disponível em: <https://imasters. com/bw/articles/2012-08-02/knight-shows-how-to-lose-440-million-in-30-minutes>. Acesso em: 08 de março de 2018. MULLER, M. HAGNER, O. Experiment about Test-first Programming, Software, IEEE Proceedings. Desenvolvendo com AngularJS: Aumento de produtividade com aplicações web estruturadas. São Paulo: Novatec. TEIXEIRA, T. ferramentas de automação de testes para projetos digitais.

Disponível em: <http://tiinside. Brief Contributions: Enhancing Performance of Random Testing through Markov Chain Monte Carlo Methods". IEEE Transactions On Computers.

249 R$ para obter acesso e baixar trabalho pronto

Apenas no StudyBank

Modelo original

Para download