Sei sulla pagina 1di 12

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS

Graduação em Sistemas de Informação

FUNDAMENTOS DE TESTES DE SOFTWARE: REVISÃO

Belo Horizonte
2018
Alex Martins Oliveira

FUNDAMENTOS DE TESTES DE SOFTWARE: REVISÃO

Exercício apresentado à disciplina de Fundamentos de


Testes de Software, do Curso de Sistemas de Informação,
da Pontifícia Universidade Católica de Minas Gerais.

Professora: Sandra Maria Silveira

Belo Horizonte, 21 de novembro de 2018.


SUMÁRIO

1 ATIVIDADE .......................................................................................................................... 4

REFERÊNCIAS ..................................................................................................................... 12
1 ATIVIDADES

1 - Crie uma tabela apresentando o objetivo de cada tipo de testes.

Tipo Objetivo
Teste unitário é o processo que tem por objetivo testar os componentes
de programa, como métodos ou classes de objeto. As funções individuais
ou métodos são o tipo mais simples de componente. Seus testes devem ser
Unitários
chamadas para essas rotinas com parâmetros diferentes de entrada. Você
pode usar as abordagens para projeto de casos de teste, para projetar testes
de funções ou métodos.
O teste de sistema, durante o desenvolvimento, envolve a integração de
componentes para criação de uma versão do sistema e, em seguida, o teste
do sistema integrado. O teste de sistema tem por objetivo verificar se os
componentes são compatíveis, se interagem corretamente e transferem os
dados certos no momento certo, por suas interfaces. Certamente,
sobrepõem-se ao teste de componente, mas existem duas diferenças
importantes:

Sistema  Durante o teste de sistema, os componentes reusáveis que


tenham sido desenvolvidos separadamente e os sistemas de
prateleira podem ser integrados com componentes recém-
desenvolvidos. Então, o sistema completo é testado.
 Nesse estágio, componentes desenvolvidos por diferentes
membros da equipe ou grupos podem ser integrados. O teste de
sistema é um processo coletivo, não individual. Em algumas
empresas, o teste de sistema pode envolver uma equipe
independente, sem participação de projetistas e programadores.
Testes de componentes compostos (ou teste de integração) têm por
objetivo centrar-se em mostrar que a interface de componente se
comporta de acordo com sua especificação. Frequentemente, os
Integração
componentes do software são compostos de diversos objetos que
interagem. Você pode acessar a funcionalidade desses objetos por meio da
interface de componente definida.

4
O objetivo do teste de aceitação é apresentar como o mesmo aproxima o
contato entre a equipe de trabalho e como o cliente decide se aceita ou não
as funções desenvolvidas dentro de um cenário no desenvolvimento de
software. Além de que, os desenvolvedores só podem trabalhar a partir
Aceitação
dos requisitos, mas, muitas vezes, estes não refletem outros fatores que
afetam o uso prático do software. Os usuários podem fornecer
informações sobre as práticas que contribuem com projeto de testes mais
realista.
O teste de regressão envolve a execução de conjuntos de testes que
tenham sido executados com sucesso, após as alterações serem feitas em
um sistema. O teste de regressão tem por objetivo verificar se essas
mudanças não introduziram novos bugs no sistema e se o novo código
Regressão interage com o código existente conforme o esperado. O teste de regressão
é muito caro e geralmente impraticável quando um sistema é testado
manualmente, pois os custos com tempo e esforço são muito altos. Em tais
situações, você precisa tentar escolher os testes mais relevantes para
executar novamente, e é fácil perder testes importantes.

2 - Qual a diferença entre Validação e Verificação do projeto de software?

Validação Verificação
O objetivo é verificar se o software atende aos
A inexistência de erros não mostra a adequação
requisitos funcionais e não funcionais
operacional do sistema.
especificados
Verificação inclui da realização de testes para
Deve ser feita a validação com o cliente.
encontrar erros
A validação procura assegurar que o sistema
atenda as expectativas e necessidades do cliente
A validação final é realizada pelo Pergunta principal: Estamos construindo o
usuário/cliente produto corretamente?
Pergunta principal: Estamos construindo o
produto correta?

5
3 - Explique o que são testes automatizados e seus benefícios

Automatização de testes é o uso de software para controlar a execução de testes de software


