Teste de software.pdf

8
Teste de Software Renan F. Neto 1 , Alex S. Chervenski 1 , Arthur P. Pugliero 1 , Leandro R. Abi 1 , Vinicius N. Machado 1 1 Engenharia de Software – Universidade Federal do Pampa (UNIPAMPA) 91.501-970 – Alegrete – RS – Brasil {renan.netto,alex.chervenski,vini-machado}@hotmail.com,{ledz409, arthurpugliero}@gmail.com Resumo. Este artigo descreve o contexto de teste de software feito através de uma revisão bibliográfica de vários autores. É descrito a definição, aplicação, ferramentas, benefícios e desafios de testes em software a fim de trazer clareza para pessoas que não possuem experiência ou conhecimento deste assunto, priorizando testes de unidade, sistema e integração. 1. Introdução Os Softwares estão presentes em nossas vidas com inúmeras finalidades. Seja para efetuar uma compra até fazer um simples cálculo. Mas para que funcionem de forma plena, é preciso que suas funcionalidades não possuam erros. Os testes de software têm o objetivo de encontrar os erros e corrigi-los. O presente trabalho aborda o que são, as ferramentas e técnicas que auxiliam no desempenho dos testes, beneficiando a qualidade do programa. 2. Definição O teste é uma das etapas do desenvolvimento de software, na maioria das vezes esses testes são feitos pelos próprios desenvolvedores e usuários do sistema, que serve apenas para garantir que o que foi pedido no software foi realmente implantado [Mauro Pezze, Michal Young]. Mas esse não é o principal objetivo de testar um software, esse processo todo possui três objetivos: Melhorar o processo de software (Prevenção, detecção e remoção de erros) Avaliar a qualidade do produto (Metas de qualidade) Melhorar a qualidade e rentabilidade do produto. Esses três objetivos do teste sendo apenas feitos pelos desenvolvedores e usuários não são suficientes, por mais que sejam desenvolvedores de software, muitas vezes são necessários profissionais capacitados que utilizam métodos e processos de testes claramente definidos. O processo de teste deve começar junto com o desenvolvimento do software, pois quanto antes é detectado um problema, mais barato será o custo para resolvê-lo, e o custo total de um software se torna mais barato quando bem testado [Anderson Bastos]. 2.1. Teste de Unidade

Transcript of Teste de software.pdf

Page 1: Teste de software.pdf

Teste de Software

Renan F. Neto1, Alex S. Chervenski

1, Arthur P. Pugliero

1, Leandro R. Abi

1,

Vinicius N. Machado1

1Engenharia de Software – Universidade Federal do Pampa (UNIPAMPA)

91.501-970 – Alegrete – RS – Brasil

{renan.netto,alex.chervenski,vini-machado}@hotmail.com,{ledz409, arthurpugliero}@gmail.com

Resumo. Este artigo descreve o contexto de teste de software feito através de

uma revisão bibliográfica de vários autores. É descrito a definição, aplicação,

ferramentas, benefícios e desafios de testes em software a fim de trazer

clareza para pessoas que não possuem experiência ou conhecimento deste

assunto, priorizando testes de unidade, sistema e integração.

1. Introdução

Os Softwares estão presentes em nossas vidas com inúmeras finalidades. Seja para

efetuar uma compra até fazer um simples cálculo. Mas para que funcionem de forma

plena, é preciso que suas funcionalidades não possuam erros.

Os testes de software têm o objetivo de encontrar os erros e corrigi-los. O

presente trabalho aborda o que são, as ferramentas e técnicas que auxiliam no

desempenho dos testes, beneficiando a qualidade do programa.

2. Definição

O teste é uma das etapas do desenvolvimento de software, na maioria das vezes esses

testes são feitos pelos próprios desenvolvedores e usuários do sistema, que serve apenas

para garantir que o que foi pedido no software foi realmente implantado [Mauro Pezze,

Michal Young].

Mas esse não é o principal objetivo de testar um software, esse processo todo

possui três objetivos:

Melhorar o processo de software (Prevenção, detecção e remoção de erros)

Avaliar a qualidade do produto (Metas de qualidade)

Melhorar a qualidade e rentabilidade do produto.

Esses três objetivos do teste sendo apenas feitos pelos desenvolvedores e

usuários não são suficientes, por mais que sejam desenvolvedores de software, muitas

vezes são necessários profissionais capacitados que utilizam métodos e processos de

testes claramente definidos.

O processo de teste deve começar junto com o desenvolvimento do software,

pois quanto antes é detectado um problema, mais barato será o custo para resolvê-lo, e o

