30
Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004 Teste de Software: Existe Isto? Jorge Fernandes Junho de 2004

Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Teste de Software: Existe Isto?

Jorge FernandesJunho de 2004

Page 2: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Softwarepublic class Calc {private int estadoInteracao;

private int operacaoSelecionada;private long acumulador0;private long acumulador1;private static final int NENHUMA = 0;private static final int SOMA = 1;private static final int SUBTRACAO = 2;private static final int ACUMULANDO_0 =

0;private static final int ACUMULANDO_1 =

1;public Calc() {}long soma() {operacaoSelecionada = SOMA;estadoInteracao = ACUMULANDO_1;return acumulador0;

}long um() {return numeroDigitado(1);}long dois() {return numeroDigitado(2);}long numeroDigitado(int valor) {if (estadoInteracao ==

ACUMULANDO_0) {acumulador0 = acumulador0 * 10 + valor;estadoInteracao = ACUMULANDO_0;return acumulador0;

} else if ( estadoInteracao == ACUMULANDO_1) {

acumulador1 = acumulador1 * 10 + valor;estadoInteracao = ACUMULANDO_1;return acumulador1;

}return 0;

}long igual() {long resultado = 0;if (operacaoSelecionada == SOMA) {

resultado = acumulador0 + acumulador1;}reset();return resultado;

}long reset() {estadoInteracao = ACUMULANDO_0;operacaoSelecionada = NENHUMA;acumulador0 = 0;acumulador1 = 0;return acumulador0;

}}

import java.awt.*;import java.awt.event.*;public class CalcVisual extends Frame {// Cria os painéisPanel panelTeclas = new Panel();Panel panelTeclasTopo = new Panel();Panel panelTeclasNumericas = new Panel();

// cria os gerenciadores de layout dos painéisBorderLayout BorderLayoutPrincipal = new BorderLayout ();BorderLayout BorderLayoutTodasAsTeclas = new

BorderLayout ();GridLayout gridLayoutClearCEBackSpace = new GridLayout ();GridLayout gridLayoutTeclasNumericasEOperacoes = new

GridLayout();

// cria a área de display da calculadoraTextField textFieldDisplay = new TextField();

// cria os botões da calculadoraButton buttonBackspace = new Button();Button buttonC = new Button();Button buttonCE = new Button();Button button _0 = new Button();Button button _1 = new Button();Button button _2 = new Button();Button button _3 = new Button();Button button _4 = new Button();Button button _5 = new Button();Button button _6 = new Button();Button button _7 = new Button();Button button _8 = new Button();Button button _9 = new Button();Button button _pontoDecimal = new Button();Button button _igual = new Button ();Button button _soma =new Button();Button button _subtracao = new Button ();Button button _mult = new Button();Button button _divisao = new Button();Button button _percento = new Button();Button button _raiz = new Button();Button button _inverteSinal = new Button();Button button _reciproco = new Button();

// cria o "modelo de dados", isto é, o próprio objeto calculadora// que irá efetivamente realizar os cálculosCalc calc = new Calc();

// construtor da parte visual da calculadorapublic CalcVisual() {try {

buildGUI();} catch (Exception e) {e.printStackTrace ();

}}/*** Constroi os elementos da interface grafica da calculadora*/private void buildGUI() throws Exception {

button_9.setLabel("9");button_soma.setLabel("+");button_igual.setLabel("=");

// adiciona alguns botões no painel de teclas superiorgridLayoutClearCEBackSpace.setColumns(3);

panelTeclasTopo.setLayout(gridLayoutClearCEBackSpace);

panelTeclasTopo.add(buttonBackspace, null);panelTeclasTopo.add(buttonCE , null);panelTeclasTopo.add(buttonC, null);

// adiciona alguns botões no painel de teclas inferiorgridLayoutTeclasNumericasEOperacoes.setRows(4);gridLayoutTeclasNumericasEOperacoes.setColumns(5);gridLayoutTeclasNumericasEOperacoes.setHgap(4);gridLayoutTeclasNumericasEOperacoes.setVgap(4);

panelTeclasNumericas.setLayout (gridLayoutTeclasNumericasEOperacoes);

panelTeclasNumericas.add(button_7, null);panelTeclasNumericas.add(button_8, null);panelTeclasNumericas.add(button_9, null);panelTeclasNumericas.add(button_divisao, null);panelTeclasNumericas.add(button_raiz, null);panelTeclasNumericas.add(button_4, null);panelTeclasNumericas.add(button_5, null);panelTeclasNumericas.add(button_6, null);panelTeclasNumericas.add(button_mult , null);panelTeclasNumericas.add(button_percento, null);panelTeclasNumericas.add(button_1, null);panelTeclasNumericas.add(button_2, null);panelTeclasNumericas.add(button_3, null);panelTeclasNumericas.add(button_subtracao, null);panelTeclasNumericas.add(button_reciproco, null);panelTeclasNumericas.add(button_0, null);panelTeclasNumericas.add(button_inverteSinal, null);panelTeclasNumericas.add(button_pontoDecimal, null);panelTeclasNumericas.add(button_soma, null);panelTeclasNumericas.add(button_igual, null);

// adiciona ao painel geral de todas as teclas // os dois paineis de teclas menores// ajusta as propriedades dos gerenciadores de layoutpanelTeclas.setLayout(BorderLayoutTodasAsTeclas);

// cria o tratador de evento para o botão "2"button_2.addActionListener(new

java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_2_actionPerformed(e);}

});// cria o tratador de evento para o botão "+"

