TESTANDO MAIS PARA DEPURAR MENOS: OS BENEFICIOS DOS TESTES PARA O DESENVOLVIMENTO DE SOFTWARE

Documentos relacionados
UTILIZAÇÃO DE ARQUITETURA EM CAMADAS BASEADA NO MODEL VIEW CONTROLLER, EM APLICAÇÕES WEB

Agenda. O que é Testar? Por que testar? Quando testar? Processo de teste Níveis de teste Tipos de teste Classificação dos testes.

Prof. Me. Marcos Echevarria

SISTEMA DE CONTROLE DE MOVIMENTAÇÃO DE COLABORADORES

INTEGRAÇÃO JAVA COM ARDUINO

LINHAS MESTRAS; FASES; DISCIPLINAS; PRINCÍPIOS E MELHORES PRÁTICAS.

Qualidade de Produto. Maria Cláudia F. P. Emer

Seminário - Qualidade de Software/Testes de Software

Introdução. Qualidade de Produto. Introdução. Introdução ISO/IEC Normas

Desenvolvimento guiado por testes e ferramentas xunit

Relatório Técnico: Descrição do algoritmo para pesquisa automática dos egressos do curso de Ciência da Computação

Plano de Teste. Arndt von Staa Departamento de Informática PUC-Rio Maio 2014

Resolução da Prova de Raciocínio Lógico do STJ de 2015, aplicada em 27/09/2015.

Programa Competências Transversais

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

Resolução da Prova de Raciocínio Lógico do MPOG/ENAP de 2015, aplicada em 30/08/2015.

Estruturas de Repetição

1.1. Definição do Problema

CARTILHA DOS PROCEDIMENTOS DA BIOMETRIA

Apresentação da disciplina

Metodologias de Programação

Interpretações de Qualidade de Software. Interpretações de Qualidade de Software. Aspectos Importantes das Definições de Qualidade

Capítulo 3: Qualidade de Produto e a ISO 9126

O SOFTWARE LIVRE COMO FERRAMENTA DE ENSINO

Guia de desenvolvimento de um aplicativo para o sistema operacional Android

UMA ABORDAGEM SOBRE A EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO COM ÊNFASE EM ORIENTAÇÃO A OBJETO E ORIENTAÇÃO A ASPECTO

Engenharia de Software

Orientações Para o Preenchimento do Formulário de Inscrição Preliminar dos Projetos

3 Informações para Coordenação da Execução de Testes

Emax 2 O Disjuntor Aberto Inteligente de Baixa Tensão Acessório: Bobina de abertura e fechamento YO / YC / YO2 / YC2

Manutenção total aplicada em ferramentarias

Programação Orientada a Objetos. Professor Leonardo Cabral - Larback

alocação de custo têm que ser feita de maneira estimada e muitas vezes arbitrária (como o aluguel, a supervisão, as chefias, etc.

SISTEMA DE INFORMAÇÃO AO ACADÊMICO SIAWEB 1.0 PROJETO FÍSICO

Olá! Você verá a seguir um importante treinamento que vai facilitar suas atividades diárias!

Produção de Vídeos Didáticos: Tábua de Galton

GESTÃO DA MANUTENÇÃO

OpenPDV: Sistema aberto para gerenciamento de restaurantes

Manual do sistema SMARam. Módulo Reavaliação Financeira

Título : B1 INTRODUÇÃO. Conteúdo : INTRODUÇÃO

Circuitos Aritméticos

3. Numerar a coluna da direita conforme a da esquerda 1) Classe (2) :Aluno 2) Um dado objeto (3) oaluno:aluno 3) Objeto (1) Aluno

Planejamento Financeiro

Estudo de Viabilidade

Bem-vindo ao tópico sobre movimentos de mercadorias em estoque.

Parte 05 - Técnicas de programação (mapas de Veitch-Karnaugh)

Prof. Raul Sidnei Wazlawick UFSC-CTC-INE. Fonte: Análise e Projeto de Sistemas de Informação Orientados a Objetos, 2ª Edição, Elsevier, 2010.

CAPÍTULO O Método Simplex Pesquisa Operacional

Avaliação e Desempenho Aula 1 - Simulação

Modelos de Ciclo de Vida de Software

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo 6 - Threads

Algoritmo e Pseudo-código

e-nota G Módulo de Guarda da Nota Fiscal eletrônica

Orientação a Objetos

BLOCO K Jan EFD ICMS/IPI Bloco K

Requisitos legais. Para obter mais informações, consulte o documento Homologação de tipo.

Bem-vindo ao tópico sobre conceitos de determinação de preços.