custo total de um software se torna mais barato quando bem testado [Anderson Bastos].

2.1. Teste de Unidade

Page 2: Teste de software.pdf

Esse teste focaliza em verificar a menor unidade do projeto do software, ele testa cada

componente e caminho para descobrir e mostrar cada erro do sistema. Esse teste pode

ser feito paralelamente para vários componentes e testes [Pressman].

2.2. Teste de integração

O teste de integração é uma técnica para construir a arquitetura do software ao mesmo

tempo em que ele conduz testes para descobrir erros nas interfaces. O objetivo deste

teste é construir uma estrutura do programa a partir dos testes feitos em unidade

[Pressman].

2.3. Teste de sistema

Ele irá avaliar e testar o software em busca de erros como se fosse o usuário final do

software, ele irá verificar se o produto está satisfazendo os seus requisitos [Arilo

Cláudio Dias Neto, Artigo científico].

2.4. Teste da caixa branca

Teste que têm como base o código fonte do sistema, com o objetivo de que suas linhas

tenham sido executadas ao menos uma vez, garantindo seu bom funcionamento [Pezzé

M. , Young M. , Teste e análise de Software, 2007].

2.5. Teste da caixa preta

Têm como base as entradas e saídas do programa, concentrando-se nos requisitos

funcionais do Software, deixando de lado detalhes internos do sistema. É mais eficaz

em encontrar falhas que escapam do teste da caixa branca [Pezzé M. , Young M. , Teste

e análise de Software, 2007].

3. Aplicação

Nesta seção falaremos sobre algumas técnicas e estratégias que atuam na melhora de software.

3.1 Teste de Unidade

Processo feito na fase de desenvolvimento, em que se testam as menores unidades ou

trechos de código do software, sendo preciso que essas unidades estejam prontas em

algum estágio. Existe uma ferramenta de automação, conhecido como J.UNIT, que

facilita este teste [Molinari L., Testes de Software, 2011].

Esse teste traz alguns benefícios [Molinari, 2010, p.62]:

Encontrar problemas mais cedo no processo de desenvolvimento, evitando perda

de tempo e gastos além do previsto.

O teste na unidade pode ser reaproveitado em outro software.

3.2. Teste de integração

Tem inicio após o término do teste unitário. Seu objetivo é garantir que um ou mais

componentes que já passaram pelo teste de unidade de forma individual estejam

cumprindo com suas finalidades de forma integrada [Bastos L., Emerson R., Base de

conhecimento em testes de Software, 2007].

3.3. Teste de Sistema

Page 3: Teste de software.pdf

Deve ter início logo após o teste de integração. Seu objetivo é verificar o

comportamento do sistema, se suas funcionalidades realmente estão de acordo com o

desejado pelo usuário. Esse teste possibilita a liberação da aplicação para produção, no

caso de ter sido aprovada [Bastos L. , Emerson R., Base de conhecimento em testes de

Software, 2007].

Para que esse teste seja executado com sucesso deve ser seguido alguns passos:

O ambiente do teste deve estar configurado de forma próxima ao de produção;

Avaliar os resultados e averiguar se os problemas são realmente defeitos;

Executar o teste novamente no caso de o defeito ser corrigido.

Os tipos de testes são variados, cada um contribuindo para a melhoria das

aplicações. Seria difícil utilizar todos, então se deve analisar cada caso:

Se o enfoque da aplicação é o negócio, usa-se o teste da caixa preta[ Molinari L.

, Testes de Software, 2011].

Se é a interface, usa-se Caixa preta [Molinari L. , Testes de Software, 2011].

Se for um componente, utiliza-se Caixa branca [Molinari L., Testes de Software,

2011].

Teste funcional, geralmente são mais baratas de projetar e executar do que casos

de teste estrutural [Pezzé M. , Young M. , Teste e análise de Software, 2007].

4. Ferramentas

A aplicação de critérios de teste sem apoio de ferramentas automatizadas tende a ser

uma atividade propensa a erros e limitada a programas muito simples. Tal aspecto

motiva o desenvolvimento de ferramentas automatizadas para auxiliar na condução de

testes efetivos e na análise dos resultados obtidos.

O teste é uma fase dispendiosa do processo de software. Sendo Assim, as

ferramentas de teste estão entre as primeiras ferramentas de software a serem

desenvolvidas, oferecendo uma variedade de recursos e seu uso podendo reduzir

significativamente os custos de testes [Sommerville].

Duas razões básicas para a importância da automação de testes de software:

Crescimento dos sistemas e aplicações (Cada Vez Maiores)

Aumento da complexidade dos sistemas (Cada vez maiores) [Molinari L. 2008].