button_soma.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {button_soma_actionPerformed(e);

}});// cria o tratador de evento para o botão "-"

button_subtracao.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {button_subtracao_actionPerformed(e);

}});// cria o tratador de evento para o botão "*"

button_mult .addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {button_mult_actionPerformed(e);

}});// cria o tratador de evento para o botão "/"

button_divisao.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {button_divisao_actionPerformed(e);

}});// cria o tratador de evento para o botão "="

button_igual.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {button_igual_actionPerformed(e);

}});// cria o tratador de evento para o comando de janelas

window close // (ALT+F4 no windows)this.addWindowListener(new

java.awt.event.WindowAdapter() {public void windowClosing(WindowEvent e) {this_windowClosing(e);

Page 3: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Você Testa Software?

public class Calc {private int estadoInteracao;private int operacaoSelecionada ;private long acumulador0;private long acumulador1;private static final int NENHUMA = 0;private static final int SOMA = 1;private static final int SUBTRACAO = 2;private static final int ACUMULANDO_0 = 0;private static final int ACUMULANDO_1 = 1;public Calc () {}long soma() {operacaoSelecionada = SOMA;estadoInteracao = ACUMULANDO_1;return acumulador0;

}long um() { return numeroDigitado(1);}long dois() {return numeroDigitado(2);}long numeroDigitado(int valor) {if (estadoInteracao == ACUMULANDO_0) {acumulador0 = acumulador0 * 10 + valor;estadoInteracao = ACUMULANDO_0;return acumulador0;

} else if (estadoInteracao == ACUMULANDO_1) {

acumulador1 = acumulador1 * 10 + valor;estadoInteracao = ACUMULANDO_1;return acumulador1;

}return 0;

}long igual() {long resultado = 0;if (operacaoSelecionada == SOMA) {resultado = acumulador0 + acumulador1;

}reset();return resultado;

}long reset() {estadoInteracao = ACUMULANDO_0;operacaoSelecionada = NENHUMA;acumulador0 = 0;acumulador1 = 0;return acumulador0;

}}

import java.awt.*;import java.awt.event.*;public class CalcVisual extendsFrame {

// Cria os painéisPanel panelTeclas = new Panel();Panel panelTeclasTopo = new Panel();Panel panelTeclasNumericas = new Panel();

// cria os gerenciadores de layout dos painéisBorderLayout BorderLayoutPrincipal= new BorderLayout();BorderLayout BorderLayoutTodasAsTeclas= new BorderLayout();GridLayout gridLayoutClearCEBackSpace = new GridLayout();GridLayout gridLayoutTeclasNumericasEOperacoes = new GridLayout();

// cria a área de display da calculadoraTextField textFieldDisplay = new TextField();

// cria os botões da calculadoraButton buttonBackspace = new Button ();Button buttonC = new Button();Button buttonCE= new Button();Button button_0 = new Button ();Button button_1 = new Button ();Button button_2 = new Button ();Button button_3 = new Button ();Button button_4 = new Button ();Button button_5 = new Button ();Button button_6 = new Button ();Button button_7 = new Button ();Button button_8 = new Button ();Button button_9 = new Button ();Button button_pontoDecimal = new Button();Button button_igual = new Button ();Button button_soma = new Button();Button button_subtracao = new Button();Button button_mult = new Button();Button button_divisao = new Button ();Button button_percento = new Button();Button button_raiz = new Button();Button button_inverteSinal = new Button();Button button_reciproco = new Button();

// cria o "modelo de dados", isto é, o próprio objeto calculadora// que irá efetivamente realizar os cálculosCalc calc = new Calc();

// construtor da parte visual da calculadorapublic CalcVisual () {try {buildGUI();

} catch (Exception e) {e.printStackTrace();

}}/*** Constroios elementos da interface grafica da calculadora*/private void buildGUI() throws Exception {

// ajusta as propriedades displaytextFieldDisplay .setText ("0");

// modifica cores de alguns botõesbuttonBackspace.setForeground(Color.red );buttonC.setForeground(Color.red);buttonCE.setForeground(Color.red);

// atribui rótulos aos botões da calculadorabuttonC.setLabel ("C");buttonCE.setLabel ("CE");buttonBackspace.setLabel("Backspace");button_0.setLabel("0");button_1.setLabel("1");button_2.setLabel("2");button_3.setLabel("3");button_4.setLabel("4");button_5.setLabel("5");button_6.setLabel("6");button_7.setLabel("7");button_8.setLabel("8");

button_9.setLabel("9");button_soma.setLabel ("+");button_igual.setLabel("=");

// adiciona alguns botões no painel de teclas superiorgridLayoutClearCEBackSpace.setColumns(3);panelTeclasTopo.setLayout(gridLayoutClearCEBackSpace);panelTeclasTopo.add(buttonBackspace, null);panelTeclasTopo.add(buttonCE, null);panelTeclasTopo.add(buttonC, null);

// adiciona alguns botões no painel de teclas inferiorgridLayoutTeclasNumericasEOperacoes.setRows(4);gridLayoutTeclasNumericasEOperacoes.setColumns(5);gridLayoutTeclasNumericasEOperacoes.setHgap (4);gridLayoutTeclasNumericasEOperacoes.setVgap (4);panelTeclasNumericas.setLayout(gridLayoutTeclasNumericasEOperacoes);panelTeclasNumericas.add(button_7, null );panelTeclasNumericas.add(button_8, null );panelTeclasNumericas.add(button_9, null );panelTeclasNumericas.add(button_divisao, null );panelTeclasNumericas.add(button_raiz, null);panelTeclasNumericas.add(button_4, null );panelTeclasNumericas.add(button_5, null );panelTeclasNumericas.add(button_6, null );panelTeclasNumericas.add(button_mult, null);panelTeclasNumericas.add(button_percento , null);panelTeclasNumericas.add(button_1, null );panelTeclasNumericas.add(button_2, null );panelTeclasNumericas.add(button_3, null );panelTeclasNumericas.add(button_subtracao , null);panelTeclasNumericas.add(button_reciproco, null);panelTeclasNumericas.add(button_0, null );panelTeclasNumericas.add(button_inverteSinal, null);panelTeclasNumericas.add(button_pontoDecimal, null);panelTeclasNumericas.add(button_soma, null);panelTeclasNumericas.add(button_igual, null );

// adiciona ao painel geral de todas as teclas // os dois paineis de teclas menores// ajusta as propriedades dos gerenciadores de layoutpanelTeclas.setLayout(BorderLayoutTodasAsTeclas );panelTeclas.add(panelTeclasTopo , BorderLayout.NORTH);panelTeclas.add(panelTeclasNumericas, BorderLayout.CENTER);

// ajusta propriedades gerais visuais da interfacethis .setSize(250, 275);this .setResizable(false);this .setLayout(BorderLayoutPrincipal);// adiciona o painel geral de teclas ao centro frame (this)this .add(panelTeclas, BorderLayout .CENTER);// adiciona o display ao topo do frame (this)this .add(textFieldDisplay , BorderLayout.NORTH);

/*** cria os vários tratadores de evento

*/// cria o tratador de evento para o botão C (clear)buttonC.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

buttonC_actionPerformed (e);}

});// cria o tratador de evento para o botão "1"button_1.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_1_actionPerformed(e);}

});

