Buscar

APOSTILA_-_Engenharia_de_Software_e_Gerencia_de_Projeto_-_07

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Engenharia de Software 
e Gerencia de Projetos
Engenharia de Software e Gerencia de Projetos
2Teste de software – conceitos 
Teste de software é uma disciplina da Engenharia de Software aplicada para executar o software de uma 
maneira controlada com o objetivo de avaliar se o mesmo comporta o especificado.
Considerada nos anos 60, 70 e 80 como uma disciplina do Ciclo de Desenvolvimento para provar que o 
software estava funcionando. Era considerada uma disciplina de alto custo e alto consumo de recursos e 
tempo. Na década de 90 com o aumento da produção de softwares, a disciplina de teste passou a ocupar 
um espaço essencial na busca da qualidade. Atualmente foi criada a função “Analista de Teste”, específica 
para o profissional que testa softwares, o que faz com que aumente a necessidade de estudo das técnicas 
e aprimore a metodologia para realizar os testes.
Testar um software não é só retirar os erros de execução. Envolve a validação dos requisitos solicitados 
contra os resultados gerados, a constatação de que o software funciona com um tempo de resposta 
compatível com as funções desempenhadas e ainda possui uma usabilidade adequada aos usuários, ou 
seja, garantir produtos de qualidade e de alta confiabilidade. 
Na realidade a disciplina de teste de software representa a aprovação do software produzido, gerando a 
autorização de implantação.
Portanto é importante conhecermos os princípios, técnicas e tipos necessários à realização de testes eficientes. 
 ● Conhecer o objetivo, tipos e técnicas relacionados a teste de software. 
 ● Teste de software – conceito e objetivo;
 ● Estratégias: Nível, técnicas e Tipos de teste de software .
Introdução
Objetivo
Tópicos Abordados
Engenharia de Software e Gerencia de Projetos
3Teste de software – conceitos 
Teste de software - conceito e objetivo
A disciplina de teste consiste em validar e verificar os procedimentos desenvolvidos para compor um software. 
Verificar significa aferir se o software possui componentes corretamente desenvolvidos e, validar significa aferir 
se o software que está sendo desenvolvido está correto. Isso significa que o software deve não ter erros e 
atender aos requisitos solicitados e definidos.
Os testes são realizados a partir dos requisitos estabelecidos no início do desenvolvimento. Com essa 
afirmação é possível imaginar que a pessoa mais indicada para realizar os testes seria o analista que 
levantou e trabalhou os requisitos de sistema ou, o próprio programador que desenvolveu o componente, 
mas na realidade o ideal é que o testador seja um profissional não envolvido no desenvolvimento. Assim 
os testes serão realizados de forma isenta. O profissional envolvido tende a testar os procedimentos que 
são conhecidos pela sua mente e conduz os testes a obter resultados corretos.
Testar sistema não é uma tarefa fácil, pois é preciso avaliar os aspectos funcionais, referentes a 
funcionalidade do sistema, mas também os aspectos não funcionais: Operabilidade (como funciona o 
software), Observabilidade (facilidade na visualização dos resultados, coerência na geração das saídas, 
sinalizações de erros), Controlabilidade (até que ponto o processo pode ser controlado ou automatizado), 
Decomposabilidade (os módulos de software podem ser testados independentemente), Simplicidade (qual 
o nível de complexidade da estrutura do software), Estabilidade (poucas alterações durante os testes), 
Compreensão (a documentação do componente é clara).
A atividade de teste exige conhecimento, planejamento, projeto, execução, acompanhamento, recursos e 
uma grande interação entre as equipes. O teste inicia pela elaboração do plano dos requisitos que serão 
testados, os resultados esperados e de que forma, a partir da configuração do software (requisitos de 
sistema) associado à configuração do teste (níveis e tipos de testes convenientes). 
O analista de teste de posse do planejamento realiza os testes e registra os resultados apurados. Dos 
resultados apurados, os erros são entregues a equipe de desenvolvimento para correção e, as demais 
ocorrências são avaliadas em função do nível de qualidade previamente definido na política de teste. 
Os que apresentarem o nível de qualidade aprovado são enviados ao analista para liberação e, os não 
aprovados são encaminhados a equipe de desenvolvimento para a devida correção. Não podemos 
esquecer que os pedidos de correção são analisados antes do efetivo ajuste. 
A realização do teste busca a identificação de erros, 
mas um teste apresenta a existência de erros e nunca 
a ausência deles. Um teste não mostrará a falta de um 
requisito, por exemplo. 
Importante
Engenharia de Software e Gerencia de Projetos
4Teste de software – conceitos 
Para melhor compreensão a Figura 1 representa de forma gráfica o fluxo de atividades de teste de software.
Conhecendo o fluxo de atividades, que será realizado para todos os testes, independente da metodologia de 
desenvolvimento de sistemas, linguagem de programação ou complexidade dos processos, serão descritos a 
seguir as estratégias de teste disponíveis para uso. As estratégias são definidas conceitualmente. A aplicação 
das mesmas acontecerá em função da natureza do teste a ser aplicado, que nesse caso dependerá do que se 
pretende testar. 
A estratégia de teste compreende a definição dos seguintes itens: 
A seguir os itens serão apresentados em tópicos.
 ● Técnica de Teste;
 ● Tipo de teste;
 ● Nível de teste; 
 ● Figura 1 – Fluxo de atividades
 ● Fonte: Própria
