Escolar Documentos
Profissional Documentos
Cultura Documentos
Testes de Software
Teste de Componentes Teste de Unidade
Teste de Sistema
Mdulo: coleo de componentes dependentes
Testes de Software
Projeto Detalhado
Especificao de Requisitos
Especificao de Sistema
Projeto de Sistema
operao
Teste de Aceitao
06/11/2008
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.
entradas
sistema
saidas
EA976 - Prof. Eleri Cardozo
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
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.
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.
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.)
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.
06/11/2008
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.
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: 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
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