UMA ABORDAGEM SOBRE TESTES AUTOMATIZADO DE SOFTWARES EM AMBIENTES DE DESENVOLVIMENTO



Documentos relacionados
O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

3 Qualidade de Software

GARANTIA DA QUALIDADE DE SOFTWARE

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

TESTE DE SOFTWARE COM XP. Isac Aguiar isacaguiar.com.br

APLICACAÇÃO DE METRICAS E INDICADORES NO MODELO DE REFERENCIA CMMI-Dev NIVEL 2

Projeto de Sistemas I

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB

Fundamentos em Teste de Software. Vinicius V. Pessoni

Governança de TI. ITIL v.2&3. parte 1

Gerenciamento da Integração (PMBoK 5ª ed.)

ENGENHARIA DE SOFTWARE I

Qualidade de Software. Profa. Cátia dos Reis Machado

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

UTILIZAÇÃO DAS METODOLOGIAS ÁGEIS XP E SCRUM PARA O DESENVOLVIMENTO RÁPIDO DE APLICAÇÕES

22 DICAS para REDUZIR O TMA DO CALL CENTER. em Clínicas de Imagem

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

ANÁLISE COMPARATIVA ENTRE OS MODELOS DE PROCESSO: PROTOTIPAÇÃO, PSP E SCRUM

Com metodologias de desenvolvimento

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

Gestão de Relacionamento com o Cliente CRM

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

PRODUTOS RIOSOFT COM SUBSÍDIO SEBRAEtec

MASTER IN PROJECT MANAGEMENT

Sistema de HelpDesk da SESAU Guia do Usuário

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

TI Aplicada. Aula 02 Áreas e Profissionais de TI. Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com

QUALIDADE DE SOFTWARE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Corporativo. Transformar dados em informações claras e objetivas que. Star Soft.

INTRODUÇÃO A PORTAIS CORPORATIVOS

Processos de Desenvolvimento de Software

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Jonas de Souza H2W SYSTEMS

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

Desenvolvimento Ágil de Software

Plano de Gerenciamento do Projeto

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Estabelecer os procedimentos para o gerenciamento dos sistemas e demais aplicações informatizadas do TJAC.

Introdução a Computação

Tipos de teste de software

Prof. Marcelo Henrique dos Santos

Gerência de Projetos

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

SAM GERENCIAMENTO DE ATIVOS DE SOFTWARE

ISO/IEC 12207: Gerência de Configuração

PLANEJAMENTO ESTRATÉGICO

Engenharia de Software

5. Métodos ágeis de desenvolvimento de software

Gerenciamento de software como ativo de automação industrial

Prof. Me. Marcos Echevarria

Sistemas de Informação I

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

Registro e Acompanhamento de Chamados

Engenharia de Software I

LEVANTAMENTO DE REQUISITOS DE FORMA ENXUTA

3. Fase de Planejamento dos Ciclos de Construção do Software

Qual a diferença entre certificação e acreditação? O que precisamos fazer para obter e manter a certificação ou acreditação?

A IMPORTÂNCIA DA GESTÃO DE CUSTOS NA ELABORAÇÃO DO PREÇO DE VENDA

Guia do usuário GLPI. Versão Modificada- Thiago Passamani

Project Charter. 1.1 Justificativa do projeto

SISTEMAS DE GESTÃO São Paulo, Janeiro de 2005

A Grande Importância da Mineração de Dados nas Organizações

MDMS-ANAC. Metodologia de Desenvolvimento e Manutenção de Sistemas da ANAC. Superintendência de Tecnologia da Informação - STI

Manual Geral do OASIS

Conceitos ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO. Comunicação; Formas de escritas; Processo de contagem primitivo;

FURB - Universidade Regional de Blumenau TCC - Trabalho de Conclusão de Curso Acadêmico: Fernando Antonio de Lima Orientador: Oscar Dalfovo

Gestão do Conhecimento A Chave para o Sucesso Empresarial. José Renato Sátiro Santiago Jr.

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

Prova de Conhecimento para Consultores de Implementação MPS.BR INSTRUÇÕES

CAPÍTULO 3 PLANO DE MANUTENÇÃO

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie

Portnet: SAP Business One prepara empresa para crescimento contínuo

NORMA ISO/IEC Isac Aguiar isacaguiar.com.br

Estruturando o modelo de RH: da criação da estratégia de RH ao diagnóstico de sua efetividade

A IMPORTÂNCIA DA ATIVIDADE DE TESTE NO DESENVOLVIMENTO DE SOFTWARE

Qualidade na gestão de projeto de desenvolvimento de software

Prof. Dr. Ivanir Costa. Unidade III QUALIDADE DE SOFTWARE

