389 research outputs found
Reducing Object-Oriented Testing Cost Through the Analysis of Antipatterns
RÉSUMÉ
Les tests logiciels sont d’une importance capitale dans nos sociétés numériques. Le bon fonctionnement de la plupart des activités et services dépendent presqu’entièrement de la disponibilité et de la fiabilité des logiciels. Quoique coûteux, les tests logiciels demeurent le meilleur
moyen pour assurer la disponibilité et la fiabilité des logiciels. Mais les caractéristiques du paradigme orienté-objet—l’un des paradigmes les plus utilisés—complexifient les activités de tests. Cette thèse est une contribution à l’effort considérable que les chercheurs ont investi
ces deux décennies afin de proposer des approches et des techniques qui réduisent les coûts de test des programmes orientés-objet et aussi augmentent leur efficacité.
Notre première contribution est une étude empirique qui vise à évaluer l’impact des antipatrons sur le coût des tests unitaires orienté-objet. Les antipatrons sont des mauvaises solutions à des problèmes récurrents de conception et d’implémentation. De nombreuses études empiriques ont montré l’impact négatif des antipatrons sur plusieurs attributs de qualité logicielle notamment la compréhension et la maintenance des programmes. D’autres études ont également révélé que les classes participant aux antipatrons sont plus sujettes aux changements et aux fautes. Néanmoins, aucune étude ne s’est penchée sur l’impact que ces antipatrons pourraient avoir sur les tests logiciels. Les résultats de notre étude montrent que les antipatrons ont également un effet négatif sur le coût des tests : les classes participants aux antipatrons
requièrent plus de cas de test que les autres classes. De plus, bien que le test des antipatrons soit coûteux, l’étude révèle aussi que prioriser leur test contribuerait à détecter plutôt les fautes.
Notre seconde contribution se base sur les résultats de la première et propose une nouvelle approche au problème d’ordre d’intégration des classes. Ce problème est l’un des principaux défis du test d’intégration des classes. Plusieurs approches ont été proposées pour résoudre ce
problème mais la plupart vise uniquement à réduire le coût des stubs quand l’approche que nous proposons vise la réduction du coût des stubs et l’augmentation de la détection précoce des fautes. Pour ce faire, nous priorisons les classes ayant une grande probabilité de défectuosité, comme celles participant aux antipatrons. L’évaluation empirique des performances de notre approche a montré son habilité à trouver des compromis entre les deux objectifs.
Comparée aux approches existantes, elle peut donc aider les testeurs à trouver des ordres d’intégration qui augmentent la capacité de détection précoce des fautes tout en minimisant le coût de stubs à développer.
Dans notre troisième contribution, nous proposons d’analyser et améliorer l’utilisabilité de Madum, une stratégie de test unitaire spécifique à l’orienté-objet. En effet, les caractéristiques inhérentes à l’orienté-objet ont rendu insuffisants les stratégies de test traditionnelles telles que les tests boîte blanche ou boîte noire. La stratégie Madum, l’une des stratégies proposées
pour pallier cette insuffisance, se présente comme une bonne candidate à l’automatisation car elle ne requiert que le code source pour identifier les cas de tests. Automatiser Madum pourrait donc contribuer à mieux tester les classes en général et celles participant aux antipatrons
en particulier tout en réduisant les coûts d’un tel test. Cependant, la stratégie de test Madum ne définit pas de critères de couverture. Les critères de couverture sont un préalable à l’automatisation et aussi à la bonne utilisation de la stratégie de test. De plus, l’analyse des
fondements de cette stratégie nous montre que l’un des facteurs clés du coût des tests basés sur Madum est le nombre de "transformateurs" (méthodes modifiant la valeur d’un attribut donné). Pour réduire les coûts de tests et faciliter l’utilisation de Madum, nous proposons des restructurations du code qui visent à réduire le nombre de transformateurs et aussi des critères de couverture qui guideront l’identification des données nécessaires à l’utilisation de cette stratégie de test.
Ainsi, partant de la connaissance de l’impact des antipatrons sur les tests orientés-objet, nous contributions à réduire les côuts des tests unitaires et d’intégration.----------ABSTRACT
Our modern society is highly computer dependent. Thus, the availability and the reliability of programs are crucial. Although expensive, software testing remains the primary means to ensure software availability and reliability. Unfortunately, the main features of the objectoriented
paradigm (OO)—one of the most popular paradigms—complicate testing activities.
This thesis is a contribution to the global effort to reduce OO software testing cost and to increase its reliability. Our first contribution is an empirical study to gather evidence on the impact of antipatterns
on OO unit testing. Antipatterns are recurring and poor design or implementation choices.
Past and recent studies showed that antipatterns negatively impact many software quality attributes, such as maintenability and understandability. Other studies also report that antipatterns are more change- and defect-prone than other classes. However, our study is the first regarding the impact of antipatterns on the cost of OO unit testing. The results show that indeed antipatterns have a negative effect on OO unit testing cost: AP classes are in
general more expensive to test than other classes. They also reveal that testing AP classes in priority may be cost-effective and may allow detecting most of the defects and early. Our second contribution is a new approach to the problem of class integration test order (CITO) with the goals of minimizing the cost related to the order and increasing early defect detection. The CITO problem is one of the major problems when integrating classes in OO programs. Indeed, the order in which classes are tested during integration determines the cost (stubbing cost) but also the order on which defects are detected. Most approaches proposed to solve the CITO problem focus on minimizing the cost of stubs. In addition to this goal, our approach aims to increase early defect detection apability, which is one of the most important objectives in testing. Early defect detection allows detecting defects early
and thus increases the cost-effectiveness of testing. An empirical study shows the superiority of our approach over existing approaches to provide balanced orders: orders that minimize stubbing cost while maximizing early defect detection.
In our third contribution, we analyze and improve the usability of Madum testing, one of the unit testing strategies proposed to overcome the limitations of traditional testing when testing OO programs. Opposite to other OO unit testing, Madum testing requires only the source code to identify test cases. Madum testing is thus a good candidate for automation, which is one of the best ways to reduce testing cost and increase reliability.
Automatizing Madum testing can help to test thoroughly AP classes while reducing the testing cost. However, Madum testing does not define coverage criteria that are a prerequisite for using the strategy and also automatically generating test data. Moreover, one of the key factors in the cost of using Madum testing is the number of transformers (methods that modify a given attribute). To reduce testing cost and increase the easiness of using Madum
testing, we propose refactoring actions to reduce the number of transformers and formal coverage criteria to guide in generating Madum test data. We also formulate the problem of generating test data for Madum testing as a search-based problem.
Thus, based on the evidence we gathered from the impact of antipatterns on OO testing, we reduce the cost of OO unit and integration testing
Enhancing the Process of Testing Object -Oriented Systems.
Testing is a crucial step in the overall system development process. Using testing techniques that support features of the underlying software paradigm more effectively tests program than do testing techniques that support features of other paradigms. Systems developed with the object-oriented paradigm require techniques that support object-oriented features such as inheritance, data abstraction, encapsulation, and dynamic binding. Many techniques that are used to test systems developed with the structured paradigm are not sufficient for the testing of object-oriented systems. The goal of this research is to develop methods that will improve the process of testing object-oriented systems. Specifically, emphasis is given to improving the level of testing of methods because the level of method testing is generally considered inadequate. Algorithms are included that identify the set of methods, both interobject and intraobject, that should be tested for a given system. These algorithms are implemented as a part of an automated testing system that derives a framework for the testing of methods. This system includes the automatic generation of test drivers to facilitate the testing. It captures the results of tests for the purposes of reuse for future system maintenance. This framework provides the software engineer who is testing a system a mechanism to determine the level of method coverage that has been achieved in the testing process
An Approach for the Generation of Multi-Objective Algorithms Applied to the Integration and Test Order Problem
Multi-Objective Evolutionary Algorithms (MOEAs) have been successfully applied to solve hard real software engineering problems. However, to choose and design a MOEA is considered a difficult task, since there are several parameters and components to be configured. These aspects directly impact the generated solutions and the performance of MOEAs. In this sense, this paper proposes an approach for the automatic generation of MOEAs applied to the Integration and Test Order (ITO) problem. Such a problem refers to the generation of optimal sequences of units for integration testing. The approach includes a set of parameters and components of different MOEAs, and is implemented with two design algorithms: Grammatical Evolution (GE) and Iterated Racing (irace). Evaluation results are presented, comparing the MOEAs generated by both design algorithms. Furthermore, the generated MOEAs are compared to two well-known MOEAs used in the literature to solve the ITO problem. Results show that the MOEAs generated with GE and irace perform similarly, and both outperform traditional MOEAs. The approach can reduce efforts spent to design and configure MOEAs, and serves as basis for implementing solutions to other software engineering problems
Recommended from our members
Complete spatial safety for C and C++ using CHERI capabilities
Lack of memory safety in commonly used systems-level languages such as C and C++ results in a constant stream of new exploitable software vulnerabilities and exploit techniques. Many exploit mitigations have been proposed and deployed over the years, yet none address the root issue: lack of memory safety. Most C and C++ implementations assume a memory model based on a linear array of bytes rather than an object-centric view. Whilst more efficient on contemporary CPU architectures, linear addresses cannot encode the target object, thus permitting memory errors such as spatial safety violations (ignoring the bounds of an object). One promising mechanism to provide memory safety is CHERI
(Capability Hardware Enhanced RISC Instructions), which extends existing processor architectures with capabilities that provide hardware-enforced checks for all accesses and can be used to prevent spatial memory violations. This dissertation prototypes and evaluates a pure-capability programming model (using CHERI capabilities for all pointers) to provide complete spatial memory protection for traditionally unsafe languages.
As the first step towards memory safety, all language-visible pointers can be implemented as capabilities. I analyse the programmer-visible impact of this change and refine the pure-capability programming model to provide strong source-level compatibility with existing code. Second, to provide robust spatial safety, language-invisible pointers (mostly arising from program linkage) such as those used for functions calls and global variable accesses must also be protected. In doing so, I highlight trade-offs between performance and privilege minimization for implicit and programmer-visible pointers. Finally, I present
CheriSH, a novel and highly compatible technique that protects against buffer overflows between fields of the same object, hereby ensuring that the CHERI spatial memory protection is complete.
I find that the byte-granular spatial safety provided by CHERI pure-capability code is not only stronger than most other approaches, but also incurs almost negligible performance overheads in common cases (0.1% geometric mean) and a worst-case overhead of only 23.3% compared to the insecure MIPS baseline. Moreover, I show that the pure-capability programming model provides near-complete source-level compatibility with existing programs. I evaluate this based on porting large widely used open-source applications such as PostgreSQL and WebKit with only minimal changes: fewer than 0.1% of source lines.
I conclude that pure-capability CHERI C/C++ is an eminently viable programming environment offering strong memory protection, good source-level compatibility and low performance overheads
Combining SOA and BPM Technologies for Cross-System Process Automation
This paper summarizes the results of an industry case study that introduced a cross-system business process automation solution based on a combination of SOA and BPM standard technologies (i.e., BPMN, BPEL, WSDL). Besides discussing major weaknesses of the existing, custom-built, solution and comparing them against experiences with the developed prototype, the paper presents a course of action for transforming the current solution into the proposed solution. This includes a general approach, consisting of four distinct steps, as well as specific action items that are to be performed for every step. The discussion also covers language and tool support and challenges arising from the transformation
Plug-and-Participate for Limited Devices in the Field of Industrial Automation
Ausgangspunkt und gleichzeitig Motivation dieser
Arbeit ist die heutige Marktsituation: Starke KundenbedĂĽrfnisse
nach individuellen GĂĽtern stehen oftmals eher auf
Massenproduktion ausgerichteten Planungs- und
Automatisierungssystemen gegenĂĽber - die Befriedigung
individueller Kundenbedürfnisse setzt aber Flexibilität und
Anpassungsfähigkeit voraus. Ziel dieser Arbeit ist es daher,
einen Beitrag zu leisten, der es Unternehmen ermöglichen soll,
auf diese individuellen BedĂĽrfnisse flexibel reagieren zu
können. Hierbei kann es im Rahmen der Dissertation natürlich
nicht um eine Revolutionierung der gesamten Automatisierungs-
und Planungslandschaft gehen; vielmehr ist die Lösung, die der
Autor der Arbeit präsentiert, ein integraler Bestandteil eines
Automatisierungskonzeptes, das im Rahmen des PABADIS Projektes
entwickelt wurde: Während PABADIS das gesamte Spektrum von
Planung und Maschineninfrastruktur zum Inhalt hat, bezieht sich
der Kern dieser Arbeit weitestgehend auf den letztgenannten
Punkt - Maschineninfrastruktur. Ziel war es, generische
Maschinenfunktionalität in einem Netzwerk anzubieten, durch das
Fertigungsaufträge selbstständig navigieren. Als Lösung
präsentiert diese Dissertation ein Plug-and-Participate
basiertes Konzept, welches beliebige Automatisierungsfunktionen
in einer spontanen Gemeinschaft bereitstellt. Basis ist ein
generisches Interface, in dem die generellen Anforderungen
solcher ad-hoc Infrastrukturen aggregiert sind. Die
Implementierung dieses Interfaces in der PABADIS
Referenzimplementierung sowie die GegenĂĽberstellung der
Systemanforderungen und Systemvoraussetzungen zeigte, das
klassische Plug-and-Participate Technologien wie Jini und UPnP
aufgrund ihrer Anforderungen nicht geeignet sind -
Automatisierungsgeräte stellen oftmals nur eingeschränkte
Ressourcen bereit. Daher wurde als zweites Ergebnis neben dem
Plug-and-Participate basierten Automatisierungskonzept eine
Plug-and-Participate Technologie entwickelt - Pini - die den
Gegebenheiten der Automatisierungswelt gerecht wird und
schlieĂźlich eine Anwendung von PABADIS auf heutigen
Automatisierungsanlagen erlaubt. Grundlegende Konzepte von
Pini, die dies ermöglichen, sind die gesamte Grundarchitektur
auf Basis eines verteilten Lookup Service, die Art und Weise
der Dienstrepräsentation sowie die effiziente Nutzung der
angebotenen Dienste. Mit Pini und darauf aufbauenden Konzepten
wie PLAP ist es nun insbesondere möglich,
Automatisierungssysteme wie PABADIS auf heutigen Anlagen zu
realisieren. Das wiederum ist ein Schritt in Richtung
Kundenorientierung - solche Systeme sind mit Hinblick auf
Flexibilität und Anpassungsfähigkeit gestaltet worden, um
KundenbedĂĽrfnissen effizient gerecht zu werden
Plug-and-Participate for Limited Devices in the Field of Industrial Automation
Ausgangspunkt und gleichzeitig Motivation dieser
Arbeit ist die heutige Marktsituation: Starke KundenbedĂĽrfnisse
nach individuellen GĂĽtern stehen oftmals eher auf
Massenproduktion ausgerichteten Planungs- und
Automatisierungssystemen gegenĂĽber - die Befriedigung
individueller Kundenbedürfnisse setzt aber Flexibilität und
Anpassungsfähigkeit voraus. Ziel dieser Arbeit ist es daher,
einen Beitrag zu leisten, der es Unternehmen ermöglichen soll,
auf diese individuellen BedĂĽrfnisse flexibel reagieren zu
können. Hierbei kann es im Rahmen der Dissertation natürlich
nicht um eine Revolutionierung der gesamten Automatisierungs-
und Planungslandschaft gehen; vielmehr ist die Lösung, die der
Autor der Arbeit präsentiert, ein integraler Bestandteil eines
Automatisierungskonzeptes, das im Rahmen des PABADIS Projektes
entwickelt wurde: Während PABADIS das gesamte Spektrum von
Planung und Maschineninfrastruktur zum Inhalt hat, bezieht sich
der Kern dieser Arbeit weitestgehend auf den letztgenannten
Punkt - Maschineninfrastruktur. Ziel war es, generische
Maschinenfunktionalität in einem Netzwerk anzubieten, durch das
Fertigungsaufträge selbstständig navigieren. Als Lösung
präsentiert diese Dissertation ein Plug-and-Participate
basiertes Konzept, welches beliebige Automatisierungsfunktionen
in einer spontanen Gemeinschaft bereitstellt. Basis ist ein
generisches Interface, in dem die generellen Anforderungen
solcher ad-hoc Infrastrukturen aggregiert sind. Die
Implementierung dieses Interfaces in der PABADIS
Referenzimplementierung sowie die GegenĂĽberstellung der
Systemanforderungen und Systemvoraussetzungen zeigte, das
klassische Plug-and-Participate Technologien wie Jini und UPnP
aufgrund ihrer Anforderungen nicht geeignet sind -
Automatisierungsgeräte stellen oftmals nur eingeschränkte
Ressourcen bereit. Daher wurde als zweites Ergebnis neben dem
Plug-and-Participate basierten Automatisierungskonzept eine
Plug-and-Participate Technologie entwickelt - Pini - die den
Gegebenheiten der Automatisierungswelt gerecht wird und
schlieĂźlich eine Anwendung von PABADIS auf heutigen
Automatisierungsanlagen erlaubt. Grundlegende Konzepte von
Pini, die dies ermöglichen, sind die gesamte Grundarchitektur
auf Basis eines verteilten Lookup Service, die Art und Weise
der Dienstrepräsentation sowie die effiziente Nutzung der
angebotenen Dienste. Mit Pini und darauf aufbauenden Konzepten
wie PLAP ist es nun insbesondere möglich,
Automatisierungssysteme wie PABADIS auf heutigen Anlagen zu
realisieren. Das wiederum ist ein Schritt in Richtung
Kundenorientierung - solche Systeme sind mit Hinblick auf
Flexibilität und Anpassungsfähigkeit gestaltet worden, um
KundenbedĂĽrfnissen effizient gerecht zu werden
Electronic systems for intelligent particle tracking in the High Energy Physics field
This Ph.D thesis describes the development of a novel readout ASIC for hybrid pixel detector with intelligent particle tracking capabilities in High Energy Physics (HEP) application, called Macro Pixel ASIC (MPA). The concept of intelligent tracking is introduced for the upgrade of the particle tracking system of the Compact Muon Solenoid (CMS) experiment of the Large Hadron Collider (LHC) at CERN: this detector must be capable of selecting at front--end level the interesting particle and of providing them continuously to the back-end. This new functionality is required to cope with the improved performances of the LHC when, in about ten years' time, a major upgrade will lead to the High Luminosity scenario (HL-LHC). The high complexity of the digital logic for particle selection and the very low power requirement of 95% in particle selection and a data reduction from 200 Tb/s/cm2 to 1 Tb/s/cm2. A prototype, called MPA-Light, has been designed, produced and tested. According to the measurements, the prototype respects all the specications. The same device has been used for multi-chip assembly with a pixelated sensor. The assembly characterization with radioactive sources conrms the result obtained on the bare chip
- …