Você está na página 1de 18

Ncleo de Excelncia em Testes de Sistemas

Fundamentos de Teste de
Software
Mdulo 1- Viso Geral de Testes de Software
Aula 1
Teste como Suporte para o Software

SUMRIO

1.

INTRODUO ................................................................................................................ 3

2.

Exemplos de casos de insucesso devido ausncia de teste ............................................. 3

3.

Benefcios .......................................................................................................................... 5

4.

Custo de teste no ciclo de vida do desenvolvimento de software ..................................... 6

5.

O Papel do Testador .......................................................................................................... 7

6.

Definio do conceito de teste (Erro, Defeito e Falha) ..................................................... 8

7.

Padres conceituais que so referncias mundiais .......................................................... 10

8.

Processo de teste ............................................................................................................. 13

9.

Abrangncia na forma de conduo ................................................................................ 14

10.

Atividade do processo de teste ........................................................................................ 14

11.

Impacto na qualidade do produto .................................................................................... 15

12.

Teste como processo de suporte...................................................................................... 16

13.

Fases da garantia da qualidade ........................................................................................ 17

14.

Validao e Verificao .................................................................................................. 18

ii

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

1.

INTRODUO
No mercado global, com a complexidade dos softwares, podemos ter a certeza que

enfrentaremos a complexidade das equipes, o cronograma apertado para desenvolvimento,


mercado/cliente/usurios mais exigentes, menos tolerncia a falhas, menos tolerncia aos
atrasos das entregas. Para tanto:

Precisamos criar softwares MELHORES, dentro do PRAZO, com CUSTO BARATO e


de forma mais RPIDA.

2. Exemplos de casos de insucesso devido ausncia de teste


Atualmente podemos perceber mais claramente qual o significado do custo quando no
priorizamos os testes no ciclo de vida de nossos produtos. Abaixo descrevemos alguns casos
de insucesso devido ausncia de teste.
Em Junho de 1996, o primeiro lanamento do foguete Ariane 5 ( Ver Figura 1) da
agncia espacial europia falhou 37,5 segundos aps sair do solo. Um erro de software levou
o foguete a desviar da ascendente vertical e suas capacidades de auto-destruio foram
ativadas.

Figura 1- Exemplos de casos de insucesso


3

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

Symantec compensa 50 mil vtimas de atualizao com falha na China. Cingapura Companhia oferece extenso de licena do Norton sem custos aos afetados pelo update que
tirava arquivos de sistema de uso. Mais de um ms aps atualizar 50 mil PCs chineses com
um update defeituoso, a Symantec decidiu compensar as vtimas. Em 18 de maio a empresa
comeou a distribuir o update problemtico para o antivrus Norton, que classificou
equivocadamente arquivos do sistema dos usurios como malwares e os colocou em
quarentena, afetando o funcionamento do computador das vtimas e gerando uma onda de
protestos na web.

Quando uma famosa livraria abriu os negcios online, a compra de um nmero negativo
de livros significava que o total da transao envolvida deveria retornar para o comprador. A
equipe de desenvolvimento no tinha antecipado que algum poderia solicitar a compra de um
nmero negativo de livros e o cdigo foi desenvolvido para permitir o reembolso pela equipe
administrativa.

No ms de abril de 2005 o site da rede americana de hotis Holliday Inn deveria ter
entrado no ar com uma promoo para quem se hospedasse na sua rede no estado da Flrida
nos EUA de 98 dlares o casal. Por um erro de programao o valor que entrou no site foi de
0,98 dlares. Este erro ficou no ar por 24 horas, tempo suficiente para que 1.000 pessoas
fizessem as suas reservas. O hotel alegando que havia sido um erro, posteriormente cancelou
todas essas reservas. Por deciso judicial, o hotel foi obrigado a honrar os seus compromissos.
Isso custou ao Holliday Inn cerca de 500 mil dlares porque o analista de sistemas, achando
que as alteraes eram pequenas, preferiu correr o risco de colocar o site no ar sem um teste
de aceitao, que custaria em torno de 50 dlares. Se ele tivesse feito uma anlise de riscos,
certamente no teria deixado de testar a aplicao.

Diante desse contexto, podemos afirmar que o motivo pelo qual devemos testar um
software pelo simples motivo que o mesmo visa atender a uma demanda por questes de:
Qualidade, Segurana, Economia, Negcio e Confiabilidade.

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

