5 resultados para Teste de Software
em Lume - Repositório Digital da Universidade Federal do Rio Grande do Sul
Resumo:
A literatura sobre Teste de Software apresenta diversas estratégias e metodologias que definem critérios eficazes e automatizáveis para selecionar casos de teste capazes de detectar erros em softwares. Embora eficientes na descoberta de erros, as técnicas de seleção de casos de teste exigem que uma quantidade relativamente grande de testes seja realizada para satisfazer os seus critérios. Essa característica acarreta, em parte, um alto custo na atividade de teste, uma vez que, ao fim de cada teste deve-se verificar se o comportamento do software está ou não de acordo com os seus requisitos. Oráculo para teste de software é um mecanismo capaz de determinar se o resultado de um teste está ou não de acordo com os valores esperados. Freqüentemente, assume-se que o próprio projetista de teste é o responsável por esta tarefa. A automatização da atividade dos oráculos deu origem a oráculos automáticos, os quais são capazes de determinar o bom ou mau funcionamento do software a partir de uma fonte de informação confiável. Ao longo dos anos, a especificação formal vêm sendo largamente utilizada como fonte de informação para oráculos automáticos. Diversas estratégias vêm propondo geradores de oráculos baseados em especificações formais. Dentre as características marcantes dessas estratégias, cita-se aquelas que são aplicáveis a implementações derivadas a partir da estrutura da especificação e aquelas que geram oráculos a partir de técnicas específicas de seleção de casos. Essas características, entretanto, limitam a aplicação abrangente dos oráculos por restringi-los tanto a implementações derivadas diretamente de especificações como ao uso de técnicas específicas de seleção de casos de teste. Este trabalho apresenta um estudo sobre os geradores de oráculos para teste de software, identifica aspectos fundamentais que regem seu processo de construção e propõe uma estratégia que permite a geração de oráculos semi-automaticamente, mesmo para implementações não derivadas diretamente da estrutura da especificação. A estratégia proposta é, também, aplicável aos casos de teste derivados de qualquer técnica de seleção de casos de teste.
Resumo:
As maiores dificuldades encontradas no teste de software estão relacionadas à definição dos dados de teste e a decisão de quando encerrar os testes. Uma das formas encontradas para minimizar tais dificuldades está centrada na utilização de critérios de cobertura. O principal objetivo dos critérios de cobertura é tornar o processo de testes mais rápido e preciso, fornecendo informações que determinem o que testar em um software para garantir sua qualidade. A modelagem é um dos elementos de maior importância nas atividades relacionadas ao desenvolvimento de software. Os modelos são construídos principalmente para melhor se entender o sistema, descrever a estrutura e comportamento desejados, visualizar a arquitetura e documentar as decisões tomadas durante o seu desenvolvimento. Atualmente, o sistema de notação mais utilizado para a modelagem de sistemas baseados nos conceitos de orientação a objetos é a Linguagem de Modelagem Unificada – UML [LAR 99]. Nesta notação, um sistema é descrito por um conjunto de diagramas que apresentam diferentes aspectos do sistema. As informações disponibilizadas por estes diagramas propiciam, já nas fases iniciais do desenvolvimento da aplicação (análise e projeto), o planejamento dos casos de teste e a definição de critérios de cobertura. Observa-se que nestas fases a maioria das informações necessárias para o teste já estão disponíveis, como por exemplo, a definição das classes com seus atributos, métodos e relacionamentos, a representação da interação existente entre objetos para a realização de um cenário e a descrição dos possíveis estados e transições de um objeto em resposta a eventos externos e internos. Este trabalho propõe um conjunto de diretrizes e critérios de cobertura de teste, tendo como base as especificações diagramáticas UML. As diretrizes estabelecem um conjunto de instruções para que o teste seja feito e os critérios de cobertura identificam os pontos principais e serem considerados durante o teste. Na definição das diretrizes e dos critérios foram avaliadas as informações disponibilizadas pelos diagramas de classes, seqüência, colaboração e estados.
Resumo:
A atividade de teste constitui uma fase de grande importância no processo de desenvolvimento de software, tendo como objetivo garantir um alto grau de confiabilidade nos produtos desenvolvidos. O paradigma da Orientação a Objetos (OO) surgiu com o objetivo de melhorar a qualidade bem como a produtividade no desenvolvimento de aplicações. Entretanto, apesar do aumento constante de aceitação do paradigma OO pela indústria de software, a presença de algumas de suas características torna a atividade de teste de programas neste paradigma mais complexa do que o teste de sistemas tradicionais. Entre estas características cita-se a herança, o encapsulamento, o polimorfismo e a ligação dinâmica [EIS 97] [PRE 95] [UNG 97]. Algumas técnicas estão sendo implementadas para auxiliarem a atividade de teste através do uso da tecnologia de reflexão computacional [HER 99]. Estas técnicas permitem a realização de análises de aspectos dinâmicos dos programas, sem a necessidade de instrumentar o código-fonte das aplicações que estão sendo monitoradas. Com o objetivo de auxiliar o processo de teste de programas orientados a objetos, este trabalho aborda o desenvolvimento de uma ferramenta, a qual automatiza parcialmente o teste de programas escritos em Java. A ferramenta evidencia o teste de estados fazendo uso da tecnologia de reflexão computacional. Através da especificação de asserções, feitas pelo usuário da ferramenta, na forma de invariantes de classe, pré e pós-condições de métodos, é possível verificar a integridade dos estados dos objetos durante a execução do programa em teste. A ferramenta possibilita também, armazenar a seqüência de métodos chamados pelos objetos da aplicação em teste, tornando possível ao testador, visualizar o histórico das interações entre os objetos criados no nível-base.
Resumo:
Atualmente, um dos grandes desafios para qualquer desenvolvedor de software é projetar um sistema que reutilize ao máximo elementos de código e de projeto existentes, visando diminuir o tempo e o esforço exigidos na produção do software. Entre as inúmeras formas de possibilitar reuso no contexto do desenvolvimento segundo o paradigma da orientação a objetos, destaca-se a abordagem de frameworks. A grande importância da documentação de software utilizada no processo de desenvolvimento aliada às características de frameworks serviram como motivação para este trabalho. A documentação dentro do processo de desenvolvimento de software não faz parte de uma fase definida, mas ocorre durante toda sua existência, em paralelo com outras fases do ciclo de vida. A abordagem de frameworks dentro deste contexto enfoca o tratamento de templates e definições das características dos artefatos de software (incluindo não somente código mas também produtos de análise, projeto, frameworks, componentes, diagramas, entre outros), facilitando e acelerando o processo de documentação. Um framework, devido a suas características peculiares que serão examinadas e explicitadas no trabalho, contém uma série de informações que podem, além de apoiar a documentação, ser úteis para produção de outros artefatos (por exemplo, planejamentos de teste, scripts de bancos de dados, padrões de codificação, entre outros) do processo de desenvolvimento. Assim, em um processo de desenvolvimento evolutivo, que utiliza a geração de artefatos como recurso, a manutenção pode ser integralmente realizada somente na especificação e não diluída nos artefatos gerados. O objetivo deste trabalho é investigar, propor e desenvolver uma ferramenta de documentação e geração de artefatos de software, denominado FrameworkDoc. O termo documentação de software aqui utilizado se refere a documentação de desenvolvimento de software, incluindo artefatos, arquiteturas, ferramentas entre outros. Serão abordados dois principais aspectos: primeiramente, a geração automática de documentação dentro do processo de desenvolvimento de software e depois a geração de outros artefatos deste processo, a partir das definições de alto nível disponíveis através do framework. Exemplos de aplicações do FrameworkDoc em projetos reais são apresentados. No entanto, os documentos e artefatos de software considerados foram definidos de forma suficientemente genérica para serem aproveitados em outros contextos.
Resumo:
Este estudo visa desenvolver um sistema portátil de radiocomunicação de radiação restrita, indicado para biotelemetria digital de curta distância aplicada ao Teste da Caminhada de Seis Minutos (TC6M) em pacientes com doença pulmonar obstrutiva crônica ou hipertensão pulmonar. A saturação periférica da hemoglobina (SpO2) e a freqüência cardíaca (FC) são monitoradas em tempo real. É utilizada a banda destinada a aplicações médicas, industriais e científicas (ISM), com freqüência de portadora em 916MHz e potência de transmissão de 0,75mW. Este sistema foi projetado para operar através de um enlace half duplex e codificação Manchester NRZ incorporando um protocolo para correção de erros do tipo automatic repeat request error com utilização de um código CRC-16 para detecção de erros. A velocidade máxima de transmissão de dados é de 115.2 kbps. O sistema é constituído de três partes: unidade portátil (Master), unidade estacionária (Slave) e software de visualização em tempo real. A unidade portátil recebe do oxímetro os parâmetros de monitorização que são transmitidos via enlace de rádio-freqüência. A interface da unidade estacionária com o software é feita através da porta de comunicação serial padrão RS-232. Os testes de laboratório e de campo demonstraram que o sistema de biotelemetria é adequado a realizar o TC6M com precisão de SpO2 de ±3 dígitos (com ±1 desvio padrão) e FC de ±3% ambos com taxa de Frame Error Rate < 10-4 (0,01%), sem restrigir os movimentos do usuário durante o processo de monitorização.