// cria o tratador de evento para o botão "2"button_2.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_2_actionPerformed(e);}

});// cria o tratador de evento para o botão "+"button_soma.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_soma_ actionPerformed (e);}

});// cria o tratador de evento para o botão "-"button_subtracao.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_subtracao _actionPerformed(e);}

});// cria o tratador de evento para o botão "*"button_mult.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_mult_actionPerformed (e);}

});// cria o tratador de evento para o botão "/"button_divisao .addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_divisao_actionPerformed(e);}

});// cria o tratador de evento para o botão "="button_igual.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_igual_actionPerformed(e);}

});// cria o tratador de evento para o comando de janelas windowclose // (ALT+F4 no windows)this .addWindowListener(new java.awt.event.WindowAdapter() {public void windowClosing(WindowEvente) {

this_windowClosing(e);}

});// mostra a interface grafica para o usuárioshow();

}// métodos que implementam o tratamento de eventosvoid this_windowClosing(WindowEvente) {System.exit(0);

}void button_soma_actionPerformed(ActionEvent e) {this .textFieldDisplay .setText("" +calc.soma());

}void button_subtracao_actionPerformed (ActionEvent e) {this .textFieldDisplay .setText("" +calc.sub());

}void button_mult_actionPerformed(ActionEvent e) {this .textFieldDisplay .setText("" +calc.mult());

}void button_divisao _actionPerformed(ActionEvent e) {this .textFieldDisplay .setText("" +calc.div());

}void button_igual_actionPerformed(ActionEvent e) {this .textFieldDisplay .setText("" +calc.igual());

}void button_1_actionPerformed(ActionEvent e) {this .textFieldDisplay .setText("" +calc.um());

}void button_2_actionPerformed(ActionEvent e) {this .textFieldDisplay .setText("" +calc.dois());

}void buttonC_actionPerformed(ActionEvent e) {this .textFieldDisplay .setText("" +calc.reset());

}public static void main(String[] args) {CalcVisual CalcVisual1 =new CalcVisual();

}}