3. Benefcios
Quais os reais benefcios do investimento em testes?
Conforme afirmado em vrios relatos de experincia e j percebido no mercado, os reais
benefcios so a reduo em 70% do ndice de re-trabalho na correo de falhas em produo,
reduo em 50% do tempo de homologao de uma nova verso. Alm disso, aumenta em
aproximadamente 90% o ndice de falhas detectadas antes da produo onde o custo bem
mais baixo, e aumenta a abrangncia dos testes. Portanto, de uma forma geral, os maiores
benefcios so (Ver Figura 2):

Melhoria da qualidade do produto e do servio;

Identificao de defeitos para reduzir as falhas;

Reduo do custo de manuteno do software;

Medio da qualidade atravs (Ex: nmero de defeitos encontrados, nmero de


testes executados e percentual de cobertura do cdigo pelos testes);

Adequao s regras contratuais, requisitos legais e padres industriais.

Figura 2 Benefcios da prtica de teste de software

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

4. Custo de teste no ciclo de vida do desenvolvimento de software


Para analisar os impactos das falhas encontradas no software necessrio avaliar o
impacto de quando os erros foram encontrados. Portanto, o impacto de se encontrar e
consertar os defeitos aumenta consideravelmente ao longo do tempo.
A regra 10 de Myers apresenta que o custo da correo de um defeito tende a aumentar
quanto mais tarde ele for encontrado.
Os defeitos encontrados nas fases iniciais do projeto de desenvolvimento do software
so mais baratos do que aqueles encontrados na produo.
Um estudo realizado observou que, quanto mais tempo levarmos para corrigir uma
falha, mais custosa ela ser. O grfico apresentado tem como objetivo mostrar a proporo do
aumento, onde, ainda na fase de levantamento de requisitos, o custo para correo
considerado muito baixo, praticamente zero. Na fase de desenvolvimento do sistema, o custo
aumenta em 10 vezes comparado com a fase anterior. J na fase de teste unitrio e teste de
integrao, o custo de 100 vezes o custo inicial. Enquanto que na fase do teste de sistema, o
custo ser de mil (1000) vezes. O teste de aceitao custar 10 mil e quando o software est
em produo, estima-se que o custo para correo de uma falha de 100 mil vezes o custo, se
a mesma fosse ajustada na fase de levantamento de requisitos (ver figura 3).

Figura 3 Custo do Teste

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

5. O Papel do Testador
Diante dessas consideraes, o testador atua para prevenir que as falhas sejam
observadas no software quando ele j est em produo, como tambm para provocar, o
quanto antes, a maior quantidade de falhas possvel no software, para que as mesmas possam
ser corrigidas e entregues ao cliente final.
Portanto, o testador investigar se o produto est pronto para uso e quais so as
possveis ameaas que o mesmo apresenta.

Alm disso, a checagem dos processos de

desenvolvimento tambm precisa ser realizada como forma de minimizar, atravs da garantia
da qualidade, as falhas observadas no produto final.

Figura 4 Papel do testador

O papel do testador executar as atividades centrais do esforo de teste, que envolve


conduzir os testes necessrios, alm de registrar os resultados desses testes. Para desempenhar
essa atividade necessrio:

Identificar a abordagem de implementao mais apropriada para um dado teste;

Implementar testes individuais;

Configurar e executar os testes;

Registrar os resultados e verificar a execuo dos testes;

Analisar erros de execuo e recuperar-se deles;

Avaliar um entregvel com a inteno de encontrar defeitos.


7

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

O conhecimento e as habilidades do testador podem variar de acordo com os tipos de


testes a serem executados, entretanto, geralmente o testador deve ter as seguintes habilidades:

Conhecimento das abordagens e das tcnicas de teste;

Capacidade para diagnosticar e resolver problemas;

Conhecimento do sistema ou do aplicativo em teste (desejvel).

Diante deste contexto, podemos afirmar que o testador atravs da execuo dos testes
visa adquirir confiana na qualidade atravs das informaes que o teste prov, ou prevenir a
ocorrncia de falhas no ambiente de produo, pela deteco antecipada dos defeitos.

6. Definio do conceito de teste (Erro, Defeito e Falha)


No que se refere s definies da disciplina de teste, vale ressaltar que no existe um
conjunto universal de definies relativas ao teste de software. Alguns conceitos so
importantes para o entendimento e possveis adaptaes dos processos, fazendo parte da base
para a disciplina de teste. Nesse contexto, imprescindvel entender o conceito de erro,
defeito e falha.
Embora esses termos e definies (vide figura 5) estejam diretamente ligados ao
processo de desenvolvimento de software, vrios profissionais da rea de TI desconhecem o
seu significado e suas respectivas diferenas.
a. Erro: Erro humano que produz um resultado incorreto
b. Defeito: Manifestao de um erro no software
c. Falha: pode ser considerada como um desvio apresentado pelo software,
aquilo que observado quando o mesmo est sendo executado.

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

