TU Darmstadt / ULB / TUprints

Automated Quality-Assurance Techniques for the Modernization of Software-Product Lines

Ruland, Sebastian (2022)
Automated Quality-Assurance Techniques for the Modernization of Software-Product Lines.
Technische Universität Darmstadt
doi: 10.26083/tuprints-00021488
Ph.D. Thesis, Primary publication, Publisher's Version

[img] Text
Dissertation_Sebastian_Ruland.pdf
Copyright Information: CC BY-SA 4.0 International - Creative Commons, Attribution ShareAlike.

Download (7MB)
Item Type: Ph.D. Thesis
Type of entry: Primary publication
Title: Automated Quality-Assurance Techniques for the Modernization of Software-Product Lines
Language: English
Referees: Schürr, Prof. Dr. Andy ; Lochau, Prof. Dr. Malte ; Schaefer, Prof. Dr. Ina
Date: 2022
Place of Publication: Darmstadt
Collation: xiv, 168 Seiten
Date of oral examination: 16 February 2022
DOI: 10.26083/tuprints-00021488
Abstract:

Nowadays, quality assurance for highly configurable software has become increasingly important. One of the most established ways to ensure software quality is testing. For example, old legacy systems are enhanced (called retrofitting) to cope with new Industrie 4.0 demands and the variability of the environments. During retrofitting, changes to the systems must not introduce new bugs, and backward compatibility must be ensured. Additionally, software is often implemented as a software-product line (i.e., a family of similar but distinguishable products) to include the variability. This introduces three challenges for quality assurance in Industrie 4.0. First, testing single and often safety-critical products. Second, ensuring backward compatibility and quality assurance during retrofitting and lastly, to cope with configurability during testing. To automate the generation of test cases for quality assurance, different tools exist. Those tools usually extract test goals for a given program based on a coverage criterion (e.g., statement coverage) and try to create test cases to cover all test goals. Additionally, in different environments, the focus on efficiency (e.g., CPU time) or effectiveness (the number of bugs found) differs. For safety-critical systems (e.g., autonomous systems in Industrie 4.0), software quality is crucial. Therefore, the focus is on effectiveness. In other cases (e.g., certification of systems) the focus is on efficiency due to fixed requirements for testing. Although effectiveness and efficiency often obstruct each other, both, and especially the trade-off between both can be improved. However, currently few studies are concerned with the trade-off during testing and the impact of different test-case generation strategies on the trade-off.This thesis presents novel techniques to increase efficiency, effectiveness and optimize the trade-off for test-case generation. First, we focus on increasing efficiency for single products (e.g., for certification purposes). Since generating test cases for a single product often leads to many test goals, we developed new techniques for test-case generation with many test goals. First, we group test goals into partitions and execute a single reachability analysis for each partition. Second, we combine different analysis techniques to further increase efficiency.We evaluate different partitioning strategies and combine two different analysis techniques with different time limits to study the impact on efficiency. Next, we present novel techniques to increase effectiveness during regression testing (i.e., testing changes, e.g., during retrofitting). The goal of regression testing is to detect bugs introduced due to the changes. However, as bugs are not known beforehand, no test goal exists that guarantees to detect the bug. Still, some test goals lead to test cases with high chances to detect a bug. For example, test goals resulting in test cases leading to different output behaviors compared to the previous program version are usually more effective compared to test cases only traversing the program changes. The methodology developed in this thesis enables us to configure novel test-case generation strategies (and test-suite reduction) to tune the resulting test suite in terms of effectiveness, efficiency, and especially in terms of the trade-off. In our evaluation, we also measured the impact of different parameters of our methodology on effectiveness and efficiency. Lastly, to cope with the configurability of software-product lines, specific testing techniques are needed. One established technique to cope with the configurability during testing is sampling. Sampling derives a set of products from the product line and uses conventional testing techniques for each product. However, the effectiveness of the sample often remains unknown. To this end, we developed a technique based on mutation testing to measure the quality of sampling strategies based on effectiveness and efficiency. All techniques and methodologies developed during this thesis are motivated and explained on a running example and evaluated on real-world and synthetic programs.

Alternative Abstract:
Alternative AbstractLanguage