através da aplicação de estratégias e ferramentas, comparando os resultados esperados com os
resultados reais. Seus benefícios são a redução do envolvimento humano em atividades manuais, de
tempo demandado e de custo final.

4 - Explique a importância de testes de regressão

O teste de regressão envolve a execução de conjuntos de testes que tenham sido executados
com sucesso, após as alterações serem feitas em um sistema. O teste de regressão tem por objetivo
verificar se essas mudanças não introduziram novos bugs no sistema e se o novo código interage
com o código existente conforme o esperado. O teste de regressão é muito caro e geralmente
impraticável quando um sistema é testado manualmente, pois os custos com tempo e esforço são
muito altos. Em tais situações, você precisa tentar escolher os testes mais relevantes para executar
novamente, e é fácil perder testes importantes.

5 - Explique o que é refatoração e sua importância.

A Refatoração é o processo de alterar um software de uma maneira que não mude o seu
comportamento externo e ainda melhore a sua estrutura interna. Ela é utilizada para manter um
software bem projetado mesmo com o decorrer do tempo e as mudanças que ele virá a sofrer. A
refatoração é importante e traz benefícios, quais sejam:

 Responsabilidades melhor distribuídas;


 Código mais fácil de fazer manutenção;
 Transição de um código sem qualidade para código de qualidade;
 O código fica mais compreensível;
 Minimiza a chance de introduzir bugs;

6 - Relacione testes automatizados e testes de regressão.

O melhor momento para a automação dos scripts é logo após o fim da execução dos seus
testes manuais. Os scripts de teste que eu automatizar neste momento constituirão o teste de
regressão que irá garantir a qualidade do meu software e economizar tempo nos próximos ciclos de

6
desenvolvimento, onde eu terei que me preocupar em testar apenas as novas funcionalidades. As
funcionalidades antigas estão automatizadas e podem ser testadas com a execução deste teste de
regressão automatizado.

7 - Relacione testes automatizados e refatoração

Testes automatizados desempenham um papel importantíssimo na refatoração. Eles são


utilizados para cada passo simples da refatoração que for executado, seja verificado se todo o
sistema ainda continua íntegro, até a refatoração ser totalmente concluída. Esta medida de
segurança garante que os desenvolvedores ao refatorar, correrão um risco bem menor de introduzir
erros no software.
Mas, temos que nos atentar, que isso funciona até o momento em que a interface da classe
não é alterada. Uma vez que a interface de uma classe é alterada como parte de uma refatoração, os
testes precisam ser modificados para atender a essa nova interface. Isso levanta uma questão de
como os testes automatizados podem nos trazer segurança na injeção de erros quando nós mesmos
temos que modificá-los? Existem duas abordagens diferentes para lhe dar com os testes durante a
refatoração:

 Code-First Refactoring: Os desenvolvedores realizam a refatoração e depois


personalizam os testes.
 Test-First Refactoring: Os testes são personalizados antes para atender a refatoração.

8 - Explique o que é TDD e apresente seu ciclo e sua importância para o desenvolvimento de
Software.

Test Driven Development (TDD) é uma técnica de desenvolvimento de software que


consiste em escrever um teste, escrever um código simples para fazer o teste passar e, ao final,
refatorar o código.
As imagens abaixo representam o ciclo TDD, quais sejam:

7
8
O ciclo se resume em:

 Escrever um teste
 Codificar o mínimo possível para o teste passar
 Refatorar

Assim funciona o ciclo, se o teste está passando, a cada ciclo o software vai crescendo.

9 - Ao testarmos uma aplicação OO, que aspectos devemos levar em consideração?


10 - Ao testarmos uma aplicação WEB, que aspectos devemos levar em consideração?

Testes de Aplicações WEB Testes de Aplicações Orientadas a Objetos


O que é? O que é?

O teste de WebApp é um conjunto de A arquitetura do software orientado a objeto