Figura 5- Erro, Defeito e Falha

Falha um evento; defeito um estado do software, causado por um erro.


Os defeitos podem ser originados de vrios fatores, tais como:
Especificao de requisitos ambgua;
Falha na gesto de mudanas dos requisitos;
Profissionais que no possuem formao apropriada para construir os artefatos de
software;
Falha em declarar uma varivel de entrada de dados;
Projeto no delimitava tempo suficiente para que pudesse ser construda uma
especificao detalhada.

Os defeitos ocorrem no software porque os mesmos so escritos por pessoas, e por sua
vez sabemos que as pessoas (profissionais) no conhecem e no dominam tudo. Entretanto,
elas tm habilidades para tal responsabilidade, mas tambm no so perfeitas, o que nos leva a
admitir que so suscetveis de cometer erros. E por ltimo, softwares so desenvolvidos sobre
crescente presso para entreg-los em prazos rigorosos, sem tempo para checar as atividades
realizadas.
9

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

7. Padres conceituais que so referncias mundiais


Aspectos Gerais das Normas/Padres
Padres e Normas so criadas por grupos de profissionais e refletem um conhecimento
coletivo. As duas maiores fontes de normas internacionais so: IEEE e ISO. Normas nacionais
e de domnio especfico so tambm importantes e disponveis.
Testadores devem estar atentos a normas que se aplicam ao seu ambiente ou contexto,
sejam elas normas formais (internacionais, nacionais, ou de domnio especfico) ou normas
internas e prticas recomendadas. Como normas evoluem e mudam necessrio especificar a
verso (data de publicao) da norma para garantir que a conformidade seja obtida. Quando
uma referncia a uma norma especificada sem data ou verso, ento a ltima verso
considerada como sendo referenciada.
Utilidade de Normas/Padres
Normas/Padres podem ser usadas como um instrumento para promover uma garantia
de qualidade construtiva, tal que mantm foco em minimizar os defeitos introduzidos ao invs
de encontr-los atravs de teste.
Coerncia & Conflitos
Algumas normas podem ser deficientes em coerncia com outras normas, ou at
fornecer definies conflitantes. deixado a cargo dos usurios das normas determinarem a
utilidade das diferentes normas em seu ambiente e contexto.
Normas Internacionais
ISO
ISO [www.iso.org]

significa

International

Standards

Organization

(alterado para

International Organization for Standardization) e formado por membros representando,


para seu pas, o corpo nacional representativo da padronizao. Esse corpo internacional
fomenta diversas normas teis para testadores de software, tais como:

10

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

ISO 9126:1998, que atualmente separada na seguinte norma e relatrios tcnicos (technical
reports - TR):
ISO/IEC 9126-1:2001 Engenharia de software Qualidade de produto Parte 1:
Modelo de qualidade
ISO/IEC TR 9126-2:2003 Engenharia de software Qualidade de produto Parte 2:
Mtricas externas.
ISO/IEC TR 9126-3:2003 Engenharia de software Qualidade de Produto Parte 3:
Mtricas internas.
ISO/IEC TR 9126-4:2004 Engenharia de software Qualidade de produto Parte 4:
Qualidade no uso de mtricas.
ISSO/IEC 12207:1995/Amd 2:2004 Sistemas e Engenharia de software Processos de
Ciclo de Vida de Software.
ISO/IEC 155041-2:2003 Tecnologia da informao Avaliao de processo Parte 2:
Realizando uma avaliao.
Essa lista no exaustiva; outras normas ISO podem ser aplicveis ao contexto e ambiente de
um testador.
IEEE
IEEE [www.ieee.org] o Institute of Electrical and Electronics Engineer, uma organizao
profissional com sede nos EUA. Existem representantes nacionais disponveis em mais de
uma centena de pases. Essa organizao fomenta diversas normas teis para testadores de
software, tais como:
IEEE 610:1991 Norma IEEE de dicionrio de computao. Uma compilao da norma
IEEE de glossrio de computao.
IEEE 829:1998 Norma IEEE de documentao de teste de software.
IEEE 1028:1997 Norma IEEE de reviso de software.
IEEE 1044:1995 Guia IEEE para classificao de anomalias de software. Essa lista
no exaustiva; outras normas IEEE podem ser aplicveis ao contexto e ambiente de
um testador.