Técnicas de Caixa Preta de Teste de Software

Melhoria no Desenvolvimento Ágil com Implantação de Processo de Integração Contínua Multiplataforma para Java e.net. Hudson

Projeto Você pede, eu registro.

Gerenciamento de Integração do Projeto Planejamento e Execução do Projeto

Organização e a Terceirização da área de TI. Profa. Reane Franco Goulart

Cláudia Araújo Coordenadora Diego Macêdo Programador Marcelo Rodrigues Suporte

4o ENCONTRO DE USUÁRIOS DE BI

Engenharia de Software III

Metodologia de Gerenciamento de Projetos da Justiça Federal

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

AUTOR(ES): IANKSAN SILVA PEREIRA, ALINE GRAZIELE CARDOSO FEITOSA, DANIELE TAMIE HAYASAKA, GABRIELA LOPES COELHO, MARIA LETICIA VIEIRA DE SOUSA

Pós Graduação Engenharia de Software

AVALIAÇÃO DE INTERFACES UTILIZANDO O MÉTODO DE AVALIAÇÃO HEURÍSTICA E SUA IMPORTÂNCIA PARA AUDITORIA DE SISTEMAS DE INFORMAÇÕES

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Seleção de ferramentas para ambientes de desenvolvimento de software

Políticas de Qualidade em TI

Implantação de um Processo de Medições de Software

Transcrição:

UMA ABORDAGEM SOBRE TESTES AUTOMATIZADO DE SOFTWARES EM AMBIENTES DE DESENVOLVIMENTO Robson L. Nascimento 1, Késsia R. C. Marchi¹ 1 Universidade Paranaense (UNIPAR) Paranavaí-PR-Brasil robsonluisn@yahoo.com.br, kessia@unipar.br Resumo. Um software computacional independente de sua área de atuação deve no mínimo atender as necessidades para o qual foi desenvolvido. Garantir que este funcione de tal maneira, que satisfaça a solicitação do cliente não é uma tarefa fácil. Para isto existem técnicas de desenvolvimento que auxiliam na busca pela qualidade deste produto. Os testes são fundamentais para se chegar a este objetivo. A informação pode existir de diversas formas, mas é preferível não tê-la, a usá-la de maneira incorreta ou desatualizada. Este artigo é constituído de informações referentes a testes automatizados de software cujo objetivo é enfatizar as informações referente a esses testes. 1. Introdução Ter um produto computacional pronto, nos dias atuais, não é garantia de que esse esteja de acordo com as especificações solicitadas, nem que o mesmo possui a qualidade em seu trabalho quando for executado. Qualidade compreende o grau de atendimento (ou conformidade) de um produto, processo, serviço ou ainda um profissional com requisitos mínimos estabelecidos em normas ou regulamentos técnicos. Ou seja, atender as especificações solicitadas, de tal forma que atenda a necessidade satisfazendo o cliente ou superando as expectativas do mesmo. (INMETRO - 2013). Para Cheque e Kon [2008] não é uma tarefa fácil alcançar uma boa qualidade em um software, pois os mesmos são complexos, e envolvem problemas no processo de desenvolvimento como decisões, questões humanas, técnicas, burocráticas de negócio e políticas. Para garantir que a qualidade exista em um software, a Quality Assurance QA (garantia de qualidade), envolve muito mais do que teste (funcionais, unitários, regressão, performance), deve se gerar artefatos que documentem, acompanham e comprovem que seu software possua um nível 'x' de qualidade, mas não acrescenta qualidade ao produto apenas evidencia a qualidade que ele já tem. Estas informações podem revelar, por exemplo, a quantidade de defeitos encontrados por características e requisitos funcionais ou não-funcionais. [HENDRICKSON 2007]. Em muitos casos, os testes são realizados apenas no final do projeto o que pode agravar o custo do produto, pois quando os problemas são encontrados somente no final, será necessário reavaliar toda a estrutura produzida e verificar se estes estão de acordo tornando-se uma atividade cara, pois

