• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 25
  • 1
  • Tagged with
  • 26
  • 26
  • 26
  • 26
  • 14
  • 13
  • 11
  • 10
  • 10
  • 10
  • 10
  • 10
  • 8
  • 8
  • 8
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
11

Teste estrutural de integração contextual de programas orientados a objetos e a aspectos / Contextual integration structural testing of object-oriented and aspect-oriented programs

Cafeo, Bruno Barbieri de Pontes 15 July 2011 (has links)
Paradigmas e técnicas de desenvolvimento como a programação Orientada a Objetos (OO) e a programação Orientada a Aspectos (OA) procuram melhorar os níveis de reuso e manutenibilidade na produção de software. Contudo, com a introdução de mecanismos com maior poder de expressividade e, consequentemente, a possível introdução de novos tipos de defeitos, a utilização de linguagens OO e OA pode se tornar um obstáculo ao invés de um auxílio ao desenvolvimento de software. Para lidar com esse problema, nesta dissertação é proposta uma abordagem de teste estrutural de integração para programas orientados a objetos e a aspectos implementados em Java e AspectJ. É definido um modelo de fluxo de controle e de dados baseado no bytecode Java { chamado Grafo Def-Uso Contextual (ou Contextual Def-Use graph) - que é uma abstração formada pela integração dos grafos Def-Uso Orientados a Aspectos (AODU) da unidade sob teste com todas as unidades que interagem direta ou indiretamente com ela até um nível de profundidade de interação máximo ou definido pelo testador. São defiidos três critérios de teste: todos-nós-integrados-Nd, todas-arestas-integradas-Nd e todos-usos-integrados-Nd. Para automatizar o uso do modelo e critérios propostos, a ferramenta JaBUTi/AJ foi estendida. Exemplos de usos são discutidos e, por meio de um estudo experimental, uma análise de aplicabilidade da abordagem proposta é apresentada / Development paradigms and techniques such as Object-Oriented (OO) programming and Aspect-Oriented (AO) programming aim at improving reuse levels and maintenability in the software production. However, due to the introduction of mechanisms to support a greater power of expressiveness and, consequently, possible introduction of new type of faults, the use of OO and AO languages might become an obstacle instead of a benefit in the software development. To deal with these problems, in this dissertation is presented an integration structural testing approach for objectand aspect-oriented software based on Java and AspectJ. It is defined a control- and data- ow model based on Java bytecode { called Contextual Def-Use graph { that is an abstraction composed by the integration of Aspect-Oriented Def-Use graphs (AODU) of the unit under testing with the units triggered by the execution of the unit under testing considering either a maximum interaction depth level or an interaction depth level previously defined by the tester. Three testing criteria are also defined: all-integrated-nodes-Nd, all-integrated-edges-Nd and all-integrated-uses-Nd. To automate the use of the model and the testing criteria, the JaBUTi/AJ tool was extended. Usage examples are discussed to explain the approach and an exploratory study is conducted to evaluate the applicability of the proposed approach
12

Otimizando o teste estrutural de programas concorrentes: uma abordagem determinística e paralela / Improving the structural testing of concurrent programs: a deterministic and parallel approach

Batista, Raphael Negrisoli 27 March 2015 (has links)
O teste de programas concorrentes é uma atividade custosa devido principalmente à quantidade de sequências de sincronização que devem ser testadas para validar tais programas. Uma das técnicas mais utilizadas para testar a comunicação e sincronização de programas concorrentes é a geração automática de diferentes pares de sincronização ou, em outras palavras, a geração de variantes de disputa (race variant). Nesta técnica as variantes de disputa são geradas a partir de arquivos de rastro de uma execução não-determinística e algoritmos de execução determinística são utilizados para forçar que diferentes sincronizações sejam cobertas. Este trabalho aborda de maneira abrangente este problema, cujo objetivo principal é reduzir o tempo de resposta da atividade de teste estrutural de programas concorrentes quando diferentes variantes de disputa são executadas. Há três principais contribuições neste trabalho: (1) geração de arquivos de rastro e execução determinística total/parcial, (2) geração automática de variantes e (3) paralelização da execução das variantes. Diferentemente de outros trabalhos disponíveis na literatura, os algoritmos propostos consideram programas concorrentes que interagem simultaneamente com passagem de mensagens e memória compartilhada. Foram consideradas seis primitivas com semânticas distintas: ponto-a-ponto bloqueante/não bloqueante, coletivas um-para-todos/todos-para-um/todos-para-todos e semáforos. Os algoritmos foram desenvolvidos no nível de aplicação em Java, são ortogonais à linguagem de programação utilizada e não requerem privilégios de sistema para serem executados. Estas três contribuições são descritas, detalhando seus algoritmos. Também são apresentados os resultados obtidos com os experimentos feitos durante as fases de validação e avaliação de cada contribuição. Os resultados demonstram que os objetivos propostos foram atingidos com sucesso para cada contribuição e, do ponto de vista do testador, o tempo de resposta da atividade de teste estrutural de programas concorrentes foi reduzido enquanto a cobertura de programas concorrentes com ambos os paradigmas aumentou com procedimentos automatizados e transparentes. Os experimentos mostram speedups próximos ao linear, quando comparadas as versões sequencial e paralela dos algoritmos. / The testing of concurrent programs is an expensive task, mainly because it needs to test a high number of synchronization sequences, in order to validate such programs. One of the most used techniques to test communication and synchronization of concurrent programs is the automatic generation of different synchronizations pairs (or generation of race variants). Race variants are generated from the trace files of a nondeterministic execution, and the deterministic executions force the coverage of different synchronizations. This work approaches this problem in a more general way. It reduces the response time of the structural testing of concurrent programs when different variants are required. There are three main contributions in this work: the generation of trace files and the total or partial deterministic execution, the automatic generation of race variants and the parallelization of execution of race variants. The proposed algorithms take into account concurrent programs that interact simultaneously with message passing and shared memory, including six primitives with distinct semantics: blocking and non-blocking point-to-point, all-to-all/one-to-all/all-toone collectives and shared memory. The algorithms have been implemented in Java in the application level, they are language independent and do not need system privileges to execute. Results obtained during the validation and evaluation phase are also presented and they show that the proposed objectives are reached with success. From the tester viewpoint, the response time of structural testing of concurrent programs was reduced, while the coverage of the concurrent programs with both paradigms increased with automatic and transparent procedures. The experiments showed speedups close to linear, when comparing the sequential and parallel versions.
13

Otimizando o teste estrutural de programas concorrentes: uma abordagem determinística e paralela / Improving the structural testing of concurrent programs: a deterministic and parallel approach

Raphael Negrisoli Batista 27 March 2015 (has links)
O teste de programas concorrentes é uma atividade custosa devido principalmente à quantidade de sequências de sincronização que devem ser testadas para validar tais programas. Uma das técnicas mais utilizadas para testar a comunicação e sincronização de programas concorrentes é a geração automática de diferentes pares de sincronização ou, em outras palavras, a geração de variantes de disputa (race variant). Nesta técnica as variantes de disputa são geradas a partir de arquivos de rastro de uma execução não-determinística e algoritmos de execução determinística são utilizados para forçar que diferentes sincronizações sejam cobertas. Este trabalho aborda de maneira abrangente este problema, cujo objetivo principal é reduzir o tempo de resposta da atividade de teste estrutural de programas concorrentes quando diferentes variantes de disputa são executadas. Há três principais contribuições neste trabalho: (1) geração de arquivos de rastro e execução determinística total/parcial, (2) geração automática de variantes e (3) paralelização da execução das variantes. Diferentemente de outros trabalhos disponíveis na literatura, os algoritmos propostos consideram programas concorrentes que interagem simultaneamente com passagem de mensagens e memória compartilhada. Foram consideradas seis primitivas com semânticas distintas: ponto-a-ponto bloqueante/não bloqueante, coletivas um-para-todos/todos-para-um/todos-para-todos e semáforos. Os algoritmos foram desenvolvidos no nível de aplicação em Java, são ortogonais à linguagem de programação utilizada e não requerem privilégios de sistema para serem executados. Estas três contribuições são descritas, detalhando seus algoritmos. Também são apresentados os resultados obtidos com os experimentos feitos durante as fases de validação e avaliação de cada contribuição. Os resultados demonstram que os objetivos propostos foram atingidos com sucesso para cada contribuição e, do ponto de vista do testador, o tempo de resposta da atividade de teste estrutural de programas concorrentes foi reduzido enquanto a cobertura de programas concorrentes com ambos os paradigmas aumentou com procedimentos automatizados e transparentes. Os experimentos mostram speedups próximos ao linear, quando comparadas as versões sequencial e paralela dos algoritmos. / The testing of concurrent programs is an expensive task, mainly because it needs to test a high number of synchronization sequences, in order to validate such programs. One of the most used techniques to test communication and synchronization of concurrent programs is the automatic generation of different synchronizations pairs (or generation of race variants). Race variants are generated from the trace files of a nondeterministic execution, and the deterministic executions force the coverage of different synchronizations. This work approaches this problem in a more general way. It reduces the response time of the structural testing of concurrent programs when different variants are required. There are three main contributions in this work: the generation of trace files and the total or partial deterministic execution, the automatic generation of race variants and the parallelization of execution of race variants. The proposed algorithms take into account concurrent programs that interact simultaneously with message passing and shared memory, including six primitives with distinct semantics: blocking and non-blocking point-to-point, all-to-all/one-to-all/all-toone collectives and shared memory. The algorithms have been implemented in Java in the application level, they are language independent and do not need system privileges to execute. Results obtained during the validation and evaluation phase are also presented and they show that the proposed objectives are reached with success. From the tester viewpoint, the response time of structural testing of concurrent programs was reduced, while the coverage of the concurrent programs with both paradigms increased with automatic and transparent procedures. The experiments showed speedups close to linear, when comparing the sequential and parallel versions.
14

Teste estrutural de integração contextual de programas orientados a objetos e a aspectos / Contextual integration structural testing of object-oriented and aspect-oriented programs

Bruno Barbieri de Pontes Cafeo 15 July 2011 (has links)
Paradigmas e técnicas de desenvolvimento como a programação Orientada a Objetos (OO) e a programação Orientada a Aspectos (OA) procuram melhorar os níveis de reuso e manutenibilidade na produção de software. Contudo, com a introdução de mecanismos com maior poder de expressividade e, consequentemente, a possível introdução de novos tipos de defeitos, a utilização de linguagens OO e OA pode se tornar um obstáculo ao invés de um auxílio ao desenvolvimento de software. Para lidar com esse problema, nesta dissertação é proposta uma abordagem de teste estrutural de integração para programas orientados a objetos e a aspectos implementados em Java e AspectJ. É definido um modelo de fluxo de controle e de dados baseado no bytecode Java { chamado Grafo Def-Uso Contextual (ou Contextual Def-Use graph) - que é uma abstração formada pela integração dos grafos Def-Uso Orientados a Aspectos (AODU) da unidade sob teste com todas as unidades que interagem direta ou indiretamente com ela até um nível de profundidade de interação máximo ou definido pelo testador. São defiidos três critérios de teste: todos-nós-integrados-Nd, todas-arestas-integradas-Nd e todos-usos-integrados-Nd. Para automatizar o uso do modelo e critérios propostos, a ferramenta JaBUTi/AJ foi estendida. Exemplos de usos são discutidos e, por meio de um estudo experimental, uma análise de aplicabilidade da abordagem proposta é apresentada / Development paradigms and techniques such as Object-Oriented (OO) programming and Aspect-Oriented (AO) programming aim at improving reuse levels and maintenability in the software production. However, due to the introduction of mechanisms to support a greater power of expressiveness and, consequently, possible introduction of new type of faults, the use of OO and AO languages might become an obstacle instead of a benefit in the software development. To deal with these problems, in this dissertation is presented an integration structural testing approach for objectand aspect-oriented software based on Java and AspectJ. It is defined a control- and data- ow model based on Java bytecode { called Contextual Def-Use graph { that is an abstraction composed by the integration of Aspect-Oriented Def-Use graphs (AODU) of the unit under testing with the units triggered by the execution of the unit under testing considering either a maximum interaction depth level or an interaction depth level previously defined by the tester. Three testing criteria are also defined: all-integrated-nodes-Nd, all-integrated-edges-Nd and all-integrated-uses-Nd. To automate the use of the model and the testing criteria, the JaBUTi/AJ tool was extended. Usage examples are discussed to explain the approach and an exploratory study is conducted to evaluate the applicability of the proposed approach
15

Teste estrutural para aplicações concorrentes em Erlang / Structural testing for Concurrent Applications in Erlang

Alexandre Ponce de Oliveira 27 June 2017 (has links)
As atividades de validação, verificação e teste contribuem para melhorar a qualidade dos programas, independentemente do paradigma de programação utilizado. Erlang é um exemplo de linguagem funcional, e aspectos como: dados imutáveis, higher-order functions, lazy evaluation e pattern matching impõem restrições à atividade de teste estrutural de software, as quais requerem uma atenção especial do testador. A linguagem Erlang foi criada para o desenvolvimento de aplicações concorrentes, em tempo real e com tolerância a falhas. A aplicação da atividade de teste de software torna-se necessária para aplicações desenvolvidas em Erlang. Um mapeamento sistemático realizado identificou os trabalhos relacionados e também a identificação de falhas típicas encontradas em programas Erlang. O resultado do mapeamento evidenciou a falta de propostas que considerem as principais características de Erlang, incluindo uma ferramenta de teste que dê suporte à aplicação prática da atividade de teste. Esta lacuna foi considerada significativa. Foi proposto um conjunto de critérios de teste estruturais para verificar a cobertura de códigos em aplicações sequenciais e distribuídas de programas Erlang. Os critérios de teste exploram as possíveis falhas relacionadas à comunicação entre funções, comunicação entre processos, sincronização, concorrência, recursividade e tolerância a falhas. A definição dos critérios contou com o suporte de um modelo de teste para a obtenção das informações sobre o fluxo de controle, fluxo de dados e fluxo de comunicação de programas Erlang. O modelo estabeleceu 15 tipos de nós, 9 tipos de arestas e 5 tipos de usos de variáveis. Para apoiar a aplicação dos critérios, uma ferramenta de teste, chamada Valierlang, também foi implementada. A ValiErlang é composta por 5 módulos que realizam as seguintes etapas: análise estática, instrumentação do código fonte, geração do GFC, definição dos elementos requeridos, execução do código instrumentado, geração do rastro de execução e avaliação dos elementos cobertos e elementos não executáveis. Foi realizado um estudo experimental para verificar a aplicabilidade dos critérios de teste por meio da ValiErlang. Neste estudo foram utilizados seis programas com diferentes características, todas essenciais aos programas em Erlang. Com base nos resultados obtidos, foi possível comprovar que a abordagem contribui com o testador devido ao sucesso na aplicação dos critérios e também a eficácia dos critérios em revelar defeitos. E as etapas para o testador de software realizar a aplicação do teste estrutural, tem o apoio ferramental da ValiErlang. / The validation, verification and test activities contribute to improve the quality of the programs, independently of the used programing paradigm. Erlang is an example of functional language and aspects such as: immutable data, higher-order functions, lazy evaluation e pattern matching impose restrictions to the software structural testing activity, which require a special attention by the tester. The Erlang language was created for the development of concurrent applications, in real time and with fault tolerance. The application of the software testing activity becomes necessary for applications developed in Erlang. An executed systematic mapping identified the related works and the identification of typical failures found in Erlang programs. The result of the mapping highlighted the lack of proposals that consider the main features of Erlang, including a testing tool that supports the practical application of the testing activity. This gap was considered significant. A set of structural testing criteria was proposed to verify the coverage of codes in sequential and distributed applications in Erlang programs. The test criteria explore the possible failure related to the communication between functions, communication between processes, synchronization, concurrence, recursion and fault tolerance. The definition of the criteria had the support of a test model to obtain information about control flux, data flux, and communication flux of Erlang programs. The model established 15 types of nodes, 9 types of edges and 5 types of variable uses. To support the application of criteria, a testing tool called ValiErlang was also implemented. ValiErlang is composed of 5 modules that execute the following stages: static analysis, source code instrumentation, CFG generation, definition of the required elements, instrumented code execution, execution trace generation and evaluation of the covered and non-executable elements. An experimental study was executed to verify the applicability of the testing criteria by ValiErlang. In this study six programs with different characteristics were used. All characteristics were essential to the Erlang programs. Based on the obtained results, it was possible to prove that the approach contributes with the tester because of the success in the criteria application and the efficiency of the criteria in revealing defects. The stages for the testes to execute the structural test application have the support of the Erlang tool.
16

Teste de programas orientados a aspectos: uma abordagem estrutural para AspectJ / Testing aspect-oriented programs: a structural approach for AspectJ

Otávio Augusto Lazzarini Lemos 04 February 2005 (has links)
Em meados dos anos 90, alguns pesquisadores constataram a existência de certos interesses que, independente da técnica de programação utilizada ou da maneira como o sistema venha a ser decomposto, não se encaixam em módulos individuais, mas ficam espalhados por várias unidades do software (também chamados de interesses transversais). A programação orientada a aspectos (POA) foi concebida como uma proposta de resolução desse problema, a partir do uso de mecanismos que permitem o isolamento dos interesses transversais. Entretanto, por ser uma técnica nova, nesses primeiros anos os pesquisadores preocuparam-se em estabelecer os conceitos e técnicas básicos das linguagens orientadas a aspectos, deixando para uma segunda fase a investigação de outras características do desenvolvimento de programas orientados a aspectos, como métodos de projeto e abordagens de teste. Nesta dissertação é apresentada uma abordagem de teste estrutural para programas orientados a aspectos baseados na linguagem AspectJ, que pode contribuir para o aumento da confiança no software desenvolvido utilizando essa técnica e auxiliar o entendimento das novas construções e comportamentos envolvidos nesses programas. Modelos de fluxo de controle e de dados baseados no código-objeto resultante da compilação/ combinação de programas escritos na linguagem AspectJ são propostos, bem como nove critérios de teste baseados nesses modelos. Uma ferramenta desenvolvida para apoiar o teste estrutural de unidade de programas Java foi estendida para dar apoio aos modelos e critérios propostos nesta dissertação. Além disso, algumas propriedades do teste de integração de programas orientados a aspectos são discutidas teoricamente.
17

Teste estrutural de tratamento de exceções em programas OA: representação, critérios e avaliação / Structural test of exception handling on AO programs: representation, criteria and evaluation

Luciano Augusto Fernandes Carvalho 06 June 2013 (has links)
O mecanismo de tratamento de exceções disponível em linguagens orientadas a objetos está sendo cada vez mais utilizado e representa cerca de 8% das linhas de código em programas escritos com linguagens de terceira geração, de acordo com algumas pesquisas. No entanto, este mecanismo está entre os menos compreendido pelos desenvolvedores e menos testado. A dificuldade de testar exceções aumenta na fase de teste de integração, porque exceções lançadas em um determinado nível e não tratadas podem subir na hierarquia de chamada. O uso de aspectos também pode introduzir novos tipos de defeitos, como por exemplo um adendo pode inserir lançamentos de exceções no programa sem que exista algum tratamento previsto para elas. Este trabalho apresenta uma proposta para testes de integração estrutural de fluxos de exceções de programas Java e AspectJ. Isto é feito propondo-se alterações na representação do fluxo de exceção no grafo de fluxo de controle integrado e propondo-se novos critérios baseados no fluxo de exceção. Além disso, essas propostas foram implementadas e geraram uma extensão da ferramenta chamada Ja-BUTi/AJ. Para avaliar a proposta deste trabalho, um estudo de caso e um experimento formal foram conduzidos. O estudo de caso teve como objetivo validar a extensão da JaBUTi/AJ desenvolvida e fazer uma avaliação inicial do custo de aplicação dos critérios propostos. O experimento formal realizou uma comparação entre as ferramentas JaBUTi/AJ e VITTAE no contexto do teste do fluxo de exceções. Ambos os estudos são apresentados e discutidos nesta dissertação / Exception handling mechanisms available in object-oriented languages have become increasingly used and account for about 8% of the lines of code in modern programs according to some empirical researches. Yet, this mechanism is among the least understood by programmers and the less tested. The difficulty of testing exceptions increases in the phase of integration testing (e.g. inter-class testing) because exceptions raised on a certain level and not handled can flow through the call hierarchy. Using aspects also cause other types of errors, e.g. an advice can insert exceptions not foreseen by the base program. This paper presents a proposal for structural integration testing of exception flows of Java and AspectJ programs. This is done by proposing changes to the classic control ow graph and by proposing new criteria based on the exception ow. Moreover, these proposals have been implemented in a tool named JaBUTi/AJ. To evaluate the proposal of this work, a case study and a formal experiment have been conducted. The case study had the objective of validating the JaBUTi/AJ extension developed and making a preliminary assessment of the cost to use the tool. The formal experiment made a comparison between the tools JaBUTi/AJ and VITTAE in the context of exception flow test. Both studies are presented and discussed in this dissertation
18

Um estudo de caracterização e avaliação de critérios de teste estruturais entre os paradigmas procedimental e OO / A characterization and evaluation study of structural testing criteria between procedural and OO testing

Prado, Marllos Paiva 18 May 2009 (has links)
O Teste de software é uma atividade de garantia da qualidade que tem por finalidade diminuir o número de defeitos do software. Esta atividade contribui para redução do custo de manutenção e para a melhora da qualidade do software, durante o processo de desenvolvimento. Isso tem motivado a investigação e proposta de estratégias, técnicas, critérios e ferramentas de teste para diferentes paradigmas de desenvolvimento, tais como procedimental, orientado a objetos e orientado a aspectos. Vários estudos experimentais têm sido desenvolvidos para avaliar e comparar critérios de teste. Grande parte desses experimentos foram realizados com programas construídos sob um mesmo paradigma ou desconsiderando a influência do mesmo sobre os resultados. Entretanto, é importante avaliar o impacto de um paradigma específico sobre a atividade de teste uma vez que alguns defeitos podem estar relacionados ao seu uso. Este trabalho apresenta um estudo experimental realizado para caracterizar e avaliar o custo de aplicação e a dificuldade de satisfação de critérios de teste, comparando dois paradigmas: o orientado a objetos e o procedimental. O estudo considera critérios de teste funcionais e estruturais e utiliza um conjunto de programas do domínio de Estrutura de Dados. Os termos e fases do processo de experimentação controlada foram usados, à medida em que estes se mostraram adequados, para definir e executar o presente estudo. Os objetivos com a execução dessa pesquisa foram obter resultados iniciais sobre as questões investigadas bem como gerar artefatos que sirvam de base para a definição e condução de futuros experimentos e a criação de pacotes de laboratório. Além disso, pretende-se apoiar, por meio dos materiais gerados, o treinamento e o ensino da atividade do teste de software / Software Testing is a quality assurance activity that aims at reducing the number of software faults. This activity contributes for the reduction of maintenance costs and for software quality improvement during the development process. These factors have motivated the investigation and proposal of several testing strategies, techniques, criteria and tools for different programming paradigms, such as procedural, object-oriented and aspect-oriented. Regarding testing criteria, many experimental studies have been performed to evaluate and compare them. In general, these experiments comprise programs developed under the same paradigm or this influence over the results. However, some faults can be paradigm-related and it is important to evaluate its impact on the testing activity. This work presents an experimental study developed to characterize and evaluate the application cost and strength of testing criteria, comparing two programming paradigms: object-oriented and procedural. This study considers functional and strutural testing criteria and uses a set of programs from the data structure domain. Terms and phases from controlled experimentation process were used, as long as they showed to be adequated, to define and execute the present study. The research aims at obtaining initial results about the questions investigated as well as generating artifacts which support the definition and conduction of future experiments and the creation of laboratory packages. In addition, it intends to support, through the materials generated, the training and teaching of software testing activity
19

Teste estrutural de integração de programas orientados a aspectos: uma abordagem baseada em conjuntos de junção para AspectJ / Structural integration testing of aspect-oriented programs: a pointcut-based approach for AspectJ

Lemos, Otávio Augusto Lazzarini 15 April 2009 (has links)
A Programação Orientada a Aspectos (POA) é uma técnica de desenvolvimento que apoia a separação de interesses transversais. Na POA, adendos são aplicados a pontos de junção do sistema por meio de uma construção especial chamada descritor de conjuntos de junção (ou simplesmente conjunto de junção). Esse mecanismo apoia a modularização de comportamentos transversais, entretanto, como as interações adicionadas não ficam explícitas no código-fonte, é difícil assegurar que estão corretas. Para lidar com esse problema, nesta tese é proposta uma abordagem rigorosa de teste estrutural de integração para programas orientados a aspectos. É definido um modelo de fluxo de controle e de dados baseado no bytecode Java chamado Grafo Def-Uso baseado em conjuntos de junção (ou PointCut-based Def-Use graph, PCDU) que modela as regiões de execução de um programa escrito em AspectJ que são afetadas por um conjunto de junção. Sobre este modelo são definidos três critérios de teste: todos-nós-baseados-em-conjunto-de-junção, todas-arestas-baseadas-em-conjunto-de-junção e todos-usos-baseados-em-conjunto-de-junção, que requerem a cobertura de todos os comandos, condicionais e pares def-uso no contexto de cada ponto de junção selecionado. Para automatizar o uso do modelo e critérios propostos, é implementada uma ferramenta chamada JaBUTi/PC-AJ. Além disso, para validar a abordagem proposta, são conduzidos estudos teóricos e experimentais que procuram avaliar os critérios tanto do ponto de vista do custo de aplicação quanto do ponto de vista da eficácia em encontrar defeitos. Os estudos oferecem indícios da aplicabilidade e da eficácia dos critérios para encontrar defeitos diretamente relacionados com a POA / Aspect-Oriented Programming (AOP) is a promising development technique that supports separation of crosscutting concerns. In AOP, advice is applied to join points in the system through a special construct called pointcut. This mechanism supports the modularization of crosscutting behavior; however, since the added interactions are not explicit in the source code, it is hard to ensure their correctness. To tackle this problem, this thesis proposes a rigorous structural testing approach for aspect-oriented programs. A control and data flow model based on Java bytecode the PointCut-based Def-Use Graph (PCDU) that models execution regions of a program affected by a pointcut is proposed. On top of this model three testing criteria are defined: all-pointcut-based-advice-nodes, all-pointcut-based-advice-edges, and all-pointcut-based-advice-uses, that require exercising all statements, branches and def-use pairs of each advice at the context of each affected join point. To automate the use of the proposed model and criteria, a tool named JaBUTi/PC-AJ is implemented. Moreover, to validate the proposed approach, both theoretical and experimental studies are presented. These studies provide evidence of the applicability and efficacy of the proposed criteria
20

Automatização do teste estrutural de software de veículos autônomos para apoio ao teste de campo / Automated structural software testing of autonomous vehicle to support field testing

Neves, Vânia de Oliveira 15 May 2015 (has links)
Veículo autônomo inteligente (ou apenas veículo autônomo VA) é um tipo de sistema embarcado que integra componentes físicos (hardware) e computacionais (software). Sua principal característica é a capacidade de locomoção e de operação de modo semi ou completamente autônomo. A autonomia cresce com a capacidade de percepção e de deslocamento no ambiente, robustez e capacidade de resolver e executar tarefas lidando com as mais diversas situações (inteligência). Veículos autônomos representam um tópico de pesquisa importante e que tem impacto direto na sociedade. No entanto, à medida que esse campo avança alguns problemas secundários aparecem como, por exemplo, como saber se esses sistemas foram suficientemente testados. Uma das fases do teste de um VA é o teste de campo, em que o veículo é levado para um ambiente pouco controlado e deve executar livremente a missão para a qual foi programado. Ele é geralmente utilizado para garantir que os veículos autônomos mostrem o comportamento desejado, mas nenhuma informação sobre a estrutura do código é utilizada. Pode ocorrer que o veículo (hardware e software) passou no teste de campo, mas trechos importantes do código nunca tenham sido executados. Durante o teste de campo, os dados de entrada são coletados em logs que podem ser posteriormente analisados para avaliar os resultados do teste e para realizar outros tipos de teste offline. Esta tese apresenta um conjunto de propostas para apoiar a análise do teste de campo do ponto de vista do teste estrutural. A abordagem é composta por um modelo de classes no contexto do teste de campo, uma ferramenta que implementa esse modelo e um algoritmo genético para geração de dados de teste. Apresenta também heurísticas para reduzir o conjunto de dados contidos em um log sem diminuir substancialmente a cobertura obtida e estratégias de combinação e mutação que são usadas no algoritmo. Estudos de caso foram conduzidos para avaliar as heurísticas e estratégias e são também apresentados e discutidos. / Intelligent autonomous vehicle (or just autonomous vehicle - AV) is a type of embedded system that integrates physical (hardware) and computational (software) components. Its main feature is the ability to move and operate partially or fully autonomously. Autonomy grows with the ability to perceive and move within the environment, robustness and ability to solve and perform tasks dealing with different situations (intelligence). Autonomous vehicles represent an important research topic that has a direct impact on society. However, as this field progresses some secondary problems arise, such as how to know if these systems have been sufficiently tested. One of the testing phases of an AV is the field testing, where the vehicle is taken to a controlled environment and it should execute the mission for which it was programed freely. It is generally used to ensure that autonomous vehicles show the intended behavior, but it usually does not take into consideration the code structure. The vehicle (hardware and software) could pass the field testing, but important parts of the code may never have been executed. During the field testing, the input data are collected in logs that can be further analyzed to evaluate the test results and to perform other types of offline tests. This thesis presents a set of proposals to support the analysis of field testing from the point of view of the structural testing. The approach is composed of a class model in the context of the field testing, a tool that implements this model and a genetic algorithm to generate test data. It also shows heuristics to reduce the data set contained in a log without reducing substantially the coverage obtained and combination and mutation strategies that are used in the algorithm. Case studies have been conducted to evaluate the heuristics and strategies, and are also presented and discussed.

Page generated in 0.478 seconds