58 research outputs found

    A case study in statistical testing of reusable concurrent objects

    Get PDF
    Abstract. A test strategy is presented which makes use of the information got from OO analysis and design documents to determine the testing levels (unit, integration) and the associated test objectives. It defines solutions for some of the OO testing issues: here, emphasis is put on applications which consist of concurrent objects linked by client-server relationships. Two major concerns have guided the choice of the proposed techniques: component reusability, and nondeterminism induced by asynchronous communication between objects. The strategy is illustrated on a control program for an existing production cell taken from a metal-processing plant in Karlsruhe. The program was developed using the Fusion method and implemented in Ada 95. We used a probabilistic method for generating test inputs, called statistical testing. Test experiments were conducted from the unit to the system levels, and a few errors were detected

    Prévention et détection des interférences inter-aspects (méthode et application à l'aspectisation de la tolérance aux fautes)

    Get PDF
    La programmation orientĂ©e aspects (POA) sĂ©pare les diffĂ©rentes prĂ©occupations composant un systĂšme informatique pour amĂ©liorer la modularitĂ©. La POA offre de nombreux bĂ©nĂ©fices puisqu'elle permet de sĂ©parer le code fonctionnel du code non-fonctionnel amĂ©liorant ainsi leur rĂ©utilisation et la configurabilitĂš des systĂšmes informatiques. La configurabilitĂ© est un Ă©lĂ©ment essentiel pour assurer la rĂ©silience des systĂšmes informatiques, puisqu elle permet de modifier les mĂ©canismes de sĂ»retĂ© de fonctionnement. Cependant le paradigme de programmation orientĂ©e aspect introduit de nouveaux dĂ©fis pour le test. Dans les systĂšmes de grande taille oĂč plusieurs prĂ©occupations non fonctionnelles cohabitent, une implĂ©mentation Ă  l'aide d'aspects de ces prĂ©occupations peut ĂȘtre problĂ©matique. Partageant le mĂȘme flot de donnĂ©es et le mĂȘme flot de contrĂŽle les aspects implĂ©mentant les diffĂ©rentes prĂ©occupations peuvent Ă©crire dans des variables lues par d'autres aspects ou interrompre le flot de contrĂŽle commun aux diffĂ©rents aspects empĂȘchant ainsi l'exĂ©cution de certains d'entre eux. Dans cette thĂšse nous nous intĂ©ressons plus spĂ©cifiquement aux interfĂ©rences entre aspects dans le cadre du dĂ©veloppement de mĂ©canismes de tolĂ©rance aux fautes implĂ©mentĂ©s sous forme d aspects. Ces interfĂ©rences sont dues Ă  une absence de dĂ©claration de prĂ©cĂ©dence entre les aspects ou Ă  une dĂ©claration de prĂ©cĂ©dence erronĂ©e. Afin de mieux maĂźtriser l assemblage des diffĂ©rents aspects composant un mĂ©canisme de tolĂ©rance aux fautes, nous avons dĂ©veloppĂ© une mĂ©thode alliant l'Ă©vitement Ă  la dĂ©tection des interfĂ©rences au niveau du code. Le but de l'Ă©vitement est d'empĂȘcher l'introduction d'interfĂ©rences en imposant une dĂ©claration de prĂ©cĂ©dence entre les aspects lors de l'intĂ©gration des aspects. La dĂ©tection permet d'exhiber lors du test les erreurs introduites dans la dĂ©claration des prĂ©cĂ©dences. Ces deux facettes de notre approche sont rĂ©alisĂ©es grĂące Ă  l utilisation d une extension d'AspectJ appelĂ©e AIRIA. Les constructions d'AIRIA permettent l instrumentation et donc la dĂ©tection des interfĂ©rences entre aspects, avec des facilitĂ©s de compilation permettant de mettre en Ɠuvre l Ă©vitement d interfĂ©rences. Notre approche est outillĂ©e et vise Ă  limiter le temps de dĂ©boguage : le testeur peut se concentrer directement sur les points oĂč une interfĂ©rence se produit. Nous illustrons notre approche sur une Ă©tude de cas: un protocole de rĂ©plication duplex. Dans ce contexte le protocole est implĂ©mentĂ© en utilisant des aspects Ă  grain fin permettant ainsi une meilleure configurabilitĂ© de la politique de rĂ©plication. Nous montrons que l'assemblage de ces aspects Ă  grain fin donne lieu Ă  des interfĂ©rences de flot de donnĂ©es et flot de contrĂŽle qui sont dĂ©tectĂ©es par notre approche d'instrumentation. Nous dĂ©finissons un ensemble d'aspects interfĂ©rant pour l'exemple, et nous montrons comment notre approche permet la dĂ©tection d'interfĂ©rences.Aspect-oriented programming (AOP) separates the different concerns of a computer software system to improve modularity. AOP offers many benefits since it allows separating the functional code from the non-functional code, thus improving reuse and configurability of computer systems. Configurability is essential to ensure the resilience of computer systems, since it allows modifying the dependability mechanisms. However, the paradigm of aspectoriented programming introduces new challenges regarding testing. In large systems where multiple non-functional concerns coexist, an AOP implementation of these concerns can be problematic. Sharing the same data flow and the same control flow, aspects implementing different concerns can write into variables read by other aspects, or interrupt the control flow involving various aspects, and thus preventing the execution of some aspects in the chain. In this work we focus more specifically on interference between aspects implementing fault tolerance mechanisms. This interference is due to a lack of declaration of fine-grain precedence between aspects or an incorrect precedence declaration. To better control the assembly of the various aspects composing fault tolerance mechanisms, we have developed a method combining avoidance of interferences with runtime detection interferences at code level. The purpose of avoidance is to prevent the introduction of interference by requiring a statement of precedence between aspects during the aspects integration. Detection allows exhibiting during the test, errors introduced in the precedence statement. These two aspects of our approach are performed through the use of an extension called AspectJ AIRIA. AIRIA s constructs allow instrumentation and therefore the detection of interference between aspects, with facilities compilation to implement the interference avoidance. Our approach is designed and equipped to limit the debugging time : the tester can focus directly on the points where an interference occurs. Finaly, we illustrate our approach on a case study : a duplex replication protocol. In this context, the protocol is implemented using fine grained aspects allowing a better configurability of the replication policy.We show that the assembly of these fine-grained aspects gives rise to interference data flow and control flow that are detected by our instrumentation approach. We define a set of interfering aspects in this example, and show how our approach allows the detection of interferences.TOULOUSE-INP (315552154) / SudocSudocFranceF

    Fine-Grained Implementation of Fault Tolerance Mechanisms with AOP: To What Extent?

    Get PDF
    Abstract: The benefits of using aspect oriented programming (AOP) for separation of concerns is well-known and has been demonstrated in many works, including for dependable computing. In this paper, we use this composition capability of AOP to develop micro-aspects that can be combined together to realize a given fault tolerance mechanism. The toolbox of microaspects can be used to make mechanisms easily configurable and by the way to simplify their update. We show that the composition of micro aspects leads to undesirable side effects of the interactions between them, called interferences. We propose an approach to detect interferences with executable assertions, using an extension of AspectJ called AIRIA that enables control over an aspect chain at a shared join point. We finally draw the lessons learnt and discuss to what extent AOP can be used to develop fault tolerance mechanisms

    Elimination des fautes : contribution au test du logiciel

    No full text
    The research summarized in this report focuses on the dependability of computer systems. It adresses fault removal by means of software testing. The contributions are grouped into four chapters. Chapter I presents work seeking to adapt the test design to software development technologies. It considers both object-­‐oriented development and the formal B method. Chapter II investigates ways of coupling testing and formal verification. The aim may be to consolidate the verification of partially proved algorithms, or to aid in the analysis of counterexamples obtained from a model checker. Chapter III concerns search-­‐based test generation, taking the example of simulated annealing search. It focuses on a measurement approach to tune the parameters of the metaheuristics. Finally, Chapter IV tackles testing of mobile computing systems. Test traces are checked with respect to properties described in graphical scenarios. The checking involves both graph matching and event order analysis.Les travaux rĂ©sumĂ©s dans ce mĂ©moire ont pour cadre la sĂ»retĂ© de fonctionnement des systĂšmes informatiques. Ils portent sur l'Ă©limination des fautes, en s'intĂ©ressant plus particuliĂšrement au test du logiciel. Les contributions sont regroupĂ©es en quatre chapitres. Le premier chapitre rassemble des travaux pour adapter la conception du test aux technologies de dĂ©veloppement logicielles. Deux technologies sont considĂ©rĂ©es : la technologie orientĂ©e-­‐objet et la mĂ©thode formelle B. Le deuxiĂšme chapitre porte sur des associations test et vĂ©rification formelle. Il s'agit selon les cas de consolider la vĂ©rification d'algorithmes partiellement prouvĂ©s, ou de faciliter l'analyse de contrexemples retournĂ©s par un model checker. Le troisiĂšme chapitre traite de la gĂ©nĂ©ration de test par des procĂ©dĂ©s mĂ©taheuristiques, en prenant l'exemple du recuit simulĂ©. L'accent est mis sur l'utilisation de mesures pour guider le paramĂ©trage de la mĂ©taheuristique. Enfin, le quatriĂšme chapitre aborde le test de systĂšmes mobiles. Lestraces d'exĂ©cutions sont vĂ©rifiĂ©es par rapport Ă  un ensemble de propriĂ©tĂ©s dĂ©crites par des scĂ©narios graphiques, en combinant des algorithmes d'appariement de graphes et de calcul d'ordres partiels d'Ă©vĂ©nements

    Les défis du Test Logiciel - Bilan et Perspectives

    No full text
    International audienceCe document dresse un bilan des défis identifiés par le groupe de travail Méthodes de Test pour la Vérification et la Validation (MTV2) lors de l'appel lancé par le GDR GPL en 2010. Pour chaque défi initialement identifié, nous évaluons si des réponses ont été apportées durant ces 4 derniÚres années, nous présentons les éventuelles avancées réalisées, et proposons le cas échéant de nouveaux défis liés aux technologies émergentes

    Emerging high assurance solutions for safe, secure, and reliable software systems

    No full text
    International audienceThis editorial introduces the special issue on High Assurance Systems Engineering concepts for safe, secure, and reliable software systems in the Journal of Software: Evolution and Process. The nine papers published in this special issue were selected from extended versions of papers presented at the 2016 IEEE International Symposium on High Assurance Systems Engineering (HASE 2016) held in Orlando, Florida, through a highly competitive review process. The papers propose and discuss emerging solutions that address at least one of the three characteristics identified as foundational requirements to design, verify, and operate contemporary high assurance software systems: safety, security, and reliability, though, several papers consider a combination of these requirements, by modeling software system dependability and/or system resilience in the face of operational changes. The modeling aspects of the papers include fault‐tolerant design and analysis, online logic adaptation, decision and risk analysis, malware detection, and disaster management solutions, as well as several formalized testing and verification techniques

    Adding Contextual Guidance to the Automated Search for Probabilistic Test Profiles

    No full text
    International audienceStatistical testing is a probabilistic approach to test data generation that has been demonstrated to be very effective at revealing faults. Its premise is to compensate for the imperfect connection between coverage criteria and the faults to be revealed by exercising each coverage element several times with different random data. The cornerstone of the approach is the often complex task of determining a suitable input profile, and recent work has shown that automated metaheuristic search can be a practical method of synthesising such profiles. The starting point of this paper is the hypothesis that, for some software, the existing grammar-based representation used by the search algorithm fails to capture important relationships between input arguments and this can limit the fault-revealing power of the synthesised profiles. We provide evidence in support of this hypothesis, and propose a solution in which the user provides some basic contextual knowledge to guide the search. Empirical results for two case studies are promising: knowledge gained by a very straightforward review of the software-under-test is sufficient to dramatically increase the efficacy of the profiles synthesised by search

    Test guidé par la preuve (Application à la vérification d'algorithmes de tolérance aux fautes)

    No full text
    INIST-CNRS (INIST), under shelf-number: RP 17272 / SudocSudocFranceF

    Test guidé par la preuve (Application à la vérification d'algorithmes de tolérance aux fautes)

    No full text
    INIST-CNRS (INIST), under shelf-number: RP 17272 / SudocSudocFranceF
    • 

    corecore