Qualitätssicherung von hoch-konfigurierbaren Systemen wird heutzutage immer wichtiger. Das Testen ist eine der bewährtesten Methoden, um die Qualität solcher Software zu sichern. Zum Beispiel müssen Altsysteme, die verbessert werden (auch Retrofitting genannt), um mit neuen Ansprüchen im Industrie-4.0-Umfeld und dessen Variabilität umgehen zu können, getestet werden. Während solcher Verbesserung ist es essenziell, dass keine neuen Fehler eingefügt werden und die Systeme rückwärtskompatibel bleiben. Zusätzlich wird die Software oft als Software-Produktlinie (d. h. eine Familie ähnlicher, aber unterscheidbarer Produkte) implementiert, um die Variabilität zu unterstützen. Daraus ergeben sich drei Herausforderungen an die Qualitätssicherung im Industrie-4.0-Kontext. Die erste Herausforderung ist das Testen von einzelnen und oft sicherheitsrelevanten Produkten. Die zweite Herausforderung ist die Sicherstellung der Rückwärtskompatibilität und die Qualitätssicherung während des Retrofittings. Die letzte Herausforderung ist der Umgang mit der Konfigurierbarkeit von Systemen während des Testens. Um die Testfallgenerierung der Qualitätssicherung zu automatisieren, existieren verschiedene Tools. Diese Tools extrahieren für gewöhnlich zuerst Testziele aus einem gegebenen Programm, basierend auf einem Überdeckungskriterium (z. B. Anweisungsüberdeckung), und versuchen Testfälle zu erzeugen, die alle Testziele abdecken. Zusätzlich wird der Schwerpunkt in verschiedenen Branchen unterschiedlich auf die Effizienz (z. B. die CPU-Zeit) oder die Effektivität (die Anzahl der gefundenen Fehler) gelegt. Für sicherheitskritische Systeme (z. B. autonome Systeme in Industrie 4.0) ist die Softwarequalität essenziell. Daher liegt hier der Fokus auf Effektivität. In anderen Fällen (z. B. bei der Zertifizierung von Systemen) liegt der Fokus auf der Effizienz, da die Ansprüche an das Testen bereits vorgeschrieben sind. Auch wenn die Effektivität und die Effizienz sich oft gegenseitig behindern, können beide und vor allem der Trade-Off dennoch verbessert werden. Allerdings gibt es derzeit wenige Studien, die sich mit dem Trade-Off und der Auswirkung von verschiedenen Testfallgenerierungsstrategien befassen. Diese Arbeit entwickelt neuartige Techniken, um die Effizienz, Effektivität und den Trade-off bei der Testfallgenerierung zu optimieren. Zuerst gehen wir auf neue Verbesserungen der Effizienz bei der Testfallgenerierung einzelner Produkte (z. B. für Zertifizierungen) ein. Da die Testfallgenerierung für einzelne Produkte oft viele Testziele beinhaltet, haben wir für dieses Szenario ein neues Verfahren entwickelt. Dazu gruppieren wir die Testziele zuerst in sogenannte Partitionen und führen für jede Partition eine Erreichbarkeitsanalyse durch. Zusätzlich kombinieren wir verschiedene Analysetechniken, um die Effizienz weiter zu steigern. Außerdem evaluieren wir verschiedene Partitionierungsstrategien und kombinieren diese mit zwei verschiedenen Analysetechniken mit unterschiedlichen Zeitlimits, um die Auswirkungen auf die Effizienz zu untersuchen. Als Nächstes präsentieren wir eine neue Technik, um die Effektivität während des Regressionstestens zu erhöhen (d. h. dem Testen von Änderungen, z. B. während des Retrofittings). Das Ziel von Regressionstesten ist die Erkennung von Fehlern, die durch die Änderungen neu eingeführt wurden. Allerdings sind Fehler nicht vorher bekannt, daher gibt es keine Testziele, die die Detektion von Fehlern garantieren. Dennoch gibt es Testziele, die zu Testfällen führen, die mit hoher Wahrscheinlichkeit Fehler finden. Zum Beispiel gibt es Testziele, die zu Testfällen führen, die ein unterschiedliches Verhalten des neuen Programms im Gegensatz zum alten Programm aufzeigen. Diese Testfälle sind in der Regel effektiver im Vergleich zu Testfällen, die die Änderungsstellen nur erreichen. In dieser Arbeit haben wir eine Methode entwickelt, die es uns erlaubt eine Konfigurierung neuer Testfallgenerierungsstrategien (und Testsuite Reduktion), um die resultierende Testsuite hinsichtlich ihrer Effektivität, Effizienz und dem Trade-off zu justieren. Zuletzt, um die Konfigurierbarkeit von Software-Produktlinien zu bewältigen, sind bestimmte Techniken für das Testen notwendig. Eine sehr etablierte Technik ist das Sampling. Dazu wird eine Menge an Produkten aus der Produktlinie abgeleitet und diese dann mit konventionellen Testmethoden getestet. Allerdings ist die Effektivität eines Sampling-Verfahrens oft nicht bekannt. Aus diesem Grund haben wir eine Technik entwickelt, die basierend auf Mutationstesten die Qualität von samplebasierten Strategien hinsichtlich ihrer Effektivität und Effizienz misst. Alle Techniken und Methoden, die in dieser Arbeit entwickelt wurden, werden anhand eines Beispiels motiviert und erklärt sowie zusätzlich anhand von Echtwelt- und synthetischen Programmen evaluiert.

German
Status: Publisher's Version
URN: urn:nbn:de:tuda-tuprints-214888
Classification DDC: 000 Generalities, computers, information > 004 Computer science
Divisions: 18 Department of Electrical Engineering and Information Technology > Institute of Computer Engineering > Real-Time Systems
Date Deposited: 18 Aug 2022 12:02
Last Modified: 16 Dec 2022 13:28
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/21488
PPN: 499076664
Export:
Actions (login required)
View Item View Item