Você está na página 1de 8

Teste de Software

Renan F. Neto , Alex S. Chervenski1, Arthur P. Pugliero1, Leandro R. Abi1, Vinicius N. Machado1
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 atravs de uma reviso bibliogrfica de vrios autores. descrito a definio, aplicao, ferramentas, benefcios e desafios de testes em software a fim de trazer clareza para pessoas que no possuem experincia ou conhecimento deste assunto, priorizando testes de unidade, sistema e integrao.

1. Introduo
Os Softwares esto presentes em nossas vidas com inmeras finalidades. Seja para efetuar uma compra at fazer um simples clculo. Mas para que funcionem de forma plena, preciso que suas funcionalidades no possuam erros. Os testes de software tm o objetivo de encontrar os erros e corrigi-los. O presente trabalho aborda o que so, as ferramentas e tcnicas que auxiliam no desempenho dos testes, beneficiando a qualidade do programa.

2. Definio
O teste uma das etapas do desenvolvimento de software, na maioria das vezes esses testes so feitos pelos prprios desenvolvedores e usurios do sistema, que serve apenas para garantir que o que foi pedido no software foi realmente implantado [Mauro Pezze, Michal Young]. Mas esse no o principal objetivo de testar um software, esse processo todo possui trs objetivos: Melhorar o processo de software (Preveno, deteco e remoo de erros) Avaliar a qualidade do produto (Metas de qualidade) Melhorar a qualidade e rentabilidade do produto.

Esses trs objetivos do teste sendo apenas feitos pelos desenvolvedores e usurios no so suficientes, por mais que sejam desenvolvedores de software, muitas vezes so necessrios profissionais capacitados que utilizam mtodos e processos de testes claramente definidos. O processo de teste deve comear 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

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 vrios componentes e testes [Pressman]. 2.2. Teste de integrao O teste de integrao uma tcnica 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 usurio final do software, ele ir verificar se o produto est satisfazendo os seus requisitos [Arilo Cludio Dias Neto, Artigo cientfico]. 2.4. Teste da caixa branca Teste que tm como base o cdigo 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 anlise de Software, 2007]. 2.5. Teste da caixa preta Tm como base as entradas e sadas 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 anlise de Software, 2007].

3. Aplicao
Nesta seo falaremos sobre algumas tcnicas e estratgias 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 cdigo do software, sendo preciso que essas unidades estejam prontas em algum estgio. Existe uma ferramenta de automao, conhecido como J.UNIT, que facilita este teste [Molinari L., Testes de Software, 2011]. Esse teste traz alguns benefcios [Molinari, 2010, p.62]: Encontrar problemas mais cedo no processo de desenvolvimento, evitando perda de tempo e gastos alm do previsto. O teste na unidade pode ser reaproveitado em outro software.

3.2. Teste de integrao Tem inicio aps o trmino do teste unitrio. 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

Deve ter incio logo aps o teste de integrao. Seu objetivo verificar o comportamento do sistema, se suas funcionalidades realmente esto de acordo com o desejado pelo usurio. Esse teste possibilita a liberao da aplicao para produo, 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 prxima ao de produo; Avaliar os resultados e averiguar se os problemas so realmente defeitos; Executar o teste novamente no caso de o defeito ser corrigido.

Os tipos de testes so variados, cada um contribuindo para a melhoria das aplicaes. Seria difcil utilizar todos, ento se deve analisar cada caso: Se o enfoque da aplicao o negcio, 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 so mais baratas de projetar e executar do que casos de teste estrutural [Pezz M. , Young M. , Teste e anlise de Software, 2007].

4. Ferramentas
A aplicao de critrios 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 conduo de testes efetivos e na anlise dos resultados obtidos. O teste uma fase dispendiosa do processo de software. Sendo Assim, as ferramentas de teste esto 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 razes bsicas para a importncia da automao de testes de software: Crescimento dos sistemas e aplicaes (Cada Vez Maiores) Aumento da complexidade dos sistemas (Cada vez maiores) [Molinari L. 2008].

Tabela 1. Ferramentas e aplicaes

Quando usados para teste de sistemas de grande porte, as ferramentas devem ser configuradas e adaptadas para o sistema especfico a ser testado. Por exemplo: Novas ferramentas podem ser adicionadas para testar caractersticas especficas da aplicao e algumas ferramentas de teste existentes podem no ser necessrias. Podem ser escritos scripts para simuladores de interface como o usurio e padres definidos para os geradores de dados de teste. Formatos de relatrio podem tambm ser definidos. Conjuntos de resultados esperados de teste podem ser preparados manualmente caso as verses anteriores do programa no estejam disponveis para funcionarem como um orculo. Podem ser escritos comparadores de arquivos com propsitos especficos e que incluam o conhecimento da estrutura dos resultados do teste no arquivo [Molinari 2008]. A escolha das ferramentas foi mal conduzida de modo que a ferramenta mais adequada no foi escolhida. A implantao foi mal feita: instalaes, licenas com problemas etc. Pensou que a ferramenta seria a soluo para tudo, mas no . A ferramenta possui muitos defeitos que no foram corrigidos.

4.1. Problema das ferramentas

5. Benefcios
A maior vantagem em realizar testes de software obter menor custo com reparos e economizar tempo com tcnicas durante o processo. O software com testes realizados, durante o programa, estar com maior qualidade de software, sua margem de oramento estar mais perto do previsto ao final do processo de engenhar um programa [Mauro Pezz,Michael Young,2008].

