SUMRIO
INTRODUO ................................................................................................................ 3 Exemplos de casos de insucesso devido ausncia de teste ............................................. 3 Benefcios .......................................................................................................................... 5 Custo de teste no ciclo de vida do desenvolvimento de software ..................................... 6 O Papel do Testador .......................................................................................................... 7 Definio do conceito de teste (Erro, Defeito e Falha) ..................................................... 8 Padres conceituais que so referncias mundiais .......................................................... 10 Processo de teste ............................................................................................................. 13 Abrangncia na forma de conduo ................................................................................ 14 Atividade do processo de teste ........................................................................................ 14 Impacto na qualidade do produto .................................................................................... 15 Teste como processo de suporte...................................................................................... 16 Fases da garantia da qualidade ........................................................................................ 17 Validao e Verificao .................................................................................................. 18
ii
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.
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.
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.
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.
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
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.
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
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
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
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
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).
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
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.
16
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