Você está na página 1de 9

06/11/2008

Testes de Software
Teste de Componentes Teste de Unidade

Teste de Mdulo Teste de Integrao Teste de Subsistema

Teste de Sistema
Mdulo: coleo de componentes dependentes

Teste de Usurio Teste de Aceitao

EA976 - Prof. Eleri Cardozo

Testes de Software
Projeto Detalhado

Especificao de Requisitos

Especificao de Sistema

Projeto de Sistema

Elo entre o desenvolvimento e a validao

Plano de Teste de Aceitao

Plano de Teste de Integrao de Sistema

Plano de Teste de Integrao de Subistema

operao

Teste de Aceitao

Teste de Integrao de Sistema


EA976 - Prof. Eleri Cardozo

Teste de Integrao de Subsistema

Teste de Unidade e Mdulo

06/11/2008

Testes de Unidade e Mdulo

Objetivo: expor defeitos presentes no software (e no declarar o software livre de defeitos). O software submetido a casos de teste, tendo suas sadas comparadas com as sadas esperadas (corretas). Problemas: determinar os casos de teste; realizar os testes; analisar os resultados dos testes.

EA976 - Prof. Eleri Cardozo

Testes de Caixa Preta


Verificam se o sistema cumpre certas funcionalidades (testes funcionais). Nestes testes o sistema tratado como uma caixa preta.
entradas que provocam comportamento anmalo

entradas

sistema

saidas
EA976 - Prof. Eleri Cardozo

saidas que revelaram presena de defeitos

06/11/2008

Partio de Equivalncia
So conjuntos de dados de entrada que produzem comportamento equivalente no sistema. Os casos de teste so escolhidos nestas parties. Exemplo: formulrio preenchido correta e incorretamente.

entradas vlidas

entradas invlidas

sistema

saidas
EA976 - Prof. Eleri Cardozo

saidas que revelaram presena de defeitos

Testes de Estrutura
Testes de estrutura (caixa clara) so aplicados a unidades pequenas (mtodo, funo). Os casos de teste devem fazer com que todas as instrues do programa sejam executadas pelo menos uma vez. necessrio conhecimento do cdigo para a realizao de testes de estrutura. Testes de caminho so testes de estrutura onde casos de teste foram a execuo de cada caminho independente. Exemplo de caminho so blocos definidos pelos comandos if, for, while, switch, etc.

EA976 - Prof. Eleri Cardozo

06/11/2008

Testes de Integrao

Testes de integrao identificam defeitos originados na integrao de componentes e subsistemas. Tais defeitos so causados por: falhas de implementao da arquitetura; falhas de implementao de protocolos de interao; falhas ou uso incorreto de middlewares e contineres; falhas de configurao; falhas de instalao. Testes de integrao podem ser top-down ou bottom-up.

EA976 - Prof. Eleri Cardozo

Testes top-down e bottom-up


No teste top-down os componentes de mais alto nvel so integrados primeiro. No teste bottom-up ocorre o inverso. Testes top-down so mais adequados para validar a arquitetura do sistema, mas requerem componentes stub (ou mock), isto , componentes que simulam os componentes de nveis inferiores. Testes bottom-up requerem drivers de teste (ambientes artificiais onde os componentes de baixo nvel possam executar). Usualmente utiliza-se uma combinao destas duas estratgias de teste.

EA976 - Prof. Eleri Cardozo

06/11/2008

Testes de Interface

Teste de interface detectam falhas na interconexo de componentes e subsistemas. Falhas de interconexo podem ser causadas por: dados incorretos trocados entre componentes; erros em parmetros de mtodos (tipos, valores); manipulao incorreta de dados compartilhados; erros em protocolos de interao (timing, parmetros, etc.)

EA976 - Prof. Eleri Cardozo

Testes de Estresse

Realizados com o sistema totalmente integrado, testes de estresse verificam se o sistema atende certas propriedades emergentes tais como desempenho e confiabilidade. Certos defeitos como overflow de buffers e da rea de heap se manifestam somente quando o sistema opera sob estresse. Testes de estresse so importantes para sistemas distribudos para determinar o overhead da distribuio.

EA976 - Prof. Eleri Cardozo

