Spelling suggestions: "subject:"stestes dde programas"" "subject:"stestes dee programas""
1 |
METEORA: um método de testes baseado em estados para software de aplicação orientado a aspectos.Fábio Fagundes Silveira 04 May 2007 (has links)
A atividade de teste de software é realizada visando assegurar a maior qualidade possível nos produtos de software. Quando novos paradigmas de Engenharia de Software surgem, faz-se necessário realizar investigações para verificar a reusabilidade dos métodos, técnicas, estratégias e ferramentas de teste no novo paradigma. Como um dos mais novos paradigmas de Engenharia de Software, a Orientação a Aspectos (OA) evidencia ainda mais que novos estudos e experimentos devem ser cuidadosamente conduzidos para se determinar quais são as melhores técnicas de teste aplicáveis à esta nova forma de desenvolvimento. A inserção de aspectos em programas orientados a objetos pode modificar não apenas a estrutura do programa, como também a interação entre seus componentes. As funcionalidades principais do programa podem ser combinadas com as funcionalidades auxiliares providas pelos aspectos, onde estas, por sua vez, podem ainda ser combinadas entre si. Assim, o foco principal deste trabalho recai no conceito de composição de aspectos e suas conseqüentes interações, características essas causadoras do surgimento de diferentes tipos de defeitos em programas orientados a aspectos. Dessa forma, a principal contribuição desta pesquisa consiste na concepção e no desenvolvimento de um método para teste de estados em software orientado a aspectos, denominado METEORA, que propicia o teste de interações classe-aspecto e aspecto-aspecto. Para tornar possível sua aplicação, um modelo de representação dinâmica de comportamento, uma estratégia de derivação de seqüências de teste e um protótipo de ferramenta de apoio a essa atividade foram também desenvolvidos. Além de uma fundamentação teórica e de um levantamento sobre os principais trabalhos relacionados existentes, esta pesquisa apresenta a aplicação do METEORA em três experimentos em dois Estudos de Caso distintos, buscando mostrar a sua exeqüibilidade, acompanhada por análises e discussões dos principais resultados obtidos.
|
2 |
MIDAI: um método para identificação e definição de aspectos iniciais.Antônio Maria Pereira de Resende 22 June 2007 (has links)
A Orientação a Aspectos - OA constitui um dos mais recentes paradigmas, capaz de reduzir ainda mais a complexidade do desenvolvimento de software, e trouxe novos desafios para a comunidade científica e tecnológica de Engenharia de Software. Um desses desafios chamado Aspectos Iniciais - AI baseia-se na falta de uma sistemática apropriada para auxiliar profissionais na realização das atividades de identificação e definição de Aspectos, o mais cedo possível, nos processos de desenvolvimento de software. A principal contribuição deste trabalho de pesquisa consiste na elaboração de um Método para Identificação e Definição de Aspectos Iniciais denominado - MIDAI, visando o aumento da eficiência e a eficácia e a redução dos riscos e recursos envolvidos na aplicação do paradigma da OA. Além de uma pesquisa bibliográfica, de um levantamento dos principais trabalhos existentes sobre Aspectos Iniciais - AI e do desenvolvimento do "MIDAI", este trabalho apresenta também um estudo de caso, em termos de experimento científico, para a verificação da eficiência e eficácia da aplicação prática do novo método, juntamente com uma análise e discussão dos principais resultados obtidos.
|
3 |
Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. / An approach to testing implementations of structural and behavioral refactorings of C programsMENDES, Gustavo Wagner Diniz. 31 August 2018 (has links)
Submitted by Johnny Rodrigues (johnnyrodrigues@ufcg.edu.br) on 2018-08-31T23:09:48Z
No. of bitstreams: 1
GUSTAVO WAGNER DINIZ MENDES - DISSERTAÇÃO PPGCC 2014..pdf: 7175302 bytes, checksum: c99a663c85f93c308e26cc6d963f5d2e (MD5) / Made available in DSpace on 2018-08-31T23:09:48Z (GMT). No. of bitstreams: 1
GUSTAVO WAGNER DINIZ MENDES - DISSERTAÇÃO PPGCC 2014..pdf: 7175302 bytes, checksum: c99a663c85f93c308e26cc6d963f5d2e (MD5)
Previous issue date: 2014-03-13 / Refatorar um programa é o ato de mudar sua estrutura visando melhorar algum aspecto
arquitetural, sem que se mude seu comportamento observável. Desenvolvedores utilizam
ferramentas como Eclipse e NetBeans para auxiliá-los no refatoramento de seus programas. Essas ferramentas implementam um conjunto de condições para garantir que as transformações realizadas não mudem o comportamento observável do programa. Porém, não é trivial identificar todas as condições necessárias para que um refatoramento seja correto devido à complexidade da semântica das linguagens e por não haver uma definição formal das linguagens e consequentemente dos refatoramentos. Os desenvolvedores de ferramentas de refatoramento costumam, por não haver uma definição formal, implementar os refatoramentos de acordo com seus conhecimentos da linguagem de programação. Na prática, desenvolvedores utilizam coleções de testes para avaliar a corretude de suas implementações. Entretanto, não existem evidências que os desenvolvedores utilizem um processo sistemático na definição dessas coleções. Neste trabalho, propomos uma técnica para testar implementações de refatoramentos de programas C. Ela consiste em cinco fases. Primeiramente, geramos automaticamente
diversos programas C para serem refatorados a partir do CDOLLY, que foi
proposto baseado em uma especificação em Alloy. Depois, geramos automaticamente uma coleção de testes de unidade dos programas via o CATESTER. Em seguida, aplicamos o refatoramento através do CREXECUTOR nos programas gerados utilizando a ferramenta a ser testada. Após isso, executamos a coleção de testes nos programas refatorados e, por fim, classificamos os erros de compilação e mudanças comportamentais identificados em bugs. Avaliamos a nossa técnica na implementação de oito refatoramentos do Eclipse CDT. Estes refatoramentos não só modificam a estrutura do programa, como também o corpo das funções, como o refatoramento Extract Function. Detectamos 41 bugs, que introduzem erros de compilação no programa resultante, e seis bugs relacionados a mudanças comportamentais. Replicamos manualmente os bugs encontrados em implementações de refatoramentos do NetBeans CND, Xrefactory e OpenRefactory e detectamos 29 bugs nessas ferramentas. / Refactoring a program is the act of changing its structure in order to improve any architectural aspect, without changing its observable behavior. Developers use tools like Eclipse and NetBeans to help refactoring their programs. These tools implement a set of conditions to ensure that the transformations performed do not change the observable behavior of the program. However, it is not easy to identify ali the necessary conditions for a refactoring to be correct due to the semantic complexity of the languages, mainly because the languages are not formally proved and neither the refactorings. In practice, developers often use collections of tests to assess the correctness of their implementations. However, there is no evidence of having systematic process in the definition of this collection. In this work, we propose a technique to test refactoring implementations of C programs. It consists of five phases. First, we generate automatically several C programs to be refactored from CDOLLY, which has been proposed based on a specification in Alloy. Then, we generate automatically a collection of unit tests of the programs via CATESTER. We then apply the refactoring through CREXECUTOR on the generated programs using the tool to be tested. After this, we execute the test collection in the refactored programs and finally we classify the compilation errors and behavioral changes in bugs. We evaluated our technique in the implementation of eight refactorings of Eclipse CDT. These refactorings not only modify the program structure, but also the body functions, such as the refactoring Extract Function. We detected 41 bugs, which introduce compilation errors in the resulting program, and six bugs related to behavioral changes. We analyzed manually these bugs in refactoring implementations of NetBeans, Xrefactory and OpenRefactory and identified 29 bugs in these tools.
|
4 |
[en] EVENTMANAGER: A TOOL FOR ANALYSING CONCURRENT PROGRAMS / [pt] EVENTMANAGER: UMA FERRAMENTA DE ANÁLISE DE PROGRAMAS CONCORRENTESANNA LETICIA ALEGRIA P DE OLIVEIRA 10 October 2022 (has links)
[pt] Alunos aprendendo programação concorrente muitas vezes têm dificuldades de testar seus programas por conta do não-determinismo presente no
escalonamento de threads. Em geral, é difícil testar cenários específicos e mais
difícil ainda repetir um determinado cenário para testar mudanças do código.
Nesta tese, apresentamos a EventManager: uma ferramenta que criamos para
permitir que um usuário instrumente seu programa, marcando eventos no código e especificando sequências de eventos através de uma linguagem de domínio específico (DSL). Esta linguagem restringe o escalonamento das threads
para que obedeça as sequências permitidas para estes eventos. Descrevemos a
implementação da EventManager para aplicações baseadas em threads POSIX.
Investigamos a aplicação da ferramenta em soluções de problemas clássicos de
concorrência para averiguar a expressividade da linguagem que criamos. / [en] Students learning concurrent programming often struggle with tests due
to the non-deterministic nature of thread scheduling. It is in general hard to
test specific scenarios and harder yet to repeat a given scenario for further
tests after changes to the code. In this thesis, we present EventManager: a
tool we developed that allows the user to instrument their program, marking
events in the code and specifying valid event sequences using a domainspecific language. This language restricts thread scheduling to obey allowed
sequences for these events. We describe the implementation of EventManager
for applications based on POSIX threads. We investigate our tool applied on
solutions of classical concurrency problems to verify the expressiveness of the
created language.
|
Page generated in 0.0832 seconds