• Nenhum resultado encontrado

Engenharia de Software

N/A
N/A
Protected

Academic year: 2022

Share "Engenharia de Software"

Copied!
40
0
0

Texto

(1)
(2)

Software

Testes de Software

Professor: Charles Leite

(3)

Definição de Teste

Os engenheiros de software tentam construir um software através um modelo conceitual abstrato, tentando obter um produto tangível

Oportunidades para muitíssimas falhas humanas.

Com isto surge a necessidade de se

testar!!!

(4)

Definição de Teste

Testes são atividades

desempenhadas para avaliar a

qualidade do produto e melhorá-lo

depois da identificação dos

defeitos e problemas

(5)

Teste de Software

O processo de teste tem que ter a

intenção

de achar erros;

Um bom caso de teste é aquele que tem grandes probabilidades de achar um erro antes não descoberto;

Um teste que obtenha sucesso é aquele que consegue descobrir erros;

Um teste não pode ser simples nem complexo;

Um teste não pode ser redundante.

(6)

Objetivos do Teste de Software

1 / 2 0 1

8

Demonstrar ao desenvolvedor e ao cliente que a implementação do software coincide com os requisitos.

• Deve existir pelo menos um teste para cada requisito do usuário

Descobrir erros ou defeitos no

software onde o comportamento do

software está incorreto, indesejado

ou não está conforme as

especificações.

(7)

Só para esclarecer

1 / 2 0 1

8 DEFEITO → quando o comportamento do software é indesejado, como interações não desejadas, computações incorretas, ocorrência de dados corrompidos

ERRO → quando o software deixa de funcionar por causa de alguma falha, que podem ser na implementação, no acesso a banco de dados, na execução do programa, etc

(8)

O Grande PROBLEMA:

1 / 2 0 1

8

Apesar dos testes auxiliarem a demonstração de um software está livre de defeitos, não é possível afirmar que o mesmo está completamente correto, sem defeitos em 100% dos casos.

(Dijkstra et al., 1972) “Os testes

só podem mostrar a presença

de erros, não a sua ausência”.

(9)

Princípios do Teste de Software

1 / 2 0 1

8

Todos os testes tem que ser rastreados pelos requisitos do cliente.

Os testes tem que ser planejados muito antes de terem sua execução iniciada.

Os testes devem começar pequenos e depois crescer ao longo processo de testes.

Testes exaustivos não são possíveis!!!

(10)

Testabilidade

1 / 2 0 1

8 A capacidade de checar o quão o software é facil de ser testado.

Está relacionado com as seguintes características:

• Operabilidade

• Observasionalidade

• Controlabilidade

• Decompositividade

• Simplicidade

• Estabilidade

(11)

Tipos de Teste

1 / 2 0 1

8 Para entendermos as classificações adotadas na literatura sobre Testes de Software consideremos os seguintes tipos de testes:

Teste de Caixa Branca

Teste de Caixa Preta

Teste de Caixa Cinza

(12)

Tipos de Teste – Caixa Branca

1 / 2 0 1 8

Testam PARTE da solução, são escritos e mantidos pelo programador e devem sempre estar atualizados.

Esta técnica trabalha diretamente sobre o código fonte do componente de software.

O testador tem acesso ao código fonte da aplicação e pode construir bibliotecas de testes.

Exs.:Teste de Condição, Teste de Unidade, Teste de Integração, Teste de Componentes, etc.

(13)

Tipos de Teste – Caixa Preta

1 / 2 0 1 8

É ocultado os detalhes do comportamento das partes testadas.

São testes funcionais e de aceitação, integração.

Ou seja, testam a solução completa.

Avalia o comportamento EXTERNO do componente de software.

São fornecidos dados de entrada, o teste é executado, e o resultado é comparada com o resultado PREVIAMENTE CONHECIDO.

Ex.: Teste de GUIs, Teste de Documentação, Teste de Sistema, Teste de Integração, Teste Unitário.

(14)

Tipos de Teste – Caixa Cinza

1 / 2 0 1

8 É a mesclagem do uso das duas técnicas.

Isto envolve ter acesso às

ESTRUTURAS dos dados e

ALGORITMOS a fim de desenvolver casos de testes.

