DE102019210562A1 - Method and device for testing software - Google Patents
Method and device for testing software Download PDFInfo
- Publication number
- DE102019210562A1 DE102019210562A1 DE102019210562.9A DE102019210562A DE102019210562A1 DE 102019210562 A1 DE102019210562 A1 DE 102019210562A1 DE 102019210562 A DE102019210562 A DE 102019210562A DE 102019210562 A1 DE102019210562 A1 DE 102019210562A1
- Authority
- DE
- Germany
- Prior art keywords
- software
- test cases
- test
- regression model
- observations
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Verfahren (10) zum Prüfen von Software, gekennzeichnet durch folgende Merkmale:- aus einer Testfallsammlung (21) werden zufällige Eingabedaten (22) für die Software gewonnen (11),- durch eine Clusteranalyse (12) der Eingabedaten (22) werden Testfälle ausgewählt (23),- in den ausgewählten Testfällen werden Beobachtungen (29) hinsichtlich eines Laufzeitverhaltens der Software angestellt (13),- aus den Testfällen und jeweiligen Beobachtungen (29) wird ein Regressionsmodell des Laufzeitverhaltens abgeleitet (14) und- anhand des Regressionsmodelles werden weitere Testfälle erstellt (15) und ausgeführt (24).A method (10) for testing software, characterized by the following features: - random input data (22) for the software are obtained (11) from a test case collection (21), - test cases are selected by a cluster analysis (12) of the input data (22) (23), - in the selected test cases, observations (29) are made with regard to a runtime behavior of the software (13), - a regression model of the runtime behavior is derived from the test cases and respective observations (29) (14) and - based on the regression model, further Test cases created (15) and executed (24).
Description
Die vorliegende Erfindung betrifft ein Verfahren zum Prüfen von Software. Die vorliegende Erfindung betrifft darüber hinaus eine entsprechende Vorrichtung, ein entsprechendes Computerprogramm sowie ein entsprechendes Speichermedium.The present invention relates to a method for testing software. The present invention also relates to a corresponding device, a corresponding computer program and a corresponding storage medium.
Stand der TechnikState of the art
Ein automatisiertes Verfahren für Softwaretests, bei der das zu testende Programm an einer oder mehreren Eingabeschnittstellen wiederholt mit Zufallsdaten beschickt wird, wird in der Softwaretechnik fachsprachlich als Fuzzing bezeichnet. Mit derartigen Zufallsdaten sollen in der Regel sogenannte Abstürze oder andere Ausnahmesituationen im Betrieb des Programms erzeugt werden, die mit anderen Testverfahren nicht eintreten.An automated process for software tests, in which the program to be tested is repeatedly loaded with random data at one or more input interfaces, is technically referred to as fuzzing in software technology. With such random data, so-called crashes or other exceptional situations that do not occur with other test methods are usually to be generated during operation of the program.
Fuzzing wird in Software-Entwicklungs-Projekten nach dem Stand der Technik in der Regel im Rahmen eines Black-Box-Tests angewendet, um neue Software auf Fehleranfälligkeit zu prüfen.Fuzzing is usually used in state-of-the-art software development projects as part of a black box test to check new software for susceptibility to errors.
Bekannt sind ferner sogenannte Grey-Box-Fuzzer wie „American Fuzzy Lop“ (AFL), welche Hilfsprogramme z. B. zur Minimierung der Testfallsammlung, des sogenannten Korpus, umfassen. Durch Instrumentierung des Quellcodes des zu testenden Programms beim Übersetzen kann ein solcher Fuzzer später auswerten, welche Blöcke der Software bei einem bestimmten Test-Stimulus durchlaufen werden, um nach relativ kurzer Zeit eine vergleichsweise hohe Abdeckung des Codes (code coverage) zu erreichen.Also known are so-called gray box fuzzers such as “American Fuzzy Lop” (AFL), which support programs such. B. to minimize the test case collection, the so-called corpus, include. By instrumenting the source code of the program to be tested during translation, such a fuzzer can later evaluate which blocks of the software are run through with a certain test stimulus in order to achieve a comparatively high code coverage after a relatively short time.
Offenbarung der ErfindungDisclosure of the invention
Die Erfindung stellt ein Verfahren zum Prüfen von Software, eine entsprechende Vorrichtung, ein entsprechendes Computerprogramm sowie ein entsprechendes Speichermedium gemäß den unabhängigen Ansprüchen bereit.The invention provides a method for checking software, a corresponding device, a corresponding computer program and a corresponding storage medium according to the independent claims.
Diese Lösung fußt auf der Erkenntnis, dass AFL aus seinem aktuellen Korpus neue Fuzzingeingaben generiert, indem es nach gewissen Strategien vorgeht. Veränderte Testfälle, die innerhalb des Programms neue Zustandsübergänge hervorgerufen haben, werden der Eingabewarteschlange hinzugefügt und als Ausgangspunkt für zukünftige Fuzzing-Runden verwendet. Herkömmliche Fuzzer wie AFL sind hierbei darauf angewiesen, viele Testfälle (mitunter Hunderte oder Tausende pro Sekunde) auszuführen, was für langsame Software - insbesondere solcherlei Softwaresysteme, die irgendeine Form der Datenübertragung benötigen - nicht durchführbar ist. Zurzeit obliegt es dem Entwickler des Fuzz-Wrappers, eine hinreichend schnelle Lösung für dieses Problem zu finden.This solution is based on the knowledge that AFL generates new fuzzy inputs from its current corpus by proceeding according to certain strategies. Modified test cases that have caused new state transitions within the program are added to the input queue and used as a starting point for future fuzzing rounds. Conventional fuzzers such as AFL are dependent on the execution of many test cases (sometimes hundreds or thousands per second), which is not feasible for slow software - especially software systems that require some form of data transmission. It is currently up to the developer of the fuzz wrapper to find a fast enough solution to this problem.
Eine Hauptidee des vorgeschlagenen Ansatzes besteht vor diesem Hintergrund darin, die Eingabewarteschlange oder den Korpus vor der eigentlichen Testausführung einer Ballungsanalyse (clustering) zu unterziehen, um aus jedem Cluster eine optimale Eingabe auszuwählen und das Fuzz-Testing auf diese Weise zu beschleunigen bzw. eine Testmetrik (z. B. Abdeckung) zu maximieren. Das Clustering-Verfahren wird durch maschinelle Lernansätze erlernt.Against this background, a main idea of the proposed approach is to subject the input queue or the corpus to a clustering analysis before the actual test execution in order to select an optimal input from each cluster and in this way to accelerate the fuzz testing or a test metric (e.g. coverage) to maximize. The clustering process is learned through machine learning approaches.
Ein Vorzug dieser Lösung liegt darin, dass anhand bestehender Testfälle, z. B. aus früheren Fuzzing-Läufen, Cluster dergestalt gefunden werden können, dass in der nächsten Fuzzing-Runde nur wenige Tests aus jedem Cluster ausgeführt werden müssen, um die nachfolgenden Erkenntnisse potenziell zu vertiefen. Wenn die Eingaben aus verschiedenen Clustern ausgewählt werden, dann sollten diese Eingaben einen größeren Abstand zueinander haben als zu Eingaben aus demselben Cluster. Auf diese Weise kann der Fuzzer die Testmetrik, beispielsweise die Abdeckung, maximieren, indem er nur wenige Testfälle aus einem großen Korpus ausführt.One advantage of this solution is that based on existing test cases, e.g. B. from previous fuzzing runs, clusters can be found in such a way that only a few tests from each cluster have to be carried out in the next fuzzing round in order to potentially deepen the following findings. If the inputs are selected from different clusters, then these inputs should have a greater distance from one another than to inputs from the same cluster. In this way, the fuzzer can maximize the test metric, such as coverage, by executing only a few test cases from a large corpus.
Diese Idee besticht insbesondere bei langsam laufender Software, da das Clustering nicht nur vor der ersten Testausführung, sondern in jeder Fuzzing-Runde erfolgen kann.This idea is particularly impressive with slow-running software, as clustering can take place not only before the first test run, but in every fuzzing round.
Durch die in den abhängigen Ansprüchen aufgeführten Maßnahmen sind vorteilhafte Weiterbildungen und Verbesserungen des im unabhängigen Anspruch angegebenen Grundgedankens möglich. So kann das Ableiten eines Regressionsmodelles aus den ausgeführten Testfällen durch eine Gaußprozess-Regression vorgesehen sein, da Gaußprozesse (GPs) kontinuierliche Funktionen erlernen, Unsicherheiten modellieren und Vorkenntnisse wie Domänenwissen auf verschiedene Weise - z. B. in Form eines parametrischen Mittelwertes oder einer Kovarianz-Funktion - integrieren können. Darüber hinaus sind GPs unabhängiger von Modellannahmen als parametrische Methoden.The measures listed in the dependent claims enable advantageous developments and improvements of the basic idea specified in the independent claim. So can derive a regression model be provided from the executed test cases by a Gaussian process regression, since Gaussian processes (GPs) learn continuous functions, model uncertainties and prior knowledge such as domain knowledge in different ways - e.g. B. in the form of a parametric mean or a covariance function - can integrate. In addition, GPs are more independent of model assumptions than parametric methods.
FigurenlisteFigure list
Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und in der nachfolgenden Beschreibung näher erläutert. Es zeigt:
-
1 das Flussdiagramm eines Verfahrens gemäß einer ersten Ausführungsform. -
2 das Verfahren eines Fuzzing-Ansatzes, bei dem der Korpus vor der eigentlichen Testfallausführung geclustert wird. -
3 das Verfahren eines Fuzzing-Ansatzes, bei dem nur der Ausgangskorpus in Cluster eingeteilt wird. Danach wird das Fuzzing auf herkömmliche Weise durchgeführt. -
4 schematisch eine Arbeitsstation gemäß einer zweiten Ausführungsform der Erfindung.
-
1 the flow chart of a method according to a first embodiment. -
2 the method of a fuzzing approach, in which the corpus is clustered before the actual test case execution. -
3 the process of a fuzzing approach, in which only the initial body is divided into clusters. Then fuzzing is carried out in the conventional manner. -
4th schematically a work station according to a second embodiment of the invention.
Ausführungsformen der ErfindungEmbodiments of the invention
Ein erster Schritt (Prozess
Nach der beschriebenen Datengenerierung (
Da HDBSCAN einen hierarchischen Baum zur Clustersuche verwendet, ist es möglich, die Stärken der Clusterzugehörigkeit zu ermitteln. Diese sowie die Struktur des Baumes selbst können genutzt werden, um n Testfälle pro Cluster zu untersuchen, auf dieser Grundlage diejenigen Datensätze auszuwählen, die sowohl eine hohe Clusterzugehörigkeit aufweisen als auch in verschiedene Zweige des Baumes fallen, und so letztlich eine hohe Varianz innerhalb des jeweiligen Clusters zu erzielen. Auf diese Weise lässt sich eine Teilmenge Dclust = (x̂i | i = 1 ... n} von Testfällen definieren.Since HDBSCAN uses a hierarchical tree for cluster search, it is possible to determine the strengths of the cluster membership. This, as well as the structure of the tree itself, can be used to examine n test cases per cluster, on this basis to select those data sets that both have a high cluster membership and fall into different branches of the tree, and thus ultimately a high variance within the respective one To achieve clusters. In this way, a subset D clust = (x̂ i | i = 1 ... n} of test cases can be defined.
Die solchermaßen definierte Teilmenge Dclust der Testfälle wird als Eingabe an das Fuzzing-Tool übergeben, das dann die zu testende Software ausführt (Prozess
Aus dem Datensatz Dobs wird ein Regressionsmodell erzeugt (Prozess
Optional kann bei der Anwendung des trainierten Modells aktives Lernen eingesetzt werden, um festzustellen, welche Testfälle stichprobenartig geprüft werden sollen, um das Modell online zu verbessern.When using the trained model, active learning can optionally be used to determine which test cases should be checked on a random basis in order to improve the model online.
Wie oben erwähnt wird das generierte Regressionsmodell verwendet, um die vielversprechendsten Testfälle aus den Clusterdaten Dobs auszuwählen. Diese Auswahl an Testfällen könnte dann für - im Hinblick auf Zeitaufwand und Rechenleistung - aufwändigere Überprüfungen auf Laufzeitfehler genutzt werden, die eine Instrumentierung des Quellkodes erfordern. Es werden daher nur Testfälle ausgeführt, die die Software maximal durchdringen.As mentioned above, the generated regression model is used to select the most promising test cases from the cluster data D obs . This selection of test cases could then be used - in terms of time and computing power - more complex checks for runtime errors that require instrumentation of the source code. Therefore, only test cases that penetrate the software to the maximum are executed.
Dieses Verfahren (
ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN THE DESCRIPTION
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.
Zitierte PatentliteraturPatent literature cited
- EP 3468131 A1 [0004]EP 3468131 A1 [0004]
Claims (10)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102019210562.9A DE102019210562A1 (en) | 2019-07-17 | 2019-07-17 | Method and device for testing software |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102019210562.9A DE102019210562A1 (en) | 2019-07-17 | 2019-07-17 | Method and device for testing software |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102019210562A1 true DE102019210562A1 (en) | 2021-01-21 |
Family
ID=74093691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102019210562.9A Pending DE102019210562A1 (en) | 2019-07-17 | 2019-07-17 | Method and device for testing software |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102019210562A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220198340A1 (en) * | 2020-12-22 | 2022-06-23 | Sas Institute Inc. | Automated machine learning test system |
US11886329B2 (en) | 2020-12-22 | 2024-01-30 | Sas Institute Inc. | Automated machine learning test system |
CN117827685A (en) * | 2024-03-05 | 2024-04-05 | 国网浙江省电力有限公司丽水供电公司 | Fuzzy test input generation method, device, terminal and medium |
-
2019
- 2019-07-17 DE DE102019210562.9A patent/DE102019210562A1/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220198340A1 (en) * | 2020-12-22 | 2022-06-23 | Sas Institute Inc. | Automated machine learning test system |
US11775878B2 (en) * | 2020-12-22 | 2023-10-03 | Sas Institute Inc. | Automated machine learning test system |
US11886329B2 (en) | 2020-12-22 | 2024-01-30 | Sas Institute Inc. | Automated machine learning test system |
CN117827685A (en) * | 2024-03-05 | 2024-04-05 | 国网浙江省电力有限公司丽水供电公司 | Fuzzy test input generation method, device, terminal and medium |
CN117827685B (en) * | 2024-03-05 | 2024-04-30 | 国网浙江省电力有限公司丽水供电公司 | Fuzzy test input generation method, device, terminal and medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102019210562A1 (en) | Method and device for testing software | |
DE102016009032A1 (en) | Machine learning unit, spindle replacement judgment apparatus, control, machine tool, production system and machine learning method capable of judging the necessity of a spindle replacement | |
DE102004024262A1 (en) | Knowledge-based diagnostic system for a complex technical system with two separate knowledge bases for processing technical system data and processing customer complaints | |
DE102005046388A1 (en) | Model-based diagnostics and repair using event logging | |
DE2515297A1 (en) | TESTING SYSTEM FOR LOGICAL NETWORKS WITH SIMULATOR ORIENTED FAULT CHECK GENERATOR | |
DE102011108678A1 (en) | Event-driven data mining method for improving error code settings and isolating errors | |
WO2021121695A1 (en) | Method, apparatus and system for detecting abnormal operating states of a device | |
DE102010052998A1 (en) | Software-centered methodology for checking and confirming error models | |
DE102014102551A1 (en) | Machine and method for evaluating failed software programs | |
DE102018109195A1 (en) | Diagnostic system and method for processing data of a motor vehicle | |
DE102019209540A1 (en) | Process and device for the optimal distribution of test cases on different test platforms | |
DE102022119975A1 (en) | COMBINED TDECQ MEASUREMENT AND TRANSMITTER TUNING USING MACHINE LEARNING | |
DE102005040142A1 (en) | Method for identifying complex diagnostic situations in customer service | |
DE102011086352A1 (en) | Method and diagnostic system to support guided troubleshooting in technical systems | |
DE112021003677T5 (en) | AUTOMATED ASSISTED CIRCUIT VALIDATION | |
DE102020125218A1 (en) | Diagnostic device | |
DE112018006331B4 (en) | Test case generation device, test case generation method and test case generation program | |
EP3407273A1 (en) | Method and system for determining an abnormal state of a system | |
DE102022132047A1 (en) | SYSTEMS AND METHODS FOR DETECTING MANUFACTURING ANOMALIES | |
DE102021132827A1 (en) | Procedure for the automatic investigation of states and transitions of a human-machine interface (HMI) | |
DE102020213891A1 (en) | Computer-implemented method and device for selecting a fuzzing method for testing a program code | |
DE102020206321A1 (en) | Method and device for testing a technical system | |
DE102020205540A1 (en) | Method and device for testing a technical system | |
DE102020206327A1 (en) | Method and device for testing a technical system | |
DE102008004219A1 (en) | Error handling method for e.g. motor vehicle, involves testing components of system i.e. motor vehicle, for errors according to sequences determined by decision tree, where sum of costs for handling errors is kept to be minimum |