Engenharia de Software e Gerencia de Projetos
5Teste de software – conceitos 
Estratégias: Nível, Técnicas e Tipos de Texte de Software
Técnicas de teste
Técnica estrutural (caixa branca)
A técnica estrutural, também conhecida por caixa branca é a técnica aplicada para descobrir falhas de construção 
interna das unidades ou componentes, ou seja, estruturas de condições e repetições desnecessárias ou confusas 
e, também verifica o uso dos padrões estabelecidos pela instalação.
A técnica estrutural garante que:
 ● Os caminhos independentes dentro de uma unidade tenham sido exercitados pelo menos uma vez;
 ● Todas as decisões lógicas para valores falsos ou verdadeiros sejam contemplados nos testes;
 ● Executar todos os limites operacionais das estruturas de repetição
Técnica baseadas em erros
Técnica baseada na busca de erros freqüentes cometidos durante o desenvolvimento de sistemas. É uma técnica 
imediatista que é adotada pelos programadores durante o desenvolvimento, mas não deve ser desprezada na 
elaboração do plano completo, considerando a teoria de que o próprio autor sempre busca testar o correto.
Técnica funcional (caixa preta)
A técnica funcional, também conhecida por caixa preta é a técnica aplicada para validação das funcionalidades, ou 
seja, aferir se os resultados obtidos estão de acordo com as entradas e, se o produto desenvolvido corresponde 
ao solicitado e encomendado ao cliente. 
A técnica estrutural é muito importante, pois é preciso percorrer todos os caminhos previstos 
para obter a qualidade total no processo de desenvolvimento.
O apelido caixa preta é devido ao descompromisso de verificar como o software foi construído. 
O que importa para essa técnica são os resultados produzidos.
Importante
Fatos Históricos
Engenharia de Software e Gerencia de Projetos
6Teste de software – conceitos 
Os testes são usados para validar:
 ● A operacionalidade das funções do software;
 ● A qualidade dos dados de entrada (são realizadas críticas?)
 ● A qualidade das saídas produzidas;
 ● A atualização das informações nas bases de dados (restrições e correções);
 ● O desempenho do processo.
Tipos de teste
Os tipos de teste possuem características próprias. Algunstipos são específicos a um nível, mas em geral, podem 
ser utilizados de acordo com a necessidade do negócio apresentada durante o desenvolvimento de sistemas.
São eles: 
 ● Teste de funcionalidade: busca de erros funcionais, ou seja, erros relacionados ao funcionamento da 