atividades relacionadas com um único (OO) resulta em uma série de subsistemas
objetivo: descobrir erros no conteúdo, na em camadas que encapsulam classes
função, na usabilidade, na navegabilidade, no colaboradoras. Cada um desses elementos de
desempenho, na capacidade e na segurança sistema (subsistemas e classes) executa
da WepApp. Para tanto, deve ser utilizada funções que ajudam a satisfazer os requisitos
uma estratégia de teste que abrange as do sistema. É necessário testar um sistema
revisões e o teste executável. orientado a objetos em diversos níveis em
um esforço para descobrir erros que podem
ocorrer à medida que as classes colaboram
umas com as outras e os subsistemas se
comunicam através das camadas da
arquitetura.
Quem realiza? Quem realiza?

Os engenheiros de aplicações para Web e O teste orientado a objeto é executado por


outros interessados no projeto (gerentes, engenheiros de software e especialistas em
clientes e usuários finais), todos participam teste.
do teste de WepApp.

9
Porque é importante? Porque é importante?

Se os usuários finais encontrarem erros que É necessário executar o programa antes que
abalem sua credibilidade na WebApp, seja entregue ao cliente para remover todos
buscarão em outro lugar pelo conteúdo de os erros, de maneira que o usuário não passe
função que precisam, e a WebApp será um por nenhuma frustação com um produto de
fracasso. Por essa razão, deve-se trabalhar má qualidade. Para encontrar o maior
para eliminar tantos erros quantos forem número possível de erros, devem ser feitos
possíveis antes que a WebApp entre no ar. testes sistematicamente e projetados casos de
teste usando técnicas bem definidas.
Quais são as etapas envolvidas? Quais são as etapas envolvidas?

O processo de testes começa focalizando os O teste orientado a objeto é estrategicamente


aspectos visíveis da WebApp ao usuário e análogo ao de sistemas convencionais, mas é
passa para os testes de tecnologia e taticamente diferente. Em virtude de os
infraestrutura. Executam-se sete etapas de modelos de analise e projeto orientados a
teste: de conteúdo, interface, navegação, objeto serem similares em estrutura e
componente, configuração, desempenho e conteúdo ao programa orientado a objeto
segurança. resultante, o “teste” é iniciado com a revisão
dos modelos. Uma vez gerado o código,
começa o teste orientado a objeto
“inicialmente” com o teste de classes. É
projetada uma série de testes que exercitam
as operações de classe e examinam se
existem erros enquanto uma classe colabora
com outras. À medida que as classes são
integradas para formar um subsistema,
aplicam-se testes baseados em sequencias de
execução (thread) baseados no uso e o teste
de conjunto juntamente com abordagens
baseadas em falhas para usar completamente
as classes colaboradoras. Por fim, são usados
casos de uso (desenvolvidas como parte do
modelo de requisitos) para descobrir erros
em nível de avaliação de software.

10
Qual é o artefato? Qual é o artefato?

Em algumas instancias um plano de teste de É projetado e documentado um conjunto de


uma WebApp é produzido. Em qualquer casos de teste, desenvolvidos para usar as
instância, é desenvolvida uma série de casos classes, suas colaborações e
de testes para todas as etapas, e é mantido um comportamentos; são definidos os resultados
arquivo dos resultados para uso futuro. esperados e registrados os obtidos.
Como garantir que o trabalho foi Como garantir que o trabalho foi
realizado corretamente? realizado corretamente?

Embora nunca se possa ter certeza de ter Ao iniciar o teste, mude o seu ponto de vista.
executado todos os testes necessários, é Teste por todos os meios “quebrar” o
possível verificar se erros foram apontados (e software. Projete casos de teste de maneira
esses foram corrigidos). Além disso, se foi disciplinada e reveja os casos que você criou
estabelecido um plano de teste, é para que sejam completos.
aconselhável certificar-se que todos os testes
planejados foram realizados.

11
REFERÊNCIAS

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS. Pró-Reitoria de Graduação.


Sistema de Bibliotecas. Padrão PUC Minas de normalização: normas da ABNT para
apresentação de projetos de pesquisa. Belo Horizonte, 2010. Disponível em:
<http://www.pucminas.br/biblioteca/>. Acesso em: 01 nov. 2018.

PRESSMAN, Roger S. Engenharia de software: uma abordagem profissional. 7. ed. Porto


Alegre: AMGH, 2011. xxviii, 780 p. ISBN 9788563308337.

PRESSMAN, Roger S. Engenharia de Software. 8ª edição, Rio de Janeiro: McGraw Hill, 2016.

12

Potrebbero piacerti anche