Page 4: Teste de software.pdf

Tabela 1. Ferramentas e aplicações

Quando usados para teste de sistemas de grande porte, as ferramentas devem ser

configuradas e adaptadas para o sistema específico a ser testado. Por exemplo:

Novas ferramentas podem ser adicionadas para testar características específicas

da aplicação e algumas ferramentas de teste existentes podem não ser

necessárias.

Podem ser escritos scripts para simuladores de interface como o usuário e

padrões definidos para os geradores de dados de teste. Formatos de relatório

podem também ser definidos.

Conjuntos de resultados esperados de teste podem ser preparados manualmente

caso as versões anteriores do programa não estejam disponíveis para

funcionarem como um oráculo.

Podem ser escritos comparadores de arquivos com propósitos específicos e que

incluam o conhecimento da estrutura dos resultados do teste no arquivo

[Molinari 2008].

4.1. Problema das ferramentas

A escolha das ferramentas foi mal conduzida de modo que a ferramenta mais

adequada não foi escolhida.

A implantação foi mal feita: instalações, licenças com problemas etc.

Pensou que a ferramenta seria a solução para tudo, mas não é.

A ferramenta possui muitos defeitos que não foram corrigidos.

5. Benefícios

A maior vantagem em realizar testes de software é obter menor custo com reparos e

economizar tempo com técnicas durante o processo.

O software com testes realizados, durante o programa, estará com maior

qualidade de software, sua margem de orçamento estará mais perto do previsto ao final

do processo de engenhar um programa [Mauro Pezzé,Michael Young,2008].

Page 5: Teste de software.pdf

Quanto mais cedo os testes são implementados, maiores são os benefícios,

evita que bugs se espalhem pela aplicação e os tornam mais fáceis de serem corrigidos;

o teste deve ser feito em todo o processo de realização do software para maior

segurança de que erros não sejam repetidos durante a programação [Leonardo

Molinari,2008]

Teste de Software procura provar que o programa não funciona, e a Depuração

deve localizar as causas que levaram o software a falha e indicar como deve ser

corrigido. Existem pessoas encarregadas para depurar os erros, mas recentemente têm

sido feito muitos esforços, visando a técnica para melhorar a qualidade e a

produtividade nessa atividade, como por exemplo ter uma melhor aplicação de testes em

cima do programa, recolhendo informações mais precisas de onde ocorreram falhas,

deixará com um campo mais específico de onde deve-se depurar erros; o que é um

grande benefício pois depurar mais rapidamente e com segurança os erros nos testes, é

ter garantia de maior confiabilidade no programa, o que é a maior meta existente na

equipe desenvolvedora de um software [Márcio Eduardo Delamaro, José

Carlos Maldonado, Mario Jino,2007].

5.1. Teste de Integração

Benefício em integração se ocorre no fato de que o teste pode-se unir subsistemas, e

poder controlar uma coleção de módulos e assistir as interações, essas que várias vezes,

por serem complexas, escondem falhas quando sozinhas, otimizando-se o tempo

[Mauro Pezzé,Michael Young,2008].

5.2. Teste de Sistema

Nesse teste, por ser um teste onde exigirá todo o complexo do programa, indicará se o

mesmo está com seus subsistemas em perfeitas condições, onde o benefício se encontra

em ver se o programa funciona perfeito como um todo, podendo-se obter um software

com maior qualidade, segurança e maior poder de manutenção

[Mauro Pezzé,Michael Young,2008].

5.3. Teste de Unidade

Esse teste por ser um teste muito detalhista ,devido ao fato de testar o sistema por suas

menores unidades, ele consegue obter maior êxito entre os testes gerando um grande

benefício de com relação a tempo estimado para melhor aproveitá-lo e também gerando

uma maio qualidade em certeza de estar compilando os erros com maior confiança

[Mauro Pezzé,Michael Young,2008].

6. Desafios

6.1. Fator humano

Hoje em dia softwares estão em todo lugar, de brinquedos a armas, do sistema de micro

empresas ao sistema bancário, entretanto são escritos por seres humanos que podem

errar.

E não há como negar, pois os bugs sempre existem. Mas então, o que fazer a

respeito? Testar. Não há como deixar uma aplicação livre de falhas, o que se faz na

verdade é diminuir o risco das tais acontecerem.

Para isso deve se ter em conta que o fator humano é um grande desafio a ser

superado e, portanto, um bom gerenciamento é necessário [Molinari L., 2011].

Page 6: Teste de software.pdf

6.2. Gerenciamento

Em algumas organizações o trabalho de testar fica com os próprios programadores, o