agregará mais investimento em mão de obra qualificada e especializada, ferramentas e ambientes apropriados para a execução das atividade, além da elaboração, execução e avaliação dos resultados. [LUDMILA 2011]. Os testes é a melhor maneira de avaliação para obtenção da documentação e entendimento sobre o nível de qualidade do software produzido para este procedimento foram criadas diversas ferramentas que trabalham lado a lado com desenvolvedores e gerentes de projeto. Estas ferramentas dão a equipe de desenvolvimento mais agilidade na obtenção de resultados de testes. Estes são chamados de testes automatizados trazendo funcionalidades extremamente importante para obtenção dos resultados produzidos e esperados pela equipe, durante a construção do produto. Este artigo é composto por informações referentes aos testes automatizados de softwares. Nele poderá encontrar-se um conceito básico de implementação de teste de software automatizado utilizando a ferramenta JUint, além de conhecer algumas ferramentas que possam auxiliar na execução deste processo. 2. Testes de Software e a Automatização dos Processos de Teste Pressman [2006] afirma que o teste de software é um fator decisivo para garantir a qualidade de um programa fazendo então, com que esses sejam feitos por ferramentas e não mais por mão de obra humana. Uma boa referência para construção de projetos de software poderia ser a engenharia aeronáutica, na qual, para se chegar a construção de uma aeronave, todos seus componentes são testados, isoladamente, até a exaustão e após estes, cada etapa de integração é testada e homologada. Testes automatizados são programas ou scripts que exercitam funcionalidades do sistema possibilitando que a cada mudança no código do programa os testes possam ser novamente executados. Muitos engenheiros pensam ainda que ferramentas de automação farão toda a execução dos testes, desde o planejamento, execução e métricas. [NOGUEIRA 2010]. Quando na verdade este processo depende do empenho de toda a equipe, pois as ferramentas auxiliam em um feedback mais rápido, dando a oportunidade de correção momentânea. Apesar de não existir uma categoria para as ferramentas de testes, Cristiano Caetano, aponta 8 áreas distintas sendo elas: Ferramentas de automação de testes de regressão, ferramentas para gestão de defeitos, ferramentas para testes de performance/estresse, ferramentas manuais, ferramentas de rastreabilidade, ferramentas de cobertura de código, ferramentas para gestão de testes, ferramentas de apoio à execução dos testes. [CAETANO 2007]. Estas ferramentas, trazem consigo inúmeras vantagens, pois mudanças no sistema podem ser feitas com segurança, o que aumenta a vida útil do produto, verificando cada parte do sistema. Destacam-se algumas das ferramentas mais utilizadas pelas empresas que buscam atingir um nível de qualidade condizente com o mercado, são elas: Testes funcionais Selenium, soapui, BadBoy, Quick Test Pro Teste Unitário Junit, TestNG,NUnit Teste de Performance Jmeter, Performance Tester, LoadRunner Teste de Segurança - appscan, Acunetix

O modo convencional de desenvolvimento de uma funcionalidade é estudar o problema, pensar em uma solução e, em seguida, implementá-la. Após esses três passos, o desenvolvedor faz testes manuais para verificar se está tudo funcionando como o esperado. É normal que defeitos sejam detectados ao longo do processo de desenvolvimento, então os desenvolvedores precisam encontrar o defeito, corrigi-lo e refazer o conjunto de testes manuais. [BERNARDO 2008] Na necessidade de garantir que um produto funcione corretamente, foi criado por Kent Beck o desenvolvimento guiado por testes (TDD). Uma técnica de desenvolvimento que auxilia o programador a ter um melhor designe do código. No TDD é construída uma série de testes de cada peça da aplicação antes do desenvolvimento desta peça, para garantir que a mesma funcione corretamente como um todo. [LOPES 2012] As ferramentas são um auxílio indispensável. Os testes podem ser repetidos inúmeras vezes em um curto espaço de tempo, estes podem conter regras de testes diferentes como gravação de dados, atualização exclusão, acesso permitido, classes de negócios, dentre muitos outros. Os testes podem ser realizados em partes, alguns exemplos de estratégia de testes são destacados por Palma [2012]: Teste de Unidade - Teste em um nível de componente ou classe. É o teste cujo objetivo é um verificar um pedaço do código. Teste de Integração - Garante que um ou mais componentes combinados (unidades) funcionam. Podemos dizer que um teste de integração é composto por diversos testes de unidade. Teste de regressão - Toda vez que algo for mudado, deve ser testada toda a aplicação novamente. Teste de caixa-preta - Testar todas as entradas e saídas desejadas. Não se está preocupado com o código, cada saída indesejada é vista como um erro. Teste caixa-branca - O objetivo é testar o código. Às vezes, existem partes do código que nunca foram testadas. Teste Funcional - Testar as funcionalidades, requerimentos, regras de negócio presentes na documentação. Validar as funcionalidades descritas na documentação (pode acontecer de a documentação estar inválida). Teste de Performance - Verificar se o tempo de resposta é o desejado para o momento de utilização da aplicação. Teste de carga - Verifica o funcionamento da aplicação com a utilização de uma quantidade grande de usuários simultâneos. Testes de Segurança - Testar a segurança da aplicação das mais diversas formas. Utilizar os diversos papéis, perfis, permissões, para navegar no sistema. Seguindo as especificações citadas, a possibilidade de encontrar problemas é muito grande, e estas verificações mínimas dão um nível de qualidade do software que foi produzido. Se estas verificações forem realizadas durante a fase de construção do projeto o custo para esta abordagem é relativamente menor do que adotar as verificações na fase de implantação e homologação. Na grande maioria das vezes, os testes automatizados são escritos programaticamente, por isso é necessário conhecimento de programação. Nas seções seguintes, são exibidos alguns exemplos de código de testes automatizados que utilizam algumas ferramentas.

