Spelling suggestions: "subject:"deste estrutural"" "subject:"neste estrutural""
1 |
Uso da técnica de teste estrutural para o teste e monitoração de serviços / Using structural testing to test and monitor service based applicationsEler, Marcelo Medeiros 25 May 2012 (has links)
A computação orientada a serviços propõe o desenvolvimento de software por meio da composição de serviços com os objetivos de aumentar o reúso de software e facilitar a criação de aplicações dinâmicas, flexíveis e com baixo acoplamento. O uso de serviços no desenvolvimento de software só é possível se os desenvolvedores de aplicações (integradores) confiarem na qualidade dos serviços oferecidos por terceiros. Uma forma de aumentar a confiança sobre serviços adquirido de terceiros é a realização de testes. Entretanto, o teste de serviços é difícil porque os testadores ficam limitados a usar técnicas de teste baseadas em especificação por causa da indisponibilidade do código fonte. Nesse contexto, os testadores não podem usufruir dos benefícios de combiná-las com técnicas baseadas em implementação, como a técnica estrutural, por exemplo. Uma abordagem para viabilizar o uso da técnica de teste estrutural no contexto de aplicações baseadas em serviços sem expor o código fonte dos serviços é apresentada. Ela propõe a criação de serviços testáveis, que são serviços com alta testabilidade e que possuem uma interface de teste cujas operações apoiam o teste estrutural. Integradores podem realizar o teste de um serviço testável e obter, sem acessar o código fonte, uma análise de cobertura. Metadados de teste também são fornecidos pelos serviços testáveis para auxiliar integradores na obtenção de uma cobertura estrutural maior. A abordagem também apoia atividades de monitoração ativa de serviços. A abordagem é genérica uma instanciação para apoiar o teste estrutural de serviços e aplicações escritos em Java é apresentada. Estudos de casos e experimentos controlados foram realizados para validar a abordagem instanciada. Os resultados mostram que a abordagem é viável e apresenta bons resultados quando comparada com o uso apenas da técnica funcional / Software oriented computing aims at developing software by the composition of services. It promotes software reuse and the implementation of dynamic, flexible and low coupling applications. Services provide specific business functionalities and are provided as a black-box. The use of services is only possible if the developers of service applications (integrators) trust the third party services. Particularly, testing is one of the solutions to obtain confidence on third party software. However, testers can only use specification based testing techiniques due to unavailability of the source code. In this context, testers cannot use the benefits of combining specification and implementation-based testing techniques. This works aims at proposing an an approach to introduce the structural testing technique in the context of service-based applications, but without revealing the source code. The proposed approach promotes the development of testable services, which are services with high testability and exposes operations through a testing interface to support structural testing. Integrators can test testable services and get, without having access to the source code, a coverage analysis on structural criteria. Test metadata are also provided along with testable services to help integrators on creating more test cases to increase the coverage obtained. The proposed approach is also used to support monitoring activities. The approach is generic and an instantiation is presented to create testable services written in Java. Formal experiments and case studies were conduct to validate the proposed approach and the instantiation. The results provide evidences of the applicability and the benefits of the approach for both testing and monitoring activities when compared to only using the functional approach
|
2 |
Uso da técnica de teste estrutural para o teste e monitoração de serviços / Using structural testing to test and monitor service based applicationsMarcelo Medeiros Eler 25 May 2012 (has links)
A computação orientada a serviços propõe o desenvolvimento de software por meio da composição de serviços com os objetivos de aumentar o reúso de software e facilitar a criação de aplicações dinâmicas, flexíveis e com baixo acoplamento. O uso de serviços no desenvolvimento de software só é possível se os desenvolvedores de aplicações (integradores) confiarem na qualidade dos serviços oferecidos por terceiros. Uma forma de aumentar a confiança sobre serviços adquirido de terceiros é a realização de testes. Entretanto, o teste de serviços é difícil porque os testadores ficam limitados a usar técnicas de teste baseadas em especificação por causa da indisponibilidade do código fonte. Nesse contexto, os testadores não podem usufruir dos benefícios de combiná-las com técnicas baseadas em implementação, como a técnica estrutural, por exemplo. Uma abordagem para viabilizar o uso da técnica de teste estrutural no contexto de aplicações baseadas em serviços sem expor o código fonte dos serviços é apresentada. Ela propõe a criação de serviços testáveis, que são serviços com alta testabilidade e que possuem uma interface de teste cujas operações apoiam o teste estrutural. Integradores podem realizar o teste de um serviço testável e obter, sem acessar o código fonte, uma análise de cobertura. Metadados de teste também são fornecidos pelos serviços testáveis para auxiliar integradores na obtenção de uma cobertura estrutural maior. A abordagem também apoia atividades de monitoração ativa de serviços. A abordagem é genérica uma instanciação para apoiar o teste estrutural de serviços e aplicações escritos em Java é apresentada. Estudos de casos e experimentos controlados foram realizados para validar a abordagem instanciada. Os resultados mostram que a abordagem é viável e apresenta bons resultados quando comparada com o uso apenas da técnica funcional / Software oriented computing aims at developing software by the composition of services. It promotes software reuse and the implementation of dynamic, flexible and low coupling applications. Services provide specific business functionalities and are provided as a black-box. The use of services is only possible if the developers of service applications (integrators) trust the third party services. Particularly, testing is one of the solutions to obtain confidence on third party software. However, testers can only use specification based testing techiniques due to unavailability of the source code. In this context, testers cannot use the benefits of combining specification and implementation-based testing techniques. This works aims at proposing an an approach to introduce the structural testing technique in the context of service-based applications, but without revealing the source code. The proposed approach promotes the development of testable services, which are services with high testability and exposes operations through a testing interface to support structural testing. Integrators can test testable services and get, without having access to the source code, a coverage analysis on structural criteria. Test metadata are also provided along with testable services to help integrators on creating more test cases to increase the coverage obtained. The proposed approach is also used to support monitoring activities. The approach is generic and an instantiation is presented to create testable services written in Java. Formal experiments and case studies were conduct to validate the proposed approach and the instantiation. The results provide evidences of the applicability and the benefits of the approach for both testing and monitoring activities when compared to only using the functional approach
|
3 |
Structural testing criteria for concurrent programs considering loop execution / Critérios de teste estrutural para programas concorrentes considerando a execução de loopsDiaz, Silvia Margarita Diaz 24 May 2019 (has links)
Parallel programs are imperative for improving performance and problem solving, having an increasing demand on implementing efficient parallel programming techniques. This entails new challenges on software testing to ensure their quality and reliability. Structural testing is a technique that allows the identification of concurrency defects by analyzing the internal structure of the program. However, the non-determinism of concurrent programs has implications in the testing activity, requiring the use of structured methods to reveal defects. Testing criteria support the selection of test cases in a systematical form by statically analysing elements of concurrent programs. We found that there are currently gaps in the definition of testing criteria contemplating scenarios with elements that are dynamically evaluated, such as the execution of communication primitives inside loops. The objective of this project is to define structural testing criteria to guide the selection of test cases, improving the reliability of concurrent programs by revealing non-determinism related errors present in repetition structures. We developed a Concurrent Defects Taxonomy, identifying and classifying concurrency types of defects found in related literature. The analysis of such defects, paths inside loops, number of loop iterations, and nested loops allow us to model the proposed structural testing criteria. We define new sets and associations related to communication and synchronization flows for message-passing programs, establishing a model for testing criteria. We implemented the proposed test model in ValiMPI, a testing tool prototype, considering the new concepts defined in our test model, generating required elements and evaluating coverage after constructing loop paths. For the application evaluation of criteria we perform an empirical study with statistical validation, indicating the results for cost, effectiveness and strength. Our experimental evaluation demonstrated that the proposed testing criteria generates required elements that support the identification of concurrency defects occurring in different loop iterations, when having communicational events with non-deterministic behavior. / A programação paralela é imperativa para melhorar o desempenho e a resolução eficiente de problemas, tendo uma demanda crescente na implementação de técnicas de programação paralela. Isso implica novos desafios no teste de software para garantir a qualidade e confiabilidade. O teste estrutural é uma técnica que permite a identificação de defeitos de concorrência, analisando a estrutura interna do programa. No entanto, os programas concorrentes são não-determinísticos, com desafios na atividade de teste, exigindo o uso de métodos estruturados para revelar defeitos. Os critérios de teste suportam a seleção de casos de teste de forma sistemática, analisando estaticamente elementos de programas concorrentes. Foi descoberto que atualmente existem lacunas na definição de critérios de teste contemplando cenários com elementos dinâmicos, como a execução de primitivas de comunicação dentro de loops. O objetivo deste projeto é definir critérios estruturais para orientar a seleção de casos de teste, revelando erros relacionados ao não-determinismo e melhorando a confiabilidade de programas concorrentes. Foi desenvolvida uma Taxonomia de Defeitos Concorrentes, identificando e classificando os tipos de defeitos de concorrência encontrados na literatura relacionada. A análise de tais defeitos, a seleção de caminhos de loop, o número de iterações de loop e loops aninhados permitem modelar os critérios de testes estruturais propostos. Foram definidos novos conjuntos e associações relacionadas aos fluxos de comunicação e sincronização de programas de passagem de mensagens, estabelecendo um modelo para os critérios de teste. O modelo de teste proposto foi implementado no protótipo de ferramenta de teste chamada ValiMPI, considerando as associações definidas para os critérios propostos, gerando elementos necessários e cobertura de avaliação após a identificação dos nós de loop. Para a avaliação da aplicação dos critérios, foi realizado um estudo empírico com validação estatística, indicando os resultados para custo, efetividade e strength. A avaliação experimental demonstrou que os critérios de teste propostos geram elementos necessários que suportam a identificação de defeitos presentes em diferentes iterações dos loops, quando existem eventos de comunicação com comportamento não-determinístico.
|
4 |
Teste de composição de web services: uma estratégia baseada em um modelo de teste de programas paralelos / Web services composition testing: a strategy based on a test model of parallel programsEndo, André Takeshi 17 April 2008 (has links)
WEb Services constituem uma tecnologia emergente utilizada para disponibilização de serviços na Web. Devido aos complexos processos de negócio existentes, esses serviços são combinados para que operem seguindo um fluxo de trabalho. Esse processo é chamado de composição de Web Services. Como no processo de desenvolvimento de um software tradicional, a atividade de teste é fundamental no processo de desenvolvimento da composição de Web Services. Neste trabalho é proposta uma estratégia de teste para a composição de Web Services, em que especificações de composições são transformadas para um modelo de teste de programas paralelos baseados em passagem de mensagens. É proposto o conceito de grupos de elementos requeridos para melhorar a cobertura dos critérios. Uma ferramenta de apoio à estratégia de teste foi desenvolvida. Alguns estudos experimentais para avaliar a aplicabilidade da estratégia proposta também são apresentados. Além disso, é proposto um método que utiliza redes de Petri para eliminar sincronizações não-executáveis no envio e recebimento de mensagens / WEb Services constitute an emerging technology for deploying services in the Web. Due to the complex business processes, these services are combined to operate, following a workflow. This process is named Web Services Composition. As in the development process of a traditional software, the testing activity is fundamental in the development process of Web Services Composition. This work proposes a test strategy for Web Services Composition, in that composition specifications are transformed into a test model of message-passing parallel programs. The concept of required elements groups is proposed to improve the criteria coverage. A tool that supports the test strategy was developed. Some experimental studies for evaluating the applicability of proposed strategy are also presented. Furthermore, it presents a method that uses Petri Nets to eliminate non-executable synchronizations in the sending and receiving of messages
|
5 |
Teste de programas concorrentes com memória compartilhada / Test of shared memory concurrent programsSarmanho, Felipe Santos 13 April 2009 (has links)
Este trabalho propõe um modelo de teste para programas concorrentes que utilizam memória compartilhada. O modelo é inovador em três aspectos principais: (1) tratar a sincronização e a comunicação de threads de forma separada, (2) considerar a sincronização decorrente da inicialização/finalização de threads, e (3) apresenta um método baseado em timestamps para determinar as comunicações exercitadas em uma dada execução do programa. Os critérios de cobertura existentes para programas concorrentes foram adaptados ao contexto de programas baseados no paradigma de memória compartilhada. A ferramenta chamada ValiPThread foi implementada neste trabalho para apoiar a aplicação do modelo e dos critérios definidos. Com essa ferramenta é possível criar sessões de teste que podem ser salvas, interrompidas e retomadas a qualquer momento. Também é possível adicionar e executar casos de teste, avaliando a cobertura do código fonte em relação aos critérios de teste. A implementação da ferramenta mostra que é possível instanciar o modelo proposto em um software que auxilie a atividade de teste no contexto de programas com memória compartilhada. O trabalho apresenta soluções significativas para os principais desafios impostos pela programação concorrente para a atividade de teste, destacando-se dentre eles: (1) desenvolvimento de novas técnicas de análise estática para analisar programas concorrentes no contexto de memória compartilhada; (2) testar aspectos cruciais à programação concorrente como: sincronização, comunicação e fluxo de dados; (3) reproduzir uma execução de maneira controlada; (4) mapeamento de critérios de teste já existentes para programas concorrentes com passagem de mensagem para o contexto de memória compartilhada; (5) projetar critérios de fluxo de dados para programas concorrentes, considerando variáveis compartilhadas e (6) desenvolvimento de uma ferramenta de apoio a essas atividades / This work presents a novel test model for shared memory concurrent programs. Some important new features in this model are: (1) analysis the communication and synchronization in an isolated manner, (2) examines the synchronization due the start and the finish of threads, and (3) employs a method based on timestamps to check the communication exercised for an execution of the program. The coverage criteria set defined for concurrent programs was adjusted to the shared memory programs. In this work, the tool ValiPThread was implemented to support the application of the test model and of the coverage criteria. This tool allows to create a test session that can be saved, stopped and resumed at any time. In this tool is also possible to add and to execute test cases, analyzing the source code coverage with respect to the coverage criteria. The new tool shows that is possible instance the proposed model in a software that supports the test activity in context of shared memory. This work presents solutions for the major challenges related to task of to test concurrent programs, such as: (1) develop new techniques to do static analyzes of shared memory programs; (2) test important aspects to concurrent programs such as like: synchronization, communication and data flow; (3) replay and deterministic re-execution; (4) adjust coverage criteria from the context of message passing concurrent programs to shared memory context; (5) design data flow criteria based on shared variables and (6) build a tool to support these activities
|
6 |
Teste de programas concorrentes com memória compartilhada / Test of shared memory concurrent programsFelipe Santos Sarmanho 13 April 2009 (has links)
Este trabalho propõe um modelo de teste para programas concorrentes que utilizam memória compartilhada. O modelo é inovador em três aspectos principais: (1) tratar a sincronização e a comunicação de threads de forma separada, (2) considerar a sincronização decorrente da inicialização/finalização de threads, e (3) apresenta um método baseado em timestamps para determinar as comunicações exercitadas em uma dada execução do programa. Os critérios de cobertura existentes para programas concorrentes foram adaptados ao contexto de programas baseados no paradigma de memória compartilhada. A ferramenta chamada ValiPThread foi implementada neste trabalho para apoiar a aplicação do modelo e dos critérios definidos. Com essa ferramenta é possível criar sessões de teste que podem ser salvas, interrompidas e retomadas a qualquer momento. Também é possível adicionar e executar casos de teste, avaliando a cobertura do código fonte em relação aos critérios de teste. A implementação da ferramenta mostra que é possível instanciar o modelo proposto em um software que auxilie a atividade de teste no contexto de programas com memória compartilhada. O trabalho apresenta soluções significativas para os principais desafios impostos pela programação concorrente para a atividade de teste, destacando-se dentre eles: (1) desenvolvimento de novas técnicas de análise estática para analisar programas concorrentes no contexto de memória compartilhada; (2) testar aspectos cruciais à programação concorrente como: sincronização, comunicação e fluxo de dados; (3) reproduzir uma execução de maneira controlada; (4) mapeamento de critérios de teste já existentes para programas concorrentes com passagem de mensagem para o contexto de memória compartilhada; (5) projetar critérios de fluxo de dados para programas concorrentes, considerando variáveis compartilhadas e (6) desenvolvimento de uma ferramenta de apoio a essas atividades / This work presents a novel test model for shared memory concurrent programs. Some important new features in this model are: (1) analysis the communication and synchronization in an isolated manner, (2) examines the synchronization due the start and the finish of threads, and (3) employs a method based on timestamps to check the communication exercised for an execution of the program. The coverage criteria set defined for concurrent programs was adjusted to the shared memory programs. In this work, the tool ValiPThread was implemented to support the application of the test model and of the coverage criteria. This tool allows to create a test session that can be saved, stopped and resumed at any time. In this tool is also possible to add and to execute test cases, analyzing the source code coverage with respect to the coverage criteria. The new tool shows that is possible instance the proposed model in a software that supports the test activity in context of shared memory. This work presents solutions for the major challenges related to task of to test concurrent programs, such as: (1) develop new techniques to do static analyzes of shared memory programs; (2) test important aspects to concurrent programs such as like: synchronization, communication and data flow; (3) replay and deterministic re-execution; (4) adjust coverage criteria from the context of message passing concurrent programs to shared memory context; (5) design data flow criteria based on shared variables and (6) build a tool to support these activities
|
7 |
Teste de composição de web services: uma estratégia baseada em um modelo de teste de programas paralelos / Web services composition testing: a strategy based on a test model of parallel programsAndré Takeshi Endo 17 April 2008 (has links)
WEb Services constituem uma tecnologia emergente utilizada para disponibilização de serviços na Web. Devido aos complexos processos de negócio existentes, esses serviços são combinados para que operem seguindo um fluxo de trabalho. Esse processo é chamado de composição de Web Services. Como no processo de desenvolvimento de um software tradicional, a atividade de teste é fundamental no processo de desenvolvimento da composição de Web Services. Neste trabalho é proposta uma estratégia de teste para a composição de Web Services, em que especificações de composições são transformadas para um modelo de teste de programas paralelos baseados em passagem de mensagens. É proposto o conceito de grupos de elementos requeridos para melhorar a cobertura dos critérios. Uma ferramenta de apoio à estratégia de teste foi desenvolvida. Alguns estudos experimentais para avaliar a aplicabilidade da estratégia proposta também são apresentados. Além disso, é proposto um método que utiliza redes de Petri para eliminar sincronizações não-executáveis no envio e recebimento de mensagens / WEb Services constitute an emerging technology for deploying services in the Web. Due to the complex business processes, these services are combined to operate, following a workflow. This process is named Web Services Composition. As in the development process of a traditional software, the testing activity is fundamental in the development process of Web Services Composition. This work proposes a test strategy for Web Services Composition, in that composition specifications are transformed into a test model of message-passing parallel programs. The concept of required elements groups is proposed to improve the criteria coverage. A tool that supports the test strategy was developed. Some experimental studies for evaluating the applicability of proposed strategy are also presented. Furthermore, it presents a method that uses Petri Nets to eliminate non-executable synchronizations in the sending and receiving of messages
|
8 |
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 evaluationCarvalho, Luciano Augusto Fernandes 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
|
9 |
Teste estrutural para aplicações concorrentes em Erlang / Structural testing for Concurrent Applications in ErlangOliveira, Alexandre Ponce de 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.
|
10 |
Teste de programas orientados a aspectos: uma abordagem estrutural para AspectJ / Testing aspect-oriented programs: a structural approach for AspectJLemos, Otávio Augusto Lazzarini 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.
|
Page generated in 0.0832 seconds