Page 4: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Software ou Sistema?

Device Drivers

Hardware

Windows

Win32

Page 5: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Sistema• um conjunto de elementos inter-relacionados que interagem no desempenho de

uma função• Sistema econômico

– mantém os recursos da economia em circulação

• Sistema Computacional – atende a uma determinada necessidade de processamento de informações de

usuários

• Sistema Solar – Manter os planetas girando em torno do sol

• Sistema de injeção eletrônica – regular a mistura ótima de combustível e ar para o funcionamento do motor

• Sistema digestivo – incorporar, ao corpo de um animal, a energia e matéria contidas em alimentos

• Biosfera – manter a vida sobre a terra

Page 6: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Um Sistema De Computador é uma Máquina

• O Usuário Conversa com a Máquina

Sistema de Computador(Estendido

Pelo Software)

Entrada(input)

Usuário

Saída(output)

Page 7: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Um Sistema para Desenhar ouMáquina de Desenhar

Page 8: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Um Sistema ou Máquina para Tratar Imagens

Page 9: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Um Sistema ou Máquina,que Simula um Celular,

que simula um jogo de damas

Page 10: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Várias Máquinas Coexistem em um Sistema de Computador em um Mesmo

Instante de Tempo

Page 11: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Um Sistema de Computador Programável é uma Fábrica de

Máquinas Extensível

E cada software descreve como fábricar uma máquina

E o programador constrói estas descrições de máquinas conforme

especificações do que a máquina deve fazer quando em funcionamento

Page 12: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

O uso da Máquina é feito por uma Conversa, que é Baseada

uma Linguagem

Linguagem A(Conversar com Celular)

Linguagem B(Conversar com Paint)

Linguagem C(Conversar com Calculadora)

Page 13: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

A Linguagem da “Máquina” Paint

Page 14: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

A Linguagem da “Máquina” Calculatora

Page 15: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Vamos conversar com Algumas Máquinas?

• Converse com o Paint• Converse com o GIMP• Converse com o Powerpoint!• Converse com o sistema operacional

Page 16: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

No que consiste o conversar?

• Num diálogo com a máquina• Na locução de frases que são construídas

numa linguagem com sintaxe e semântica próprias

Page 17: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Quando uma máquina faz sucesso?

• Quando a conversa entre usuário e máquina é produtiva

• Quando do diálogo são produzidos resultados que satisfazem as necessidades do usuário