unidade ou componente.
 ● Teste de interface: verifica a usabilidade do projeto de interface, assim como a ordem dos campos 
(deve ser o mais intuitivo para o usuário), as críticas realizadas para garantir a qualidade da informação 
entrada, o formato das informações de entrada/saída. 
 ● Teste de conteúdo de informação: verifica as estruturas de dados definidas, criadas e alimentadas no 
banco de dados. 
 ● Teste de desempenho: verifica se o comportamento do sistema é adequado ao nível de tarefas 
desenvolvidas.
 ● Teste de carga (stress): verifica o comportamento do sistema diante de situações anormais de 
recursos em quantidade, freqüência ou volumes.
 ● Teste de sensibilidade: verifica o comportamento do sistema a partir de informações que possam 
causar instabilidade ou processamento impróprio.
 ● Teste automático: os testes automáticos vêm se tornando uma prática na rotina de testadores de 
sistemas, pois agilizam o processo. Atualmente estão disponíveis alguns softwares de teste gratuitos, 
como: junit, mantis, testlink, selenium e jmeter. Os testes automáticos são executados a partir de uma 
definição prévia e geram relatórios de resultados obtidos.
 ● Teste de regressão – consiste em repetir testes já realizados a partir de ajustes efetivados em unidades 
relacionadas para garantir que novos erros não tenham sido inseridos.
 ● Teste alfa – teste realizado pelo usuário nas instalações do desenvolvedor. O teste ALFA favorece o 
desenvolvedor na medida em que todo o ambiente instalado está ao alcance para qualquer ajuste 
que se fizer necessário, mas dificulta o usuário, pois todo material do processo não estará disponível 
no momento do teste.
 ● Teste beta – teste realizado pelo usuário nas instalações do usuário. O teste BETA favorece o usuário 
na medida em que todo material do processo estará disponível no momento do teste. O usuário 
informa ao desenvolvedor em um intervalo de tempo combinado, as ocorrências.
Engenharia de Software e Gerencia de Projetos
7Teste de software – conceitos 
 ● Teste de aceitação – teste realizado pelo usuário final como treinamento, validação de todos os 
requisitos e obtenção da aprovação para em seguida obter a homologação do software. 
 ● Teste de recuperação – teste realizado para verificar se a recuperação é adequadamente executada 
em função das falhas simuladas. O processo de recuperação é muito importante para um software, 
pois todo ambiente operacional está suscetível a falhas e, se o processo de recuperação não for 
validado de nada adianta os procedimentos de segurança.
 ● Teste de segurança – teste realizado para verificar a fragilidade do sistema quanto a invasões.
Nível de teste
O software, na visão da disciplina teste, é dividido em 4 níveis: Componente ou unidade, integração, 
validação e sistema. Os níveis definem o tipo de teste e resultados esperados, que poderão ser verificação 
de erro, desempenho, vulnerabilidade a falhas, requisitos, usabilidade, ...;por isso sempre que se vai iniciar 
um teste o primeiro critério a definir é o nível.
Componente ou Unidade
Concentra-se em cada unidade de software, de acordo com o que é implementado no código fonte.
O componente ou unidade está inserido no sistema como um programa individual, mas na realidade 
apresenta ligação com outros programas e, no momento do teste de unidade não se tem desenvolvido 
as outras unidades. Em função disso se faz necessário criar unidades sem função para verificar essa 
ligação (Figura 2).
 ● A unidade de ligação criada para executar a 
unidade em teste é denominada DRIVER, 
que aceita dados de caso de teste, repassa os 
dados para a unidade a ser testada e imprime 
os dados relevantes.
 ● A unidade de ligação criada para ser chamada pela unidade 