06/11/2008

Testes de Sistemas Orientados a Objeto

Testes de unidade verificam os objetos individuais. Testes de subsistema verificam agrupamentos de objetos (por exemplo, pacotes java). Testes de integrao podem ser derivados dos casos de uso e diagramas de robustez. Testes de interface podem ser derivados dos modelos dinmicos como diagramas de seqncia e colaborao.

EA976 - Prof. Eleri Cardozo

Bancadas de Teste
Bancadas de teste integram vrias ferramentas de teste em um ambiente integrado. Exemplo de ferramentas de teste: analisadores estticos de cdigo (como FindBugs, ...); ferramentas de teste de unidade (como JUnit, ...); ferramentas de instrumentao de cdigo (como compiladores OCL, ...); analisadores dinmicos de cdigo (como HttpUnit, ...); ferramentas de teste de estresse (como tcpdump, ...); simuladores (como ServletUnit, ...); geradores de relatrio; ferramentas de anlise de cobertura de teste. Produtos comerciais para teste de software so oferecidos por empresas como IBM (Rational), Telelogic, Parasoft, etc.
EA976 - Prof. Eleri Cardozo

06/11/2008

JUnit: Framework de Teste de Unidade


JUnit um framework que utiliza anotaes Java para definir seqncias de testes para classes Java (portanto, JUnit auxilia testes de unidade). As anotaes mais comuns so: @Before - anota cdigo executado antes dos testes (tipicamente instancia e inicializa objetos da classe). @Test - anota cdigo responsvel por realizar os testes (tipicamente invoca mtodos de objetos da classe e compara o retorno com um valor esperado). @After - anota cdigo executado aps os testes (tipicamente aes de cleanup, caso necessrias).
EA976 - Prof. Eleri Cardozo

JUnit: Exemplo
package calc; public class Calculator { private static int result; public void add(int n) { result = result + n; } public void substract(int n) { result = result - 1; } public void multiply(int n) { } // not ready yet // Static variable where the result is stored

//Bug : should be result = result - n

public void divide(int n) { result = result / n; } public void square(int n) { result = n * n; EA976 - Prof. Eleri Cardozo }

06/11/2008

JUnit: Exemplo
public void squareRoot(int n) { for (; ;) ; //Bug : loops indefinitely } public void clear() { result = 0; } // Cleans the result

public void switchOn() { // Swith on the screen, display "hello", beep // and do other things that calculator do nowadays result = 0; } public void switchOff() { // Display "bye bye", beep, switch off the screen } public int getResult() { return result; } } EA976 - Prof. Eleri Cardozo

JUnit: Exemplo
package junit4; import import import import import import calc.Calculator; junit.framework.JUnit4TestAdapter; static org.junit.Assert.assertEquals; org.junit.Before; org.junit.Ignore; org.junit.Test;

/** * Basic test class using @Test, @Before and @Ignore annotation * as welll as assert keyword and assertEqual methods */ public class CalculatorTest { private static Calculator calculator = new Calculator(); // Used for backward compatibility (IDEs, Ant and JUnit 3 text runner) public static junit.framework.Test suite() { return new JUnit4TestAdapter(CalculatorTest.class); } EA976 - Prof. Eleri Cardozo

06/11/2008

JUnit: Exemplo
@Before // must be public not protected like the setup public void clearCalculator() { calculator.clear(); } //================================== //= Test cases = //================================== @Test public void add() { calculator.add(1); calculator.add(1); assertEquals(calculator.getResult(), 2); } @Test public void subtract() { calculator.add(10); calculator.substract(2); assertEquals(calculator.getResult(), 8); } EA976 - Prof. Eleri Cardozo

JUnit: Exemplo
@Test public void divide() { calculator.add(8); calculator.divide(2); assert calculator.getResult() == 5; } @Test(expected = ArithmeticException.class) public void divideByZero() { calculator.divide(0); } // @Ignore has a String parameter which displays a message @Test @Ignore("not ready yet") public void multiply() { calculator.add(10); calculator.multiply(10); assertEquals(calculator.getResult(), 100); } } EA976 - Prof. Eleri Cardozo

Você também pode gostar