11

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

Normas Nacionais
Muitos pases tm suas normas especficas. Algumas dessas normas so aplicveis e/ou
teis para o teste de software. Um exemplo seria a norma britnica BS-7925-1 e BS-79252:1998 Teste de software. A BS 7925-1 um glossrio de termos de teste de software,
juntamente com o seu parceiro BS 7925-2 componentes de teste de software. Alm de
tambm fornecerem uma descrio do processo de Teste de Componente.
Portanto conclui-se que diversos padres so considerados referencias na disciplina de testes.

Porm, o mercado evidencia algumas normas mais que as outras (Ver figura 6). A
referncia que aborda a terminologia da engenharia de software, a IEEE 610, define que teste
o processo de operar um sistema ou componente atravs da observao dos resultados e
avaliao de alguns aspectos de um determinado software. J a IEEE 829, que trata de
documentao, diz que teste o processo de analisar o software para identificar as diferenas
entre as condies existentes e as condies requeridas pelo cliente. No mbito do padro
7925-1, que apresenta um vocabulrio da disciplina, teste o processo de exercitar o software
para verificar se o mesmo satisfaz os requisitos e para detectar os erros no cdigo.

Figura 6 - Padres

12

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

Diante dessas definies, vale ressaltar que todas as normas abordam o teste como um
processo, atravs de uma atividade dinmica, onde o software executado para encontrar
erros, e tambm uma atividade esttica, atravs da verificao das condies do sistema.

8. Processo de teste
O processo de teste pode ser entendido como uma sequncia de atividades executada
para alcanar um objetivo especfico (Ver Figura 7).

Figura 7 Processo de teste

O Processo de Testes de Software representa uma estruturao de fases, atividades,


artefatos, papis e responsabilidades que tem o objetivo de padronizar os trabalhos, alm de
maximizar a organizao e monitoramento dos projetos de testes. Portanto, o objetivo do
processo de teste fornecer informao para garantir a qualidade do produto, decises e
processos para uma atividade de teste. Alm disso, o processo de teste busca garantir que
nenhum passo crtico do processo seja esquecido, ou seja, que todas as atividades sejam
realizadas na ordem correta.
O ISTQB define que Teste um processo ao invs de uma atividade isolada, composta
de um conjunto de atividades.

13

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

9. Abrangncia na forma de conduo


O objetivo desta abrangncia assegurar que o software cumpra rigorosamente as suas
especificaes e atenda principalmente as necessidades do cliente.
Diante desse contexto, o processo de teste pode ser tanto dinmico como esttico (Ver
Figura 8):
a. Dinmico: Acontece quando o cdigo executado para demonstrar os
resultados dos testes rodados.
b. Esttico: quando o teste realizado antes da execuo do cdigo, atravs de
tcnicas de reviso, dentre as quais podemos citar a reviso informal, reviso
tcnica e a inspeo.

Figura 8 Testes estticos e dinmicos

10. Atividade do processo de teste


O propsito do processo de teste fornecer informaes para garantir a qualidade do
produto, as decises e os processos para uma misso de teste. As atividades so (Ver figura
9):

Planejar e controlar o teste;


Analisar e projetar o teste;
Implementar e executar o teste;
Avaliar o critrio de sada e reportar;
Atividades de fechamento do teste.
14

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

Figura 9 Atividades do processo de teste

11. Impacto na qualidade do produto


Atualmente, podemos perceber que as organizaes tm de produzir produtos e/ou
servios de qualidade no mais como uma estratgia de diferenciao de mercado, mas como
uma condio de sobrevivncia.
O conceito de Qualidade foi inicialmente associado definio de conformidade aos
requisitos ou especificaes do produto. Posteriormente, essa definio evoluiu para a busca
da satisfao do cliente. Entretanto, a satisfao do cliente no resultado apenas do grau de
conformidade com os requisitos ou especificaes, mas tambm de outros fatores associados,
tais como: prazo, condies de pagamento, atendimento, ps-venda, flexibilidade, dentre
outros fatores.
Focando essa realidade foi possvel perceber que a qualidade era fundamental no
posicionamento estratgico da empresa perante o mercado. Alm disso, logo em seguida
surgiu o termo Qualidade Total que representa a busca da satisfao, no somente do cliente,
mas de toda a organizao que a compe , buscando a excelncia organizacional da empresa.
A qualidade, conforme Crosby, est associada idia de zero defeito e de fazer
certo da primeira vez. J vimos (em O que qualidade) que para ele a qualidade significa
conformidade com as especificaes, e estas especificaes variam para cada organizao,
conforme estas percebem as necessidades de seus clientes. No seu mtodo no existe um
padro de tolerncia a meta real exatamente zero defeito.