Page 18: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Máquinas Complexas e Hierarquizadas

Page 19: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Máquinan

Interpretação do Software

Software Carga

Máquina n+1

Uso

Usuário

Page 20: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Máquina0

MPU

Software em Execução

Software Carga

Máquina1 (MCSW)

Uso

InterpretaçãoSoftware Carga

Software em Execução

Máquina2 (MCSW)

Interpretação

Uso...

...

Software Carga

Software em Execução

Máquinan (MCSW)

Interpretação

Uso

Um Sistema Computacional Usual

Page 21: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

u

Usuários e máquinas

Uso

Usuário Final

Máquina intermediadora

Uso

UsuárioUso

Software 2 Carga

Máquina0

Hardware

Software1 em Execução

Máquina 1

Interpretação Uso

Software0 em Execução

Interpretação

Máquina 2

Uso

....

Software n Carga

Softwaren em Execução

Software 1 Carga

Software 0 Carga

........

Máquina n+1

Máquina nInterpretação

Uso

Page 22: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Hierarquia de Máquinas e Linguagens

Máquina Computável M0(Reconhecedor de ED0)

3 – Entrada de Dados 0 – ED0(ED0 é uma cópia do programa P0)

Processo P1(Resulta da Execução de ED0, Reconhece ED1 escrita em L1)

4 - Interpretação de ED0

5- Entrada de Dados 1 – ED1(sentença escrita em linguagem L1, criada pelo programador.)

6 - Interpretação de ED1

Saída de Dados (Processo P2?)(Possível execução de ED1,

Reconhece ED2 escrita em L2?)

Programa P0,

Armazenado

1 - Programa P0, sentença escrita em uma linguagem computável L0

Programador

2 – Solicita Carga do Programa P0

Usuário 1

7 - Entrada de Dados 2 – ED2?(sentença escrita em linguagemL2, criada pelo Usuário 1?)

Usuário 2?

6 - Interpretação De ED2?

Page 23: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Checkpoint

Page 24: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Definições

• Software• Sistema• Ambiente• Configuração• Linguagem• Diálogo• Frases• Hierarquia

Page 25: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

usuário

cliente

desenvolvedor

Problemas e Necessidades

DescriçãoConstrutiva de

máquinaMáquina possuída

Linguagemmáquina desejada

RestriçõesDe tempo ecusto

Satisfação final

Evolução Histórica do Software

Tempo 0

usuário

cliente

desenvolvedor

Problemas e Necessidades

DescriçãoConstrutiva de

máquinaMáquina possuída

Linguagemmáquina desejada

RestriçõesDe tempo ecusto

Satisfação final

Tempo 1Novos problemas e necessidades

A linguagem da máquina desejada é expandidaNovas descrições são construídas, sobre as antigas

Page 26: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Grandes Limitações do Teste de Software

1 – Você não pode testar o software em todos os sistemas nos quais ele será carregadoSolução: testar em (configurações) de sistemas padronizadas

2 – Você não pode dialogar com a máquina até a exaustão, porque a linguagem é finita, mas os diálogos são infinitosSolução: técnicas de cobertura de testes

Page 27: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Teste de software

• Análise da satisfação dos requisitos do sistema, definidos por cliente e usuário, feitas por uma máquina constrúida sob coordenação de um software– Se qualquer parte da máquina muda a análise deve ser repetida

• Software• Hardware• SGBD• Rede• Pessoal

– Se os requisitos mudam, a máquina mudará para atendê-los, e deve ser testada novamente

Page 28: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Teste de Software é 30% da indústria!

Page 29: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Sumário de Teste de software

• Técnica sistemática para construção de diálogos com uma máquina, e observação dos resultados do diálogo, buscando assegurar que os comportamentos da máquinas serão conformes ao esperado (pelo usuário)

• Se o sistema no qual o software será interpretado é controlado e previsível, então espera-se que o software executado em sistemas similares também se comportará previsívelmente

Page 30: Teste de Software: Existe Isto? - Departamento de Ciência ...jhcf/MyBooks/iess/Teste/Teste... · // adiciona ao painel geral de todas as teclas // os doispaineis de teclas menores

Teste de Software: Existe Isto? Por Jorge H C Fernandes © 2004

Teste de Software: Existe Isto?

Jorge FernandesJunho de 2004