em teste é denominada STUB, que faz manipulação de 
dados mínima, imprime verificação de entrada e retorna.
 ● Figura 2 – Teste unidade x ambiente
 ● Fonte: Própria
Engenharia de Software e Gerencia de Projetos
8Teste de software – conceitos 
Concentra-se na integração dos módulos do sistema, no projeto e na construção da arquitetura de software.
A integração das unidades pode ser realizada a partir dos métodos descritos a seguir. A escolha irá variar 
em função da equipe e natureza do software em teste.
INTEGRAÇÃO TOP-DOWN: a integração acontece de cima para baixo, partindo da unidade de controle 
principal incorporando à estrutura as unidades subordinadas primeiro pela profundidade (depth-first) ou 
pela largura (breadth-first), a forma mais apropriada a natureza do negócio 
(Figura 3).
Integração bottom-up: a integração acontece de baixo para cima, partindo da unidade de controle 
subordinada incorporando à estrutura as unidades de controle. A necessidade de stubs é eliminada, pois 
os módulos inferiores estarão sempre prontos para o teste (Figura 4).
O processo de integração é executado numa série 
de 4 passos:
 ● 1. Definir o conjunto de unidade combinados 
 ● para uma estratégia; 
 ● 2. Criar o driver;
 ● 3. Realizar testes a cada conjunto;
 ● 4. Remover os drivers e combinar os conjuntos 
para cima na estrutura do programa.
 ● Figura 3 – Integração Top-down
 ● Fonte: Própria
 ● Figura 4 – Integração Botton-up
 ● Fonte: Própria
