Teste de Software: Existe Isto? Jorge Fernandes Junho de 2004

Documentos relacionados
Natureza do Software e dos Sistemas

Encerrando Introdução a Objetos e Classes Redefinição de Métodos (1)

Criando interfaces com o usuário. Continuação

Programação Java. Construção de Interface gráfica. Processo Básico: OO + Eventos. Exemplo

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

Aula 2 Even e to t s d o M ouse

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

Prof. Msc. Vladimir Camelo

Java Deployment Course

MÓDULO 4 SWING Parte 3

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo

Aplicações de Linguagem de Programação Orientada a Objeto

Introdução à Programação de Computadores Parte I

Aula Prática Criando Views e Controles

Programação III. Interface Gráfica - Swing. Interface Gráfica Swing Jocélio Passos joceliodpassos@bol.com.br. Interface Gráfica - Swing

Prof. Responsáveis Wagner Santos C. de Jesus

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Responda às questões abaixo: 1 a Questão: Indique todos casos de não determinismo do AFN acima

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

LPII Programando uma Cálculadora Simples Módulo III

Model-View-Controller (MVC)

Gerenciadores de Layout

Layout. Programação Orientada a Objetos Java. Prof. Geraldo Braz Junior. Baseado em material original de João Carlos Pinheiro CEFET/MA

Programação Gráfica em Java Alguns Componentes javax.swing

Elaborando as Interfaces Aulas 43, 44 e 45

Vector Java. Empregado.java

Interfaces Gráficas (GUIs) em Java usando Swing Parte I - O básico

Arquitetura de Tratamento de Eventos em Programas com GUI - Graphical User Interface

Tratamento de Eventos em Programas com GUI - Graphical User Interface. Jorge H. C. Fernandes UFRN Junho de 2001

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação II. Cassio Diego

Especialização em Engenharia de Software - CEUT

Aplicações Gráficas com AWT

Gerenciamento de Layout

Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 2o. Semestre de 2017 Prof.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Tratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Font size Animation FACULDADE DE TECNOLOGIA SENAC PELOTAS

Programação Orientada a Objetos

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 19, 20 e 21

Tecnólogo em Análise e Desenvolvimento de Sistemas

Elaborando as Interfaces dos trabalhos das aulas 28, 29 e 30.

Exercício 1: Criar um programa que utiliza que desenha uma interface gráfica tal como descrito na Figura 1.1.

MANIPULAÇÃO DE EVENTOS

Laboratório de Programação. Aula 12 Java 5COP088. Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

1) Responda de acordo com os conceitos de orientação a objetos (0,5).

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Nona aula

Programação de Computadores II TCC /Turma A 1

Introdução à Programação Gráfica em Java

Programação Estruturada e Orientada a Objetos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

. Uma instância da classe JTextField gera uma instância da classe ActionEvent quando o objecto está activo e o utilizador pressiona a tecla ENTER.

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Um Modelo Semântico para a Linguagem Java Jorge Henrique Cabral Fernandes CIC-UnB Junho de Introdução

Notas de Aula 09: Tratamento de exceções

Aula 1 POO 1 Prática. Profa. Elaine Faria UFU

Agenda. JFC (Java FoundaNon Classes) Interfaces Gráficas: layout manager JFC. Componentes do Swing. Pluggable Look and Feel

Interfaces Gráficas POO. Prof. Márcio Delamaro

Tratamento de Exceções

Aula 3. Objetivos Sequências de escapes ; Um aplicativo que adiciona inteiro; Aritmética.

1) De acordo com o trecho de código escrito na linguagem JAVA, responda a questão abaixo:

Tratamento de Exceções. Grupo de Linguagens de Programação Departamento de Informática PUC-Rio

Elaborando as Interfaces dos trabalhos das aulas 25, 26 e 27.

Programação Java. Tratamento de Exceções

Tratamento de Exceções

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

Programação de Computadores II

Exceções. Criando suas exceções

Programação Orientada a Objetos SANTOS, Rafael (PLT)

Aula 2 Eventos do Mouse by Pearson Education do Brasil

Adding User Interaction

Tratamento de Exceções

Template de classe. class vetor { int *arranjo; int limite; public: vetor(int=100); int & operator[ ](int n); };

Processo Básico: OO + Eventos. Java First-Tier: Aplicações. Construção de Interface gráfica. Exemplo. Exemplo. Exemplo. Hierarquia de Composição