que na verdade é errado, pela alta sobrecarga de tarefas que acarreta ao profissional. Já

outras têm uma equipe específica de testadores, o que também gera certo “relaxamento”

na equipe de desenvolvedores, que por vezes deixa passar bugs que poderiam ser

corrigidos no momento da programação, delegando aos testadores uma função a mais.

Também há casos de inimizade entre programadores e testadores, pois estes

apontam as falhas que ocorrem na programação. Mas cabe ao gerente de produção

resolver estes problemas, pois não há como trabalhar em equipe se essas situações

ocorrem [Molinari L., 2011].

6.3. Tempo disponível para testar

Algo que interfere muito no desempenho dos testes é o tempo delegado a estes. Muitos

gerentes preferem gastar a maioria do tempo desenvolvendo, e o tempo que sobra

deixam para testar, quando na verdade, as tarefas deveriam ser conjuntas, já que o testes

devem ser realizados o quanto antes afim de diminuir custos com correções e riscos

mais adiante. Achar que os testes são superficiais é um grande erro, pois o bom

desempenho destes é vital para a qualidade da aplicação. Para conseguir realizar os teste

de maneira adequada mesmo com pouco tempo disponível deve-se seguir algumas

etapas como:

Definir o que deve ser testado na aplicação.

Em que ordem de prioridade deve se testar.

Elaborar um cronograma de testes.

Gerar análises de resultados para comparação e determinação de status dos testes

[Molinari L., 2011].

6.4 Saber quando o teste termina

Muitas vezes implica em dúvidas, pois na maioria das vezes os testadores se deparam

com o esgotamento do prazo de testes, e decidem que esse seria o momento de termina-

lo.

Mas deve se levar em conta que há meios de contornar essa dificuldade, usando

por exemplo, métodos para determinar se o software foi testado suficientemente, por

exemplo:

tempo médio entre os defeitos encontrados.

A porcentagem que o teste cobriu o código da aplicação.

Ver o número de defeitos encontrados que não foram corrigidos.

Avaliar os riscos entre liberar a aplicação ainda com correções faltando e não

liberá-la [Bastos L., et al, 2007].

6.5 Custos na correção de defeitos

Os riscos de se liberar uma aplicação sem ter testado exaustivamente, já que os prazos

para a entrega são apertados, devem ser melhor compreendidos segundo uma regra¹

Page 7: Teste de software.pdf

descrita por Glenford Myers, em que ele afirma que quanto mais cedo descobrirmos

falhas, menores serão os custos de correção.

Figura 1. Regra de 10 de Myers

6.6. Teste é para sempre

Compreendido isto, devemos lembrar que um software produzido hoje, poderá estar

ativo daqui a dez ou quinze anos, quando novos sistemas e tecnologias estarão em

vigor. Nessa visão, como é possível calcular os defeitos que surgirão com o tempo, em

que talvez até as próprias ferramentas de programação e testes estejam em desuso?

Assim é praticamente impossível definir a ocorrência e os custos com os defeitos ao

longo dos anos [Bastos L., et al, 2007].

7. Conclusão

Ao decorrer do artigo, foi mostrada a importância de se testar um software,

apresentando ferramentas, aplicações e também os benefícios e desafios que os testes de

software oferecem. O artigo mostra de maneira simples, mas objetiva, algumas ações e

métodos que devem ser adotados para se deixar uma aplicação o mais livre possível de

erros, evidenciando os processos que envolvem testar um software.

8. Referências

Pressman .R.S. (2011) Engenharia de Software Uma Abordagem Profissional. McGraw

Hill Brasil.

Molinari L. (2008) Testes Funcionais de Software. Visual Books.

Sommerville I.(2007) Engenharia de Software. Pearson Education.

Molinari L. (2011) Testes de Software, 4ª edição, Editora Érica.

Molinari L. (2010) Inovação e Automoção de testes de Software, Editora Érica, 1ª

edição.

Molinari, L. (2011), Teste de software, produzindo sistemas melhores e mais confiáveis,

editora Erica.

Bastos, A. and Rios, E. and Cristalli, R. and Moreira, T. (2012), Base de conhecimento

em teste de sostware, editora Martins.

Delamaro, M. E. and Maldonado, J. C. and Jino, M. (2007), Introdução ao teste de

software, editora Campus.

Page 8: Teste de software.pdf

Pezzè, M. and Young, M. (2008), Teste e análize de software, processos, princípios e

técnicas, editora Artmed.

Arilo C., Introdução a teste de software, http://www.comp.ita.br/~mluisa/TesteSw.pdf