Também é utilizada para Engenharia Reversa.

(15)

Testes Não-funcionais

1 / 2 0 1

8

Técnicas existentes para testar aspectos não funcionais.

É uma forma de testar tolerância e robustez do sistema.

Exs.: Teste de Desempenho, Teste

de Carga, Teste de Usabilidade e

Teste de Recuperação.

(16)

Teste de Unidade

1 / 2 0 1

8

Também conhecido com Teste Unitário é a fase em que se testam as MENORES partes do software (Classes, métodos, interfaces).

Objetivo é encontrar pequenas

falhas no funcionamento dentro de

uma pequena parte do sistema

funcionando, independente do

todo.

(17)

Teste de Integração

1 / 2 0 1 8

Nesta fase o objetivo é encontrar falhas provenientes da integração interna dos componentes.

Geralmente o tipo de falhas

encontradas são as de transmissão

de dados.

(18)

Teste de Sistema

1 / 2 0 1

8

Nesta fase o objetivo é executar o sistema sob ponto de vista do usuário final.

Suas funcionalidades são varridas em busca de se achar falhas em relação ao seu objetivo original.

Os teste são executados em

condições similares ao dia-a-dia do

usuário final.

(19)

Teste de Operação

1 / 2 0 1 8

O teste é conduzido pelos administradores do ambiente final em que o sistema ou software entrará em ambiente produtivo.

Nessa fase de teste devem ser feitas simulações para garantir que a entrada em produção do sistema será bem sucedida.

Envolve testes de instalação, simulações com cópia de segurança dos bancos de dados por exemplo.

(20)

Teste de Aceitação

1 / 2 0 1 8

Também conhecido como Teste de Validação do Sistema.

São realizados por um grupo restrito de usuários finais do sistema, que simulam operações de rotina do sistema de modo a verificar se seu comportamento está de acordo com o solicitado.

Teste formal conduzido para determinar se um sistema satisfaz ou não seus critérios de aceitação e para permitir ao cliente determinar se aceita ou não.

(21)

Testes

1 / 2 0 1

8 Mais 1/3 das falhas poderiam ser evitadas se mais testes fossem feitos.

Cerca de 50% das falhas são descobertas com o software já em produção.

Há um prejuízo anual de mais de 60 bilhões de dólares só nos EUA.

→ Com teste de software, este números podiam reduzir DRASTICAMENTE!!!!

(22)

processo de teste?

1 / 2 0 1

8 O código deve ser SEMPRE verificado.

É necessário garantir que os requisitos foram implementados de forma correta.

É necessário que haja segurança na hora de evoluir os sistemas.

Os testes tem que ser feitos de maneira rápida para entregar rápido o sistema.

A criatividade é extremamente necessária para explorar o máximo possível com os testes, não usar testes mentirosos.

(23)

Ferramentas para Testes

1 / 2 0 1

8

JUnit

• Um framework de teste altamente usado e eficaz na criação e execução de testes unitários de código.

• Facilita a criação automática de testes de unidade com apresentação dos resultados, podendo ser verificado se cada método de uma classe funciona da forma esperada, exibindo uma possível falha

(24)

Ferramentas para Testes

1 / 2 0 1 8

JUnit

(25)

Ferramentas para Testes

1 / 2 0 1

8

JUnit (Vantagens do JUnit)

• Permite a escrita de código rapidamente aumentando a qualidade.

• É elegante e simples.

• O próprio framework checa os resultados dos testes e fornece uma resposta imediata.

• Tudo criado no JUnit é escrito puramente em Java.

• JUnit é uma ferramenta livre.

(26)

Ferramentas para Testes

1 / 2 0 1 8

JUnit (Exemplo Código Java → a ser testado)

(27)

Ferramentas para Testes

1 / 2 0 1 8

JUnit (Exemplo Código Java → O TESTE)

(28)

Ferramentas para Testes

1 / 2 0 1 8

JUnit (Resultado → Plugging Eclipse)

(29)

Ferramentas para Testes

1 / 2 0 1

8 JUnit (Resultado 2 → Plugging Eclipse)

(30)

1 / 2 0 1 8

IBM Rational Functional Tester (RFT)