3. Exemplo de Teste Automatizado de Unidade Para se colocar em prática a automação de testes o primeiro passo que se utilizará será o testes de unidade, que verifica as classes unitariamente. Ou seja uma a uma. O teste de unidade é focado em trechos do código, encapsulado por uma unidade que garantirá o que está sendo reproduzido com o esperado, [BERNARDO 2008]. Com o auxílio da versão 4 da framework JUnit. A estrutura de uma classe de testes do JUnit segue as seguintes especificações citadas por Firmino [2013]: setuptest(): método que é executado antes do teste. Este método deve vir acompanhado da anotação @BeforeClass. teardowntest(): método que, ao final de todos os testes, é executado para encerrar uma instância do navegador, fechar uma conexão com um banco de dados etc. Esse método deve vir acompanhado da anotação @AfterClass. Através dos métodos assert, analisamos os dados de entrada e de saída de um sistema. Para fins de estudo a classe principal Calculadora (figura 1) executa algumas operações matemáticas, cujo objetivo é verificar se estas operações retornam aos valores esperados, executando os testes pela classe junit CaluladoraSoma (figura 2), as figuras 1 e 2 seguindo os exemplos citados pelo autor. Figura 1 Classe Principal Calculadora Figura 2 Método de Teste O resultado esperado são confirmado pela ferramenta como exibe a figura 3, executando 3 testes seguidos em menos de um segundo. Figura 3 Resultado do Teste

Metodologia Para produção deste documento, foram realizadas pesquisas em sites especializados no assunto e artigos científicos de profissionais atuantes na área de testes de softwares automatizados, seguida pelo desenvolvimento de uma aplicação prática de teste que completa este artigo. Conclusão Torna-se indispensável nos dias atuais, em que as tecnologias evoluem de um dia para o outro garantir que os produtos ofertados funcionem de acordo com o especificado. Para se chegar a uma qualidade satisfatória os testes são fundamentais nos feedback da funcionalidade dos produtos ofertados. Automatização deste processo é uma maneira eficaz de passar para o computador funcionalidades que as vezes passam despercebido a olhos humanos. Não é necessário reinventar a roda, empresas mais competitivas são as empresas que trabalham sob a ótica da melhoria contínua dos processos. [CAETANO 2007]. Utilizar-se de ferramentas já existentes cuja eficiência em ação é confirmada, é uma boa maneira de evitar desperdício de tempo e recursos para que a prática deste trabalho entre em ação. Referencias Bernardo, P. (2008) A Importância dos Testes Automatizados http://www.devmedia.com.br/artigo-engenharia-de-software-3-a-importancia-dostestes-automatizados/9532#ixzz2z4n2nk00. Acessado em 15/07/2013. Caetano, C. (2008) Automação e Gerenciamento de Testes: Aumentando a Produtividade com as Principais Soluções Open Source e Gratuitas: http://www.testexpert.com.br/?q=blog/2. Acessado em 25/07/2013. Firmino B. (2013) Introdução aos Testes Funcionais Automatizados com JUnit e Selenium WebDriver http://www.devmedia.com.br/introducao-aos-testesfuncionais-automatizados-com-junit-e-selenium-webdriver/28037#ixzz2z8guoiui Hendrickson, E. (2007) - O papel de "Quality Assurance" em projetos ágeis http://blog.improveit.com.br/articles/2007/01/11/o-papel-de-quality-assurance-emprojetos-ageis. Acessado em 10/07/2013 Inmetro Qualidade - Avaliação da Conformidade: Disponível em http://www.inmetro.gov.br/qualidade/ Acessado em 10/06/2013. Ana Ludmila - 2011: Testes de software: Objetivos http://bugbox.com.br/compartilhar/219#more-219. Acessado em 10/6/2013. Ana Ludmila - 2011: Custo do defeito do software http://bugbox.com.br/compartilhar/405#more-405, Acessado em 10/6/2013. Palma F. (2012) Tipos de teste http://testesdesoftware.blogspot.com.br/ Acessado em 10/07/2013. Pressman, R. S.(2006): Engenharia de Software - 6ª Ed. Lopes C. 2012 Princípios do Test Driven Development (TDD) http://imaster.com.br/artigo/24242/desenvolvimento/principios-de-test-drivendevelopment-tdd/ Acessado em 04/08/2013.