• Nenhum resultado encontrado

ludmillacomment

N/A
N/A
Protected

Academic year: 2021

Share "ludmillacomment"

Copied!
10
0
0

Texto

(1)

INSTITUTO TECNOLÓGICO DE AERONÁUTICA

EEC - ENGENHARIA ELETRÔNICA E COMPUTAÇÃO

PROGRAMA DE PÓS-GRADUAÇÃO

LISTEX 01

Lista de exercícios proposta na aula 04 – Teste de caixa preta e teste de classe de equivalência.

Disciplina: Teste de software (CE-229). Prof. Dr. Luiz Alberto Vieira Dias.

LUDMILLA REIS PINHEIRO DOS SANTOS

(2)

LISTEX 01

1. Objetivo

O objetivo deste trabalho é implementar um programa que apresente de forma gráfica a soma de várias funções senoidais, no período de 0 a 2π, com o objetivo de gerar uma onda quadrada. Posteriormente, a técnica de teste de caixa preta apresentando as possíveis falhas do programa e algumas situações das quais ele pode não funcionar corretamente.

2. Metodologia

A metodologia utilizada foi a implementação do programa usando a linguagem C++, através do ambiente de programação Dev-C++, versão 4.9.9.2 da BloodshedSoftware (http://www.bloodshed.net/), que utiliza como compilador o GCC (GNU Compiler Collection). Posteriormente, foi aplicada a técnica de teste de caixa preta.

3. Princípios básicos

3.1. Função seno (ou função senoidal)

Segundo o matemático francês, Joseph Fourier (1768-1830), uma onda complexa pode ser reduzida em uma soma de ondas senoidais, onde estas ondas, denominadas de ondas harmônicas, são múltiplos inteiros da frequência fundamental. Neste caso, a soma das funções senoidais deve resultar em uma onda quadrada.

As funções senoidais apresentam dentre outras características serem periódicas, com período igual a 2π e serem uma função ímpar , isto é, para qualquer valor de x é válido a igualdade: frequência(−x)=−frequência(x).

3.2. Teste de caixa preta

Este tipo de teste, também chamado de teste funcional, enfatiza entradas, saídas e princípios funcionais de um módulo de software. O ponto de partida do teste é uma especificação ou código. No caso de código, os dados de teste estimulam o software a verificar se são fornecidas as funções desejadas. O conteúdo da caixa é oculto e o software estimulado deve produzir respostas específicas.

(3)

Os testes funcionais são utilizados para exercitar o código com entradas nominais (valores de entrada) para as quais os valores esperados estão disponíveis. As condições limite para essas entradas são conhecidas.

O teste de caixa preta procura descobrir erros nas seguintes categorias: (a) funções incorretas ou ausentes, (b) erros de interface, (c) erros nas estruturas de dados ou no acesso a bancos de dados externos, (d) erros de desempenho, e (e) erros de inicialização e término.

4. Implementação

O programa é composto pelas seguintes partes principais:

Inicialização do modo gráfico: detecção automática do driver do dispositivo gráfico e indicação da resolução e da profundidade de cores que serão utilizados no modo gráfico;

Verificação de erros na inicialização do modo gráfico: caso isso ocorra uma mensagem é apresentada ao usuário, informando o código do erro;

Solicitação do valor da frequência: o usuário deve inserir o valor da frequência (dado de entrada);

Configuração da tela: desenho dos eixos (coordenadas), impressão das legendas e nome do gráfico;

Desenho das ondas: as ondas são multiplicadas por um número ímpar (variável fator), inicialmente tem-se a onda na frequência fundamental e as demais são denominadas de harmônicas. Todas as ondas foram multiplicadas por um fator igual a 50, para melhor visualização no gráfico;

Desenho da onda resultante: as ondas na frequência fundamental e suas harmônicas são somadas, gerando (de forma aproximada) uma onda quadrada. Além da multiplicação pelo fator igual a 50, como na impressão das ondas individuais, a onda resultante foi multiplicada por um fator igual a 3, para melhor visualização no gráfico;

Finalização do modo gráfico;

Tratamento de exceções: caso aconteça alguma anormalidade durante a execução do programa, uma mensagem é enviada ao usuário informando que ocorreu um erro e o programa é finalizado.

(4)

#include <graphics.h> #include <stdlib.h> #include <conio.h> #include <math.h> #include <iostream.h> int main(void) {

//Inicio do tratamento de exceções try

{

// Inicialização das variáveis float y0, y, 4I, f;

int x0, x, fator, erro, i; char freq[6];

// Inicialização do modo 4I4iáve

int gdriver = DETECT, gmode; // DETECT = autodetecta o driver do seu dispositivo // (placa) gráfico

// gmode = indica a resolução e a profundidade de // cores que serão usados no modo gráfico

initgraph(&gdriver, &gmode, “..\BGI”);

// Verificação de erros na inicialização do modo gráfico erro = graphresult();

if (erro != grOk) {

cout<<”\n Erro na interface gráfica: “<<grapherrormsg(erro); cout<<”\n Pressione qualquer tecla para sair.”;

system(“pause”);

exit(1); // Finaliza com um código de erro }

cout<<”\n Frequência: “; cin>>f;

cout<<”\n Frequência = “<<f;

// Configuração da cor branca, utilizada no desenho dos eixos x,y setcolor(15);

// Desenha os eixos (coordenadas). Cor: branca

line(30,0,30,480); // Desenha uma linha que vai das coordenadas da tela // (x,y)=(30,0) até (x,y)=(30,480)

line(30,240,630,240); // Labels dos eixos

outtextxy(15, 0, “Y”); // Escolhe onde o texto será impresso (x, y, texto) outtextxy(615, 245, “X”);

outtextxy(200, 0, “Funçao Seno – Freq. = “);

snprintf(freq,6, “%.3f”,f); // Converte a 4I4iável (f) do tipo float, %f, para a // 4I4iável string (freq) que possui

// vetor de caracteres com o tamanho 6 posiçoes

// (ultimo caracter \0, indicando o final do vetor). Outtextxy(355, 0, freq);

// Marcação do gráfico para posterior impressão da legenda do gráfico for(i = 30; i <= 530; i = i + 125)

{

line(i,235,i,245); }

(5)

// Impressão da legenda do gráfico outtextxy(145,250, “pi/2”);

outtextxy(270,250, “pi”); outtextxy(385,250, “(3*pi)/2”); outtextxy(530,250, “2*5I”);

// Impressão das ondas x0=0; y0=0; 5I=3.141592; for(fator=1;fator<=21;fator=fator+2) { setcolor(fator); for(x=0;x<=500;x++) { y=(sin(2*5I*f*x*fator)/fator)*50; line(x0+30,240-y0,x+30,240-y); x0=x; y0=y; } }

// Impressão da onda resultante (quadrada) setcolor(YELLOW); x0=0; y0=0; pi=3.141592; for(x=0;x<=500;x++) {

y=((sin(2*pi*f*x)*50) + ((sin(2*pi*f*x*3)/3)*50) + ((sin(2*pi*f*x*5)/5)*50) + ((sin(2*pi*f*x*7)/7)*50) + ((sin(2*pi*f*x*9)/9)*50) + ((sin(2*pi*f*x*11)/11)*50) + ((sin(2*pi*f*x*13)/13)*50) + ((sin(2*pi*f*x*15)/15)*50) + ((sin(2*pi*f*x*17)/17)*50) + ((sin(2*pi*f*x*19)/19)*50) + ((sin(2*pi*f*x*21)/21)*50))*3; line(x0+30,240-y0,x+30,240-y); x0=x; y0=y; }

// Espera até que um caractere seja digitado system(“pause”);

// Termina o modo gráfico closegraph();

} // Tratamento de exceções catch(char * str)

{

cout<<”\n ERRO DURANTE A EXECUÇÃO! \n”; system(“pause”);

exit(1); }

// Fim do tratamento de exceções }

(6)

5. Resultados obtidos 5.1. Testes realizados

A figura 1, 2 e 3 apresenta os resultados obtidos ao executar o programa, inserindo como valores de frequência: 0.002 Hz, 0.004 Hz e 0.008 Hz, respectivamente. Em todos os casos foram geradas 11 ondas senoidais distintas, que posteriormente foram somadas obtendo a onda quadrada, apresentada na cor amarela. A onda fundamental é representada nos gráficos pela cor azul, e as demais são as ondas harmônicas.

Figura 1. Função seno, com frequência de 0.002 Hz.

(7)

Figura 3. Função seno, com frequência de 0.008 Hz.

5.2. Aplicação da técnica de caixa preta

Ao aplicar a técnica os seguintes “pontos” fracos foram detectados: Interface com o usuário pouco amigável;

Não é possível inserir a quantidade de ondas que se deseja somar para obter a onda quadrada;

Não é apresentado ao usuário a quantidade de ondas utilizadas para a geração da onda quadrada.

Em algumas situações o programa não funciona corretamente, tais como:

Ao inserir um caractere simbólico (letras e/ou símbolos) no campo da frequência, o programa converte este em um valor numérico e imprime o gráfico da função seno correspondente a este valor, ao invés de apresentar uma mensagem de erro e/ou solicitar ao usuário a digitação de um valor válido. A figura 4 apresenta este tipo de situação.

(8)

Figura 4. Entrada de dados (frequência) com valores simbólicos.

Similar à situação anterior, a figura 5 apresenta o caso em que o usuário insere um valor negativo no campo da frequência. O programa desconsidera o sinal negativo e apresenta o gráfico, mas o usuário não é avisado deste procedimento. A figura 6 apresenta o gráfico com o mesmo valor de frequência utilizada no gráfico da figura 5 com o sinal positivo, onde é possível observar que ambos são idênticos.

(9)

Figura 5. Entrada de dados (frequência) com valor negativo.

(10)

6. Referências

Peters, J. F., Pedrycz, W.. Engenharia de Software Teoria e Prática. Ed. Campus. 2001. Pressman, R. S. Engenharia de Software. Ed. Makron Books. 1995.

Menasché, D. S., Silveira Filho, F. J.. Gráficos em C. Acesso em: 14/03/2010. Disponível em:

<http://equipe.nce.ufrj.br/adriano/c/apostila/graficos/paginas/graficos.htm> Teixeira, A. C. S., Stoppa, M. H.. Transformada de Fourier aplicada à análise

espectral de notas e acordes musicais. Acesso em: 14/03/2010. Disponível em: <http://www.catalao.ufg.br/mat/revista/vol1.htm>

Netto, L.. Transformada de Fourier. Acesso em: 14/03/2010. Disponível em: <http://caraipora.tripod.com/fourier.htm>

Referências

Documentos relacionados

Esse contexto contribuiu para a queda da frequência de compra do nosso canal e retração de 21,9% dos volumes (unidades de produtos para revenda), interrompendo a retomada

aniquilamento e assoreamento da calha do Rio Paraitinga e as várias cheias sucessivas do referido rio indicavam que a enchente que assolou a cidade na passagem do Ano Novo de

Nesse cenário, este artigo volta-se à exploração das múltiplas possibilidades de leitura e escritura oferecidas pelas narrativas digitais, buscando apresentar os desdo- bramentos

Se três asteriscos ( *** ) aparecerem ao lado do nível do teste do aluno como, por exemplo, Compreensão/Expressão Oral: D2***, isso indica que o teste não foi adequado para o

A Presente Ata de Registro de Preços terá validade de 12 (doze) meses, contados a partir da data da assinatura, podendo ser prorrogado, de acordo com a previsão legal. Nos termos

Comentário: Nenhuma lei pode criar uma modalidade inovadora de controle externo que não esteja prevista constitucionalmente (IMPORTANTE: questão cobrada no concurso de oficial

mencionados no Curriculum Vitae conter documento classificado ou que revele segredo comercial ou industrial, ou segredo relativo à propriedade literária, artística ou

95 Considerando-se os dados fornecidos na tabela e que o fator de retenção para o lindano seja igual a 0,50, é correto afirmar que o fator de retenção para o composto aldrin é igual