• Ferramenta de testes para desenvolvedores e testadores que necessitam de controle para testar aplicações baseadas em Java, Microsoft Visual Studio .NET e Web.

• A ferramenta grava as interações do usuário com a aplicação em teste, assim um script de teste é criado.

• Durante o playback, estes pontos de verificação são utilizados para comparar a informação gravada com a informação em tempo real para assegurar a consistência.

(31)

Ferramentas para Testes

1 / 2 0 1 8

IBM Rational Functional Tester (RFT)

(32)

Ferramentas para Testes

1 / 2 0 1

8

DBUnit

• Ferramenta prove a configuração de um banco de dados num estado conhecido entre as execuções dos teste.

• Este é um meio excelente de se livrar dos problemas que ocorrem quando um caso de teste corrompe um banco de dados ou causa a falha subsequente de outros testes

(33)

1 / 2 0 1 8

DBUnit (Exemplo JAVA)

public class SampleTest extends DBTestCase { public SampleTest(String name)

{ super(name); }

... // Implementação dos métodos de configuração aqui public void testMe() throws Exception

{ ... // Executa o código testado que modifica o banco aqui // Cria a conexão e pega a tabela

IDataSet databaseDataSet = getConnection().createDataSet();

ITable actualTable = databaseDataSet.getTable("TABLE_NAME");

// Carrega os valores esperados no Banco por um arquivo XML

IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(new File("expectedDataSet.xml"));

ITable expectedTable =

expectedDataSet.getTable("TABLE_NAME");

// Checa se os valores da Tabela estão coincidindo Assertion.assertEquals(expectedTable, actualTable);

} }

(34)

1 / 2 0 1 8

DBUnit

(35)

Ferramentas para Testes

1 / 2 0 1

8

Jmeter

• O propósito principal para testes de carga e stress de aplicações.

• Com ela, é possível construir o acesso a um fluxo pré-definido de páginas WEB para simular o acesso por diversos usuários concorrentes.

(36)

Ferramentas para Testes

1 / 2 0 1 8

JMeter

(37)

Benefícios de usar testes

1 / 2 0 1 8

Maior eficiência e testes mais rápidos

Melhor tomada de decisão

Alavanque investimentos de

sistemas legados

(38)

(para automação de testes)

1 / 2 0 1

8 Os testes automatizados não substituem os testes manuais.

Testes manuais tendem a encontrar mais defeitos do que testes automatizados.

Testes manuais inspiram mais confiança em relação à qualidade dos testes.

A automação de testes pode limitar o desenvolvimento de software.

(39)
(40)

SOMMERVILLE, Ian. Engenharia de

Software. Capítulo 8, páginas 144-

163. 9ª edição. São Paulo: Pearson

Prentice Hall, 2011.

Referências

Documentos relacionados

Sousa (2012) explica que neste instrumento, não há que se falar em justo título e boa-fé, aqui ambos estão presumidos, pois o que deve ser levado em conta é a destinação do

VIANNA, Glória. Revendo a Biblioteca Machado de Assis. A Biblioteca de Machado de Assis. Rio de Janeiro: Academia Brasileira de Letras; Topbooks, 2001, p.. A ordem dos livros e

comemorativos são tradicionais desde a inauguração do restaurante, há 15 anos Opção com estadia no Hotel Mercure Lourdes Belo Horizonte tem preço especial - Fotos: Paulo Cunha /

O processo de transformação bacteriana utilizada na Biologia Molecular ocorre in vitro, e pode ser afetado pelo tamanho e conformação da molécula de DNA a ser introduzida na

Exposições de quatro palestrantes mostram que o projeto do governo federal leva à privatização da gestão, à entrega do fundo público para o setor privado, à submissão da

1 - Usa-se senão (junto), quando possui os seguintes significados: a não ser, exceto, mas, mas sim, mas também, caso contrário, do contrário.. Ex.: Não faz mais nada, senão

Solução. João vai à praia se, e somente se, Marcelo joga basquete.. Negação de “Ou… Ou…” é “se, e

O presente artigo objetiva estabelecer uma relação entre a formação e a existência dos partidos políticos no Brasil e a teoria de Robert Michels, analisando, para tanto, desde