Quanto mais cedo os testes so implementados, maiores so os benefcios, evita que bugs se espalhem pela aplicao e os tornam mais fceis de serem corrigidos; o teste deve ser feito em todo o processo de realizao do software para maior segurana de que erros no sejam repetidos durante a programao [Leonardo Molinari,2008] Teste de Software procura provar que o programa no funciona, e a Depurao 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 tm sido feito muitos esforos, visando a tcnica para melhorar a qualidade e a produtividade nessa atividade, como por exemplo ter uma melhor aplicao de testes em cima do programa, recolhendo informaes mais precisas de onde ocorreram falhas, deixar com um campo mais especfico de onde deve-se depurar erros; o que um grande benefcio pois depurar mais rapidamente e com segurana os erros nos testes, ter garantia de maior confiabilidade no programa, o que a maior meta existente na equipe desenvolvedora de um software [Mrcio Eduardo Delamaro, Jos Carlos Maldonado, Mario Jino,2007]. 5.1. Teste de Integrao Benefcio em integrao se ocorre no fato de que o teste pode-se unir subsistemas, e poder controlar uma coleo de mdulos e assistir as interaes, essas que vrias 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 condies, onde o benefcio se encontra em ver se o programa funciona perfeito como um todo, podendo-se obter um software com maior qualidade, segurana e maior poder de manuteno [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 benefcio de com relao a tempo estimado para melhor aproveit-lo e tambm gerando uma maio qualidade em certeza de estar compilando os erros com maior confiana [Mauro Pezz,Michael Young,2008]. 6. Desafios 6.1. Fator humano Hoje em dia softwares esto em todo lugar, de brinquedos a armas, do sistema de micro empresas ao sistema bancrio, entretanto so escritos por seres humanos que podem errar. E no h como negar, pois os bugs sempre existem. Mas ento, o que fazer a respeito? Testar. No h como deixar uma aplicao 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 necessrio [Molinari L., 2011].

6.2. Gerenciamento Em algumas organizaes o trabalho de testar fica com os prprios programadores, o que na verdade errado, pela alta sobrecarga de tarefas que acarreta ao profissional. J outras tm uma equipe especfica de testadores, o que tambm gera certo relaxamento na equipe de desenvolvedores, que por vezes deixa passar bugs que poderiam ser corrigidos no momento da programao, delegando aos testadores uma funo a mais. Tambm h casos de inimizade entre programadores e testadores, pois estes apontam as falhas que ocorrem na programao. Mas cabe ao gerente de produo resolver estes problemas, pois no h como trabalhar em equipe se essas situaes ocorrem [Molinari L., 2011]. 6.3. Tempo disponvel 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 correes e riscos mais adiante. Achar que os testes so superficiais um grande erro, pois o bom desempenho destes vital para a qualidade da aplicao. Para conseguir realizar os teste de maneira adequada mesmo com pouco tempo disponvel deve-se seguir algumas etapas como: Definir o que deve ser testado na aplicao. Em que ordem de prioridade deve se testar. Elaborar um cronograma de testes. Gerar anlises de resultados para comparao e determinao de status dos testes [Molinari L., 2011].

6.4 Saber quando o teste termina Muitas vezes implica em dvidas, pois na maioria das vezes os testadores se deparam com o esgotamento do prazo de testes, e decidem que esse seria o momento de terminalo. Mas deve se levar em conta que h meios de contornar essa dificuldade, usando por exemplo, mtodos para determinar se o software foi testado suficientemente, por exemplo: tempo mdio entre os defeitos encontrados. A porcentagem que o teste cobriu o cdigo da aplicao. Ver o nmero de defeitos encontrados que no foram corrigidos. Avaliar os riscos entre liberar a aplicao ainda com correes faltando e no liber-la [Bastos L., et al, 2007].

6.5 Custos na correo de defeitos Os riscos de se liberar uma aplicao sem ter testado exaustivamente, j que os prazos para a entrega so apertados, devem ser melhor compreendidos segundo uma regra

descrita por Glenford Myers, em que ele afirma que quanto mais cedo descobrirmos falhas, menores sero os custos de correo.

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 estaro em vigor. Nessa viso, como possvel calcular os defeitos que surgiro com o tempo, em que talvez at as prprias ferramentas de programao e testes estejam em desuso? Assim praticamente impossvel definir a ocorrncia e os custos com os defeitos ao longo dos anos [Bastos L., et al, 2007].

7. Concluso
Ao decorrer do artigo, foi mostrada a importncia de se testar um software, apresentando ferramentas, aplicaes e tambm os benefcios e desafios que os testes de software oferecem. O artigo mostra de maneira simples, mas objetiva, algumas aes e mtodos que devem ser adotados para se deixar uma aplicao o mais livre possvel de erros, evidenciando os processos que envolvem testar um software.

8. Referncias
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 edio, Editora rica. Molinari L. (2010) Inovao e Automoo de testes de Software, Editora rica, 1 edio. Molinari, L. (2011), Teste de software, produzindo sistemas melhores e mais confiveis, 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), Introduo ao teste de software, editora Campus.

Pezz, M. and Young, M. (2008), Teste e anlize de software, processos, princpios e tcnicas, editora Artmed. Arilo C., Introduo a teste de software, http://www.comp.ita.br/~mluisa/TesteSw.pdf