Engenharia de Software e Gerencia de Projetos
9Teste de software – conceitos 
INTEGRAÇÃO INCREMENTAL: a integração acontece em partes, normalmente por eixo de execução 
(cadastro, movimento, consultas, relatórios,...). Torna a correção dos erros facilitada tanto na detecção do 
problema quanto na correção. Os testes são mais completos.
INTEGRAÇÃO NÃO INCREMENTAL: a integração acontece no final do desenvolvimento e teste das 
unidades. Não é um método recomendado, pois o número de erros encontrados torna difícil a correção e 
a descobertas das causas.
O processo de integração é executado numa série de 5 passos:
Os requisitos estabelecidos com a parte da Análise de Requisitos de software são validados em relação 
ao software que foi construído. Oferece a garantia final de que o software atende a todas as exigências 
funcionais, comportamentais e de desempenho. O usuário aceita o sistema.
O teste de validação inicia quando o sistema está completamente desenvolvido e testado. São definidos 
para garantir que os requisitos estejam de acordo como o solicitado pelo usuário, que a documentação 
esteja completa e consistente e, que outros requisitos como portabilidade, compatibilidade, remoção de 
erros e manutenibilidade estejam contemplados.
Para desenvolvimento no nível de validação é realizada a Revisão de Configuração, 
que tem o propósito de garantir que os elementos da configuração de sistema tenham 
sido adequadamente desenvolvidos, catalogados e documentados para apoiar a fase de 
manutenção do ciclo de vida do software. Testes Alfa e Beta também são utilizados no nível 
de validação e, para finalizar acontecem os Testes de Aceitação. 
Importante
Engenharia de Software e Gerencia de Projetos
10Teste de software – conceitos 
Sistema
No nível de sistema são realizados os testes de RECUPERAÇÃO e SEGURANÇA. O sistema não pode 
parar o que justifica a existência de mecanismos de recuperação como contingência de alguma ocorrência 
inesperada. Uma falha do sistema deve ser corrigida dentro de um período previamente especificado; caso 
contrário, graves prejuízos econômicos ocorrerão. No teste de SEGURANÇA, o analista desempenha o 
papel de pessoa que deseja penetrar no sistema.
Figura 5 – Representaçãodos níveis de teste
A definição de níveis representada uma distribuição 
de baixo para cima, ou seja, inicia-se o teste do 
componente ou unidade (menor representação), depois 
a integração, que é a união dos componentes, seguindo 
da validação dos requisitos junto ao usuário e, por fim a 
visão completa, conforme mostra a Figura 5.
Engenharia de Software e Gerencia de Projetos
11Teste de software – conceitos 
NÍVEL x TIPOS 
A tabela 1 relaciona os níveis de teste com os tipos de teste aplicados.
Tabela 1 – Aplicação nível e tipo de teste de software
Engenharia de Software e Gerencia de Projetos
12Teste de software – conceitos 
Avaliação a Distância
1 - Relacione as colunas.
Respostas - 1 - (C, A, D e B),, 2 - (C, A, D e B)
A - Funcional
B - Alfa 
C - Estrutural
D - Beta 
Qual é a técnica de teste de software que tem como objetivo identificar 
defeitos nas estruturas internas do software (caixa branca). 
Qual é a técnica de teste de software que tem como objetivo 
garantir que os requisitos do software construído estão sendo 
plenamente atendidos (caixa preta). 
Marque a alternativa que identifica a modalidade do tipo de teste 
de validação de software que realiza os testes nas instalações do 
usuário.
Informações são extraídas do programa para compor 
documentação;
2 - Indique na coluna da direita o nível de teste correspondente ao foco de análise dos testes e 
marque a alternativa que apresenta a seqüência correta: 
A - Unidade 
B - Validação
C - Sistema
D - Integração
Engenharia de sistemas 
Código
Arquitetura do software 
Requisitos
Engenharia de Software e Gerencia de Projetos
13Teste de software – conceitos 
3 - Analise as sentenças abaixo e indique V para as sentenças VERDADEIRAS e F para as sentenças 
FALSAS.
A - Os tipos de teste são aplicáveis ao conjunto de características definidas para realização 
dos testes em cada nível, durante o desenvolvimento de sistemas. 
B - Para os testes de integração é preciso definir o método: não incremental ou incremental 
e, top-down ou botton-up; 
C - Teste de carga, também chamado de stress executa o sistema de uma forma que exige 
recursos em quantidade, freqüência ou volumes anormais. 
D - Utiliza-se o conceito de driver e stub para realizar teste de integração
E - Teste de funcionalidade é aplicado para a descoberta de erros funcionais. 
Respostas - 3 - (V, V, V, V e V)
Engenharia de Software e Gerencia de Projetos
14Teste de software – conceitos 
Síntese
Resumindo pode-se destacar desta unidade:
Teste de software é uma disciplina da engenharia de software para verificar e validar sistemas;
Verificar sistemas significa aferir se o sistema está correto, sem erros;
Validar sistemas significa aferir e o sistema desenvolvido está correto em relação ao solicitado pelo usuário. 
Testar software é uma prática realizada para obter qualidade na produção de sistemas, garante a 
continuidade e reduz custo de manutenção.
A estratégia de teste de software é concentrada em Técnicas, tipos e níveis.
As técnicas são Estrutural (caixa branca), Funcional (caixa preta) e baseada em erros.
Os tipos de teste são: funcionalidade, interface, conteúdo da informação, desempenho, stress/carga, 
recuperação, segurança, alfa, beta, regressão, aceitação, regressão e sensibilidade. Cada tipo possui 
uma característica própria.
Os níveis são definidos em unidade/componente, integração, validação e sistema. Cada nível utiliza o tipo 
e técnica apropriada para a natureza do negócio e objetivo.
Os testes automáticos estão sendo muito utilizados atualmente para agilizar o processo de teste. 
 ● PRESSMAN, R.G. Engenharia de Software. Rio de Janeiro: McGraw-Hill, 2002. 935p.
 ● SOMMERVILLE, I.. Software Engineering, 8 ed.-São Paulo: Pearson Addison - Wesley, 2007. 
Bibliografia Recomendada

Outros materiais