8. Interfaces Gráficas de Usuário

22/9/16. Agenda. Erros. Erros. Exceções. Mecanismo de exceções

Singleton. Como a maioria dos programadores organizaria o código para acessar informação de configuração? Eis um exemplo:

PROGRAMAÇÃO ORIENTADA A OBJETOS -INTERFACES GRÁFICAS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Introdução à Tecnologia Java 02/2012. Java Aula 02 15/08/2012. Celso Olivete Júnior.

Interface Gráfica. LPG II Java Interface Gráfica AWT. Introdução. AWT - Abstract Window Toolkit

private void btapresentanomeactionperformed(java.awt.event.actionevent evt) {

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Introdução. Por que desenvolver ALGORITMO?

Linguagens de Programação Classificação

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Linguagem de Programação Visual

9 Classes Abstractas e Interfaces

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Fundamentos de Programação 1

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Módulo 1. Introdução. Programação Orientada a Objetos I Java (Rone Ilídio)

Programação Orientada por Objectos 2007/2008

Transcrição:

Teste de Software: Existe Isto? Jorge Fernandes Junho de 2004

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 extends Frame { // Cria os painéis Panel panelteclas = new Panel(); Panel panelteclastopo = new Panel(); Panel panelteclasnumericas = new Panel(); // cria os gerenciadores de layout dos painéis BorderLayout BorderLayoutPrincipal = new BorderLayout(); BorderLayout BorderLayoutTodasAsTeclas = new BorderLayout(); GridLayout gridlayoutclearcebackspace = new GridLayout(); GridLayout gridlayoutteclasnumericaseoperacoes = new GridLayout(); // cria a área de display da calculadora TextField textfielddisplay = new TextField(); // cria os botões da calculadora Button 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álculos Calc calc = new Calc(); // construtor da parte visual da calculadora public CalcVisual() { try { buildgui(); catch (Exception e) { e.printstacktrace(); /** * Constroi os elementos da interface grafica da calculadora Software Teste de Software: Existe Isto? Por // os Jorge dois paineis H de C teclas Fernandes menores 2004 */ private void buildgui() throws Exception { button_9.setlabel("9"); button_soma.setlabel("+"); button_igual.setlabel("="); // adiciona alguns botões no painel de teclas superior gridlayoutclearcebackspace.setcolumns(3); panelteclastopo.setlayout(gridlayoutclearceb ); ackspace); // cria o tratador de evento para o botão "-" panelteclastopo.add(buttonbackspace, null); panelteclastopo.add(buttonce, null); button_subtracao.addactionlistener(new panelteclastopo.add(buttonc, null); java.awt.event.actionlistener() { public void actionperformed(actionevent e) { // adiciona alguns botões no painel de teclas inferior button_subtracao_actionperformed(e); gridlayoutteclasnumericaseoperacoes.setrows(4); gridlayoutteclasnumericaseoperacoes.setcolumns(5); ); gridlayoutteclasnumericaseoperacoes.sethgap(4); // cria o tratador de evento para o botão "*" gridlayoutteclasnumericaseoperacoes.setvgap(4); button_mult.addactionlistener(new java.awt.event.actionlistener() { panelteclasnumericas.setlayout (gridlayouttecla snumericaseoperacoes); 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); // 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); 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) // adiciona ao painel geral de todas as teclas this.addwindowlistener(new java.awt.event.windowadapter() { public void windowclosing(windowevent e) { // ajusta as propriedades dos gerenciadores de layout this_windowclosing(e); panelteclas.setlayout(borderlayouttodasasteclas);

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éis Panel panelteclas = new Panel(); Panel panelteclastopo = new Panel(); Panel panelteclasnumericas = new Panel(); // cria os gerenciadores de layout dos painéis BorderLayout BorderLayoutPrincipal= new BorderLayout(); BorderLayout BorderLayoutTodasAsTeclas= new BorderLayout(); GridLayout gridlayoutclearcebackspace = new GridLayout(); GridLayout gridlayoutteclasnumericaseoperacoes = new GridLayout(); // cria a área de display da calculadora TextField textfielddisplay = new TextField (); // cria os botões da calculadora Button 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(); Você Testa Software? // cria o "modelo de dados", isto é, o próprio objeto calculadora // que irá efetivamente realizar os cálculos Calc calc = new Calc(); // construtor da parte visual da calculadora public CalcVisual () { try { buildgui(); catch (Exception e) { e.printstacktrace(); /** * Constroi os elementos da interface grafica da calculadora */ private void buildgui() throws Exception { // ajusta as propriedades display textfielddisplay.settext ("0"); // modifica cores de alguns botões buttonbackspace.setforeground(color.red ); buttonc.setforeground (Color.red); buttonce.setforeground (Color.red); // atribui rótulos aos botões da calculadora buttonc.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 superior gridlayoutclearcebackspace.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 inferior gridlayoutteclasnumericaseoperacoes.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 layout panelteclas.setlayout(borderlayouttodasasteclas ); panelteclas.add(panelteclastopo, BorderLayout.NORTH); panelteclas.add(panelteclasnumericas, BorderLayout.CENTER); // ajusta propriedades gerais visuais da interface this.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 (WindowEvent e) { this_windowclosing(e); ); // mostra a interface grafica para o usuário show(); // métodos que implementam o tratamento de eventos void this_windowclosing(windowevent e) { 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();

Software ou Sistema? Win32 Windows Device Drivers Hardware

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

Um Sistema De Computador é uma Máquina O Usuário Conversa com a Máquina Sistema de Computador (Estendido Pelo Software) Saída (output) Entrada (input) Usuário

Um Sistema para Desenhar ou Máquina de Desenhar

Um Sistema ou Máquina para Tratar Imagens

Um Sistema ou Máquina, que Simula um Celular, que simula um jogo de damas

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

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

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)

A Linguagem da Máquina Paint

A Linguagem da Máquina Calculatora

Vamos conversar com Algumas Máquinas? Converse com o Paint Converse com o GIMP Converse com o Powerpoint! Converse com o sistema operacional

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

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

Máquinas Complexas e Hierarquizadas

Usuário Uso Máquina n+1 Interpretação do Software Software Carga Máquina n

Um Sistema Computacional Usual Máquina n ( MCSW) Software em Execução Interpretação... Máquina 2 ( MCSW) Software em Execução Uso Software Carga... Software Carga Interpretação Máquina 1 ( MCSW) Software em Execução Interpretação Uso Software Carga Máquina 0 MPU Uso

Usuários e máquinas Usuário Final Uso Máquina intermediadora Usuário Uso Uso Máquina n+1... Software n Carga Softwaren em Execução Interpretação Máquina n... Uso... Software 2 Software 1 Carga Carga Máquina 2 Software1 em Execução u Interpretação Máquina 1 Software0 em Execução Uso Software 0 Carga Interpretação Máquina 0 Hardware Uso

Hierarquia de Máquinas e Linguagens 6 - Interpretação De ED2? Usuário 2? 7 - Entrada de Dados 2 ED2? (sentença escrita em linguagem L2, criada pelo Usuário 1?) Usuário 1 5- Entrada de Dados 1 ED1 (sentença escrita em linguagem L1, criada pelo programador.) 2 Solicita Carga do Programa P0 Saída de Dados (Processo P2?) (Possível execução de ED1, Reconhece ED2 escrita em L2?) 6 - Interpretação de ED1 Processo P1 (Resulta da Execução de ED0, Reconhece ED1 escrita em L1) 4 - Interpretação de ED0 Programa P0, Armazenado 3 Entrada de Dados 0 ED0 (ED0 é uma cópia do programa P0) Máquina Computável M0 (Reconhecedor de ED0) 1 - Programa P0, sentença escrita em uma linguagem computável L0 Programador

Checkpoint

Definições Software Sistema Ambiente Configuração Linguagem Diálogo Frases Hierarquia

Evolução Histórica do Software Linguagem máquina desejada Restrições De tempo e custo cliente Descrição Construtiva de máquina Problemas e Necessidades Máquina possuída Linguagem máquina desejada Restrições De tempo e custo cliente Descrição Construtiva de máquina Problemas e Necessidades Máquina possuída desenvolvedor Satisfação final usuário desenvolvedor Satisfação final usuário Tempo 0 Tempo 1 Novos problemas e necessidades A linguagem da máquina desejada é expandida Novas descrições são construídas, sobre as antigas

Grandes Limitações do Teste de Software 1 Você não pode testar o software em todos os sistemas nos quais ele será carregado Soluçã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 infinitos Solução: técnicas de cobertura de testes

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

Teste de Software é 30% da indústria!

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

Teste de Software: Existe Isto? Jorge Fernandes Junho de 2004