J o autor Juran diz

que Qualidade adequao ao uso, onde a adequao definida pelo consumidor


mesmo quando ele deseja fazer algo fora do que o fabricante imaginou.
15

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

E no menos importante, referindo-se ao contexto da definio de qualidade, Deming


frequentemente se referia ao efeito, e no ao conceito da qualidade. Para ele, os custos caem
e a produtividade sobe, conforme a melhoria da qualidade alcanada por meio de melhor
gesto.
A busca da qualidade um dos principais objetivos da Engenharia de Software e muitos
mtodos, tcnicas e ferramentas so desenvolvidos para apoiar a produo com qualidade.
Atualmente tem-se dado grande importncia ao processo de teste como forma de se garantir
um software de melhor qualidade. As atividades de teste impactam diretamente na qualidade
do produto final, atravs da avaliao das especificaes e conformidade com o software
entregue. Alm disso, a adequao ao uso para atender s necessidades dos usurios e,
consequentemente, atendimento s expectativas do cliente. As especificaes devem refletir
as necessidades levantadas , que so importantes critrios para definir a qualidade do produto
em questo.

12. Teste como processo de suporte


Teste uma atividade de garantia da qualidade comparado a um processo de suporte.
Teste uma atividade que consideramos como recursiva, haja vista que os seus produtos
gerados podem ser testados e analisados quanto a sua qualidade. Alm de estar relacionado
com a elaborao da documentao tcnica, quando tudo que produzido factvel de ser
analisado pela garantia da qualidade, atravs de teste esttico e suas atividades de reviso.
Teste tambm faz interface com a atividade de manuteno, onde o software entregue
e possivelmente ir gerar correes e novas funcionalidades. Alm disso, o teste importante
para garantir o correto funcionamento do sistema em produo.
Alguns exemplos de processos de suporte executados durante todo o processo de
desenvolvimento que fazem interface com o processo de teste (Ver Figura 10):

Garantia da qualidade

Gerncia de projetos

Gerncia de configurao

16

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

Figura 10 Teste como processo de suporte

13. Fases da garantia da qualidade


A garantia da qualidade composta por 4 atividades. Primeiramente, os critrios de
qualidade precisam ser definidos, que so declaraes sobre o nvel de qualidade a ser
alcanado no software. Eles dependem da necessidade do negcio e tipo de produto em
questo. A partir da definio dos critrios, existem duas atividades para averiguar se os
critrios de qualidade foram alcanados no projeto, que a validade e a verificao do
software. E, finalmente, a consolidao dos resultados obtidos atravs de relatrios e
indicadores de qualidade.
Vale ressaltar que o teste uma atividade que faz parte da garantia da qualidade, atravs
de (Ver Figura 11):

a. Definio do critrio de qualidade


b. Validao
c. Verificao
d. Relatrio de qualidade

Figura 11 Fases da garantia da qualidade


17

Fundamentos de Teste de Software


Mdulo 01 Viso Geral de Testes de Software
Aula 01 Teste como Suporte para o Software

14. Validao e Verificao


A Validao e a Verificao so conceitos de grande importncia para a disciplina de
teste, onde Validao a avaliao da veracidade do produto baseado nas necessidades e
requisitos definidos pelo cliente. Devemos, no decorrer do processo, questionar se estamos
desenvolvendo o produto correto e se o sistema est de acordo com a especificao definida.
A Verificao, por sua vez, a avaliao se o objeto foi desenvolvido da maneira
prevista, onde devemos nos questionar se estamos desenvolvendo o produto corretamente.
Para isso existe diversas tcnicas como, por exemplo, a inspeo e reviso(Ver figura 12).

Figura 12 Validao e Verificao

A Validao e Verificao asseguram que o software cumpra com suas especificaes e


atenda s necessidades dos usurios. O processo de teste dividido em duas grandes reas:
A estrutura do modelo V uma aproximao do processo de testes que pode ser
integrada com todo a processo de desenvolvimento.

O modelo V representa o

desenvolvimento versus o teste. O modelo V focaliza-se em testar durante todo o ciclo de


desenvolvimento para conseguir uma deteco adiantada dos erros.

18

Você também pode gostar