Lista de Exercícios MMC e MDC

Algoritmos e Programação II

Onde está o peso extra? Série Problemas e Soluções. Objetivos 1. Estudar uma estratégia que valoriza ao máximo as informações disponíveis.

Árvore de Decisão. 3. Árvore de Decisão

Teste de Funções por Cobertura do Grafo de Fluxo de Controle

O SEBRAE E O QUE ELE PODE FAZER PELO SEU NEGÓCIO

Guia de Procedimentos Bloco C (SPED PIS/COFINS) Introdução... 2

Árvores de Decisão Matemática Discreta

Introdução à Algoritmos. Aula 11

Não pagando mico com plágio

PROVA DISCURSIVA. CESPE CEBRASPE TRT8 Aplicação: 2016

7.1 Estimativa de custos

Método estatístico de definição da amostra da pesquisa Análise do Mercado de Trabalho do Mercado de Trabalho de Bambuí MG

ESTUDO COMPARATIVO ENTRE A FERRAMENTA SMS- (SUPERVISOR MONITOR SCHEDULER) E A FERRAMENTA ECFLOW (FERRAMENTA DE WORK- FLOW) NA OPERAÇÃO DO CPTEC

MANUAL DO SISTEMA. Versão 6.05

Qual é o estoque mínimo que irá garantir o nível de serviço ao cliente desejado pela empresa?

Melhorias de Processos segundo o PDCA Parte IV

Ministério da Educação Instituto Nacional de Estudos e Pesquisas em Educação - INEP CONCEITO PRELIMINAR DE CURSOS DE GRADUAÇÃO

COMISSÃO PRÓPRIA DE AVALIAÇÃO DA FACULDADE ARAGUAIA

Processo de Desenvolvimento de Software

Gerenciamento de projetos (Project Management).

ACD Loteca Chaves e Filtro PRO 1.0 Dicas

PESQUISA OPERACIONAL: NA TOMADA DE DECISÕES ADMINISTRATIVA

Pagamento de complemento de salário-maternidade, considerando que este valor deve ser deduzido da guia de INSS, pois é pago pelo INSS.

PARECER DO NÚCLEO DE CÁLCULOS JUDICIAIS DA JFRS

3º Trabalho de GI Análise DFD

Relações. Antonio Alfredo Ferreira Loureiro. UFMG/ICEx/DCC MD Relações 1

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

Termo genérico que se aplica a vários tipos de diagramas que enfatizam interações de objetos.

Unidade 10 Análise combinatória. Introdução Princípio Fundamental da contagem Fatorial

PROJETO EM GESTÃO DE PRODUÇÃO

Capítulo VI Circuitos Aritméticos

Trabalhode Conclusão de Curso 1 GSI535. Prof. Dr. Rodrigo Sanches Miani FACOM/UFU

Fundamentos de Lógica Matemática

ANÁLISE DE FALHAS DE COMPUTADORES

Integralização do Curso Nova grade de Ciência Proposta

MATÉRIA TÉCNICA APTTA BRASIL

Programação Orientada a Objetos

Manual do Usuário. Quiz Online

Notas de aula de Lógica para Ciência da Computação. Aula 11, 2012/2

Transcrição:

TESTANDO MAIS PARA DEPURAR MENOS: OS BENEFICIOS DOS TESTES PARA O DESENVOLVIMENTO DE SOFTWARE Willian Gilson de Melo 1 Álvaro Ferraz d Arce 2 RESUMO: Neste artigo, serão abordadas três metodologias de testes de desenvolvimento de software, visando apresentar os benefícios da utilização de testes antes, durante e após o desenvolvimento. Palavras Chave: Testes. Caixa Branca. Caixa Preta. Testes Unitários. Qualidade de Software. 1 INTRODUÇÃO Atualmente a questão de testes é muito abordada na produção de produtos e na prestação serviços visto que as empresas querem cada vez mais ampliar a satisfação do cliente e consequentemente aumentar sua gama de vendas. No entanto quando referenciamos testes ao desenvolvimento de software, este requisito fica difundido apenas em grandes empresas visto que grande parte das pequenas empresas enxerga esta pratica como desperdício de tempo e dinheiro. Diante de tal pratica questiono vocês como desenvolvedor-empresários. Você viajaria em um avião que vai sair do chão pela primeira vez? Provável resposta: Não, quais os motivos que o levam a realizar testes falhos ou até menos não os realizar em seu projeto de software? Cumprir prazos? Diminuir custos? Estas e outras questões serão abordadas no decorrer deste artigo. 1 Discente do 4º ano do curso de Sistemas de Informação das Faculdades Integradas Antonio Eufrásio de Toledo de Presidente Prudente. willianmelo@unitoledo.br 2 MSc. em Ciência da Computação na linha de Engenharia de Software. Docente do curso de Sistemas de Informação das Faculdades Integradas Antônio Eufrásio de Toledo. alvaro@darce.com.br.

2 PORQUE TESTAR? Quando aplicamos testes eficazes temos a chance de diminuir inúmeras falhas de lógica e/ou programação, visto que se for utilizado algum método de testes de maneira correta os erros podem ser detectados e corrigidos quase no mesmo momento em que foram implementados, desta maneira otimizando o código e contribuindo para o bom desenvolvimento do software. Outro bom motivo para se utilizar dos testes é a satisfação do cliente, um produto final de qualidade vai fazer a diferença no momento de uma indicação, uma renovação de contrato, outra solicitação, etc. Um desempenho abaixo do esperado frustra os consumidores e custa ás empresas bilhões de dólares. (Menásce e Almeida, 2001). É plausível afirmar que quando os desenvolvedores ficam procurando e consertando falhas o projeto não evolui e consequentemente para no tempo por certo período. Como mostra a figura 1 quando não é aplicado nenhum tipo de teste eficaz no momento do desenvolvimento ou até mesmo antes da entrega se cria um ambiente de desenvolvimento ruim, tanto para empresas quanto para o desenvolvedor. FIGURA 1 Ciclo vicioso.

3 METODOLOGIAS DE TESTES Como vimos anteriormente os testes se fazem necessário para se desenvolver um produto de software com qualidade, a seguir serão explanados três tipos de metodologias de testes: testes unitários, caixa branca e caixa preta. 3.1 TESTES UNITARIOS TDD é o desenvolvimento de software orientado a testes, ou em inglês,test Driven Development. Ele se baseia em três passos, vermelho-verderefatora. O vermelho é a escrita do primeiro teste antes mesmo da lógica existir. O verde é o ponto em que a lógica para que o algoritmo previamente criado passe no teste. Esta lógica deve ser desenvolvida da maneira mais simples possível, eliminando complexidades desnecessárias e fazendo com que a evolução do código ocorra de maneira segura. O refatora é a melhoria do código testado. A figura 2 mostra este processo mais claramente. Ressaltando que os testes devem ser atualizados e devem evoluir junto com o desenvolvimento do software. FIGURA 2 - Processo para aplicação do TDD.

Fabio Gomes explicita em seu artigo sobre testes unitários que os benefícios da aplicação destes são: Em primeira instância, torna o processo mais confiável, reduz custos, pois desenvolvemos quando já sabemos o erro, visto que os testes são criados antes do processo de desenvolvimento, conseguimos testar constantemente. Outro ponto é que se os testes foram criados, isso quer dizer que foram entendidas as regras de negócio durante a fase de desenvolvimento dos testes unitários. Além dos benefícios citados, quando os testes são bem aplicados e estão atualizados também servem de documentação, para os desenvolvedores isto é ótimo, pois é mais pratico para eles analisarem o código dos testes para entender determinado algoritmo do que foliar paginas e paginas atrás dos métodos documentados. Existem vários frameworks que auxiliam no processo de criação de testes unitário o JUnit para Java, Jasmine para Javascripit, CUnit para C, entre outros. A seguir o exemplo passo-a-passo com a aplicação de testes unitários no desenvolvimento de uma calculadora se utilizando do framework JUnit e a IDE Netbeans. FIGURA 3 Criação do projeto e da classe Calculadora.

Na figura 3 é criado um projeto no Netbeans, chamado de ProjedoTDD e nele uma classe chamada Calculadora observem que não existe código algum nesta classe, mas já vamos criar os testes como mostra na figura 4. FIGURA 4 Criação dos testes. Já na figura 7, podemos começar a observar o processo citado na figura 2, onde os testes são criados para falhar.

FIGURA 5 Criação dos testes. FIGURA 6 Erro de teste. Após a criação dos testes e dos mesmos retornarem vermelho, é a hora da criação dos métodos da classe Calculadora (somar, subtrair, dividir e multiplicar). Como mostra na figura 6 e na figura 7.

FIGURA 7 Criação dos métodos da classe principal. Na imagem acima foi criada a classe principal e já foi executado o JUnit para analise, o mesmo passou (Verde), isto significa que se os testes foram aplicados de maneira eficiente e passaram, o código está livre de falhas. Não será necessário refatorar visto que o código é curto, e não possui redundância. 3.2 TESTES CAIXA BRANCA Teste caixa branca ou teste estrutural é uma metodologia é aplicada após o desenvolvimento de um módulo ou classe, e tem como intuito testar os caminhos possíveis, é necessário que o testador tenha amplo acesso e conhecimento em programação, visto que os testes serão aplicados no código fonte. Esta metodologia tem a intenção de testar se os caminhos e não se a lógica está correta. A desvantagem da técnica de caixa de caixa branca é que não analisa se a especificação esta certa, concentra apenas no código fonte e não verifica a lógica da especificação. (LEWIS e VEERAPILLAI, 2005). Este tipo de teste aumenta o custo do software visto que testar todos os caminhos será praticamente impossível e também muito árduo para o testador

A quantidade e quais os caminhos mínimos a serem testados são definidos por grafos, que são nada mais que a representação gráfica do código fonte, na figura 8 pode é possível observar os caminhos possíveis para determinado código fonte. FIGURA 8 Utilização de grafos. A técnica de testes caixa branca funciona melhor quando aplicada junto aos testes caixa preta, como foi dito acima o caixa branca apenas testa os caminhos e os testes do tipo caixa preta verifica a operacionalidade do sistema, ou seja, um faz o inverso do outro testando os dois lados do software (código e funcionalidade). 3.2 TESTES CAIXA PRETA Esta técnica visa testar a operacionalidade do sistema não se preocupando com o modo que foi implementado o software, basicamente teste as entradas e verifica as saídas de cada tela, módulo ou algoritmo. Por exemplo, verificar se um cpf foi validado, se é possível inserir uma data de nascimento igual a data atual ou até uma data futura, entre outros.

3.2.3 PARTIÇÃO DE EQUIVALÊNCIA Nesta parte do teste caixa preta é verificado as possíveis entradas e suas possíveis saídas de cada tela então é feito uma tabela que contem: Condições de entrada, classes de equivalência validas e classes de equivalência invalidas. A figura 9 mostra um exemplo de partição de equivalência. FIGURA 9 - Exemplo partição de equivalência. Visto que nas condições de entrada são definidas as entradas e seus respectivos tipos de condição de entrada. As classes válidas representam as condições de entrada que satisfazem os requisitos de entrada do módulo sendo testado, e as classes inválidas representam as condições de entrada que violam tais requisitos. 4 CONCLUSÃO A aplicação de testes no desenvolvimento de software está em ascensão, cada vez mais desenvolvedores e empresários do ramo estão descobrindo os benefícios da utilização dos testes de maneira eficaz, os resultados são vistos em

um produto final de qualidade, para empresa isto é excelente pois tem como feedback de seus esforços no investimento em testes: redução de custos, redução de manutenções de reparo, melhorias no código fonte, desenvolvedores mais preparados além de ter um cliente satisfeito. Ou seja, se os testes forem utilizados de maneira eficaz, o projeto como um todo terá um ganho em eficiência. 5 REFERENCIAS BROCKA, Bruce; BROCKA, M. Suzanne. Gerenciamento da qualidade. São Paulo: Makron Books, 1994. DELAMARO, Márcio Eduardo; MALDONADO, José Carlos; JINO, Mario. Introdução ao teste de software. Rio de Janeiro: Elsevier, Campus, 2007. KOSCIANSKI, André; SOARES, Michel dos Santos. Qualidade de software: aprenda as metodologias e técnicas mais modernas para o desenvolvimento de software. 2. ed. São Paulo: Novatec, 2007. PRESSMAN, Roger S. Engenharia de software. 6. ed. Porto Alegre: McGraw-Hill, Bookman, AMGH, 2010. Sommerville. Engenharia de software. 8. ed. São Paulo: Pearson Addison Wesley, 2007. TDD: FUNDAMENTO DO DESENVOLVIMENTO ORIENTADO A TESTES. Disponível em:< http://www.devmedia.com.br/tdd-fundamentos-do-desenvolvimento-orientado-atestes/28151#ixzz32d023yjz> Acesso em 12 de maio de 2014. TESTE DE CAIXA-BRANCA. Disponível em:< http://qualidade-desoftware.blogspot.com.br/2010/01/teste-de-caixa-branca.html> Acesso em 08 de maio de 2014. TESTES DE SOFTWARE - TESTE UNITÁRIO. Disponível em:< http://www.devmedia.com.br/testes-de-software-teste-unitario/22284> Acesso em 18 de maio de 2014. UMA VISÃO DA TÉCNICA DE TESTE DE CAIXA BRANCA. Disponível em: <http://www.devmedia.com.br/uma-visao-da-tecnica-de-teste-de-caixa-branca/15610> Acesso em 10 de maio de 2014.