DE202017105654U1 - Testen von Anwendungen mit einem definierten Eingabeformat - Google Patents

Testen von Anwendungen mit einem definierten Eingabeformat Download PDF

Info

Publication number
DE202017105654U1
DE202017105654U1 DE202017105654.6U DE202017105654U DE202017105654U1 DE 202017105654 U1 DE202017105654 U1 DE 202017105654U1 DE 202017105654 U DE202017105654 U DE 202017105654U DE 202017105654 U1 DE202017105654 U1 DE 202017105654U1
Authority
DE
Germany
Prior art keywords
value
text
text element
document
values
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.)
Active
Application number
DE202017105654.6U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202017105654U1 publication Critical patent/DE202017105654U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Machine Translation (AREA)

Abstract

Computerlesbares Speichermedium, das mit Anweisungen codiert ist, die dann, wenn sie durch wenigstens einen Prozessor einer Computervorrichtung ausgeführt werden, bewirken, dass der wenigstens eine Prozessor Operationen ausführt, die umfassen: Empfangen einer Folge von Werten von Textelementen; Bestimmen mit einer oder mehreren Computervorrichtungen einer Bewertung für einen Textelementwert der Folge, wobei sich die Bewertung auf die Wahrscheinlichkeit bezieht, dass ein spezieller Textelementwert gleich einem oder mehreren gegeben Werten ist, und wobei die Wahrscheinlichkeit auf Folgen von Textelementwerten basiert, die mit einem definierten Format konsistent sind; Vergleichen mit der einen oder den mehreren Computervorrichtungen der Bewertung mit einem Schwellenwert; wenn die Bewertung unterhalb eines Schwellenwerts ist, Modifizieren mit der einen oder den mehreren Computervorrichtungen des Wertes des Textelements, um eine modifizierte Folge von Textelementwerten zu bilden; Verarbeiten mit der einen oder den mehreren Computervorrichtungen der modifizierten Folge von Textelementwerten mit einer Gruppe von Anweisungen; und Testen mit der einen oder den mehreren Computervorrichtungen einer Leistungseigenschaft der Gruppe von Anweisungen, wenn die Gruppe von Anweisungen die modifizierte Folge von Textelementwerten verarbeiten.

Description

  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • HINTERGRUND
  • Fuzz-Testen stellt eine Technik zum Testen von Computerprogrammen unter Verwendung zufälliger Eingaben bereit. Beispielsweise können Fuzzbasierte Testtechniken verwendet werden, um Testeingaben, die Dateidokumente enthalten, die mit einem definierten Textformat wie z. B. der HyperText Markup Language (HMTL), dem portablen Dokumentenformat (PDF) oder der Sprache von Cascading Stylesheets (CSS-Sprache) konform sind, zu erzeugen und zu modifizieren. Wenn ein Dokument für eine Anwendung zum Verarbeiten bereitgestellt wird, kann die Anwendung auf unerwartetes oder unerwünschtes Verhalten, wie z. B. Abstürze oder Offenlegen von Daten für unerlaubten Zugriff, überwacht werden.
  • Spezielle generationsbasierte Fuzz-Techniken können Testdokumente basierend auf einer manuell spezifizierten Grammatik zufällig erzeugen oder ändern. Beispielsweise können die Anforderungen für ein definiertes Format als eine Gruppe von Computeranweisungen geschrieben sein, die eine Folge von Zufallswerten erzeugen oder ändern, so dass die Folge mit dem Format vollständig konsistent bleibt. Komplizierte Formate machen es schwierig und umständlich, Computeranweisungen zu erzeugen, die die Grammatik vollständig implementieren, die z. B. zum Iterieren durch alle Anforderungen oder Iterieren durch die Anforderung auf unerwartete Weisen fähig sind. Außerdem können kleine Änderungen an den Anforderungen des definierten Formats wesentliche Änderungen an den Computeranweisungen erfordern.
  • Spezielle mutationsbasierte Fuzz-Techniken können kleine Änderungen an einem existierenden Testdokument vornehmen, die Ergebnisse analysieren und dann den Prozess wiederholen. Als Beispiel kann eine mutationsbasierte Fuzz-Technik einbeziehen: Auswählen eines Dokuments, das mit einem definierten Textformat konform ist; Mutieren (z. B. Modifizieren) des ausgewählten Dokuments durch zufälliges Ändern von Zeichen (z. B. durch Bitumkehren oder Byte-Inkrementieren), Löschen von Zeichen, Hinzufügen von Zeichen oder Austauschen von Zeichenketten; Verarbeiten des Dokuments unter Verwendung der Anwendung, die getestet wird; Bewerten des Dokuments basierend auf seiner Abdeckung (z. B. der Kennung von Routinen und der Anzahl eindeutiger Code-Zeilen, die in der Anwendung als Ergebnis des Verarbeitens des Dokuments ausgeführt wurden); und Verwenden der Bewertung als eine Fitness-Funktion in einem genetischen Algorithmus oder dergleichen, um zu bestimmen, ob das Dokument weiter mutiert und bewertet werden sollte. Dokumente, die zu Abstürzen führen oder potentiell bösartige Aktionen (z. B. Pufferüberlauf) erlauben, können ebenfalls für zusätzliche Mutation und Testen ausgewählt werden. Obwohl mutationsbasierte Fuzz-Techniken für spezielle Formate wie z. B. Medienformate effektiv sind, können sie weniger effektiv sein als generationsbasierte Fuzz-Techniken, wenn sie in Verbindung mit komplizierten Textformaten verwendet werden.
  • ZUSAMMENFASSUNG
  • Ein Aspekt der Technologie bezieht sich auf ein Verfahren, das enthält: Empfangen einer Folge von Werten von Textelementen; Bestimmen mit einer oder mehreren Computervorrichtungen einer Bewertung für einen Textelementwert der Folge, wobei sich die Bewertung auf die Wahrscheinlichkeit bezieht, dass ein spezieller Textelementwert gleich einem oder mehreren gegeben Werten ist, und wobei die Wahrscheinlichkeit auf Folgen von Textelementwerten basiert, die mit einem definierten Format konsistent sind, Vergleichen mit der einen oder den mehreren Computervorrichtungen der Bewertung mit einem Schwellenwert; wenn die Bewertung unterhalb eines Schwellenwerts ist, Modifizieren mit der einen oder den mehreren Computervorrichtungen des Wertes des Textelements, um eine modifizierte Folge von Textelementwerten zu bilden; Verarbeiten mit der einen oder den mehreren Computervorrichtungen der modifizierten Folge von Textelementwerten mit einer Gruppe von Anweisungen; und Testen mit der einen oder den mehreren Computervorrichtungen einer Leistungseigenschaft der Gruppe von Anweisungen, wenn die Gruppe von Anweisungen die modifizierte Folge von Textelementwerten verarbeitet.
  • Ein weiterer Aspekt der Technologie bezieht sich auf ein System, das eine oder mehrere Computervorrichtungen und einen Speicher, der Anweisungen speichert, die durch die eine oder mehreren Computervorrichtungen ausführbar sind, enthält, wobei die Anweisungen enthalten: Empfangen einer initialen Folge von Textelementen, die Werte aufweisen; Bestimmen einer ersten Bewertung für den Wert eines ersten Textelements aus der initialen Folge, wobei sich das Bestimmen einer Bewertung in Bezug auf den Wert eines speziellen Textelements in einer speziellen Folge von Textelementen darauf bezieht, wie häufig der Wert des speziellen Textelements denselben oder ähnlichen Folgen von Textelementwerten, die mit einem definierten Format konsistent sind, folgt; Bestimmen einer zweiten Bewertung für den Wert eines zweiten Textelements der initialen Folge, wobei ein drittes Textelement zwischen dem ersten und dem zweiten Textelement in der initialen Folge vorhanden ist; Vergleichen der ersten und der zweiten Bewertung mit einem Schwellenwert; wenn die erste und die zweite Bewertung oberhalb des Schwellenwerts sind, Erzeugen einer zweiten Folge von Textelementen, die Werte aufweisen, wobei der Wert eines ersten Textelements in der zweiten Folge gleich dem Wert des ersten Textelements in der initialen Folge ist, der Wert eines zweiten Textelements in der zweiten Folge gleich dem Wert des zweiten Textelements in der initialen Folge ist, der Werte eines dritten Textelements in der zweiten Folge von dem Wert des dritten Textelements in der initialen Folge verschieden ist und das dritte Textelement zwischen dem ersten und dem zweiten Textelement in der Folge ist; Verarbeiten mit der einen oder den mehreren Computervorrichtungen der zweiten Folge von Textelementen mit einer Anwendung; und Testen mit der einen oder den mehreren Computervorrichtungen einer Leistungseigenschaft der Anwendung, wenn die Anwendung die modifizierte Folge von Textelementwerten verarbeitet.
  • Noch ein weiterer Aspekt des Systems bezieht sich auf ein System aus einer oder mehreren Computervorrichtungen und einem Speicher, der Anweisungen speichert, die durch die eine oder mehreren Computervorrichtungen ausführbar sind, enthält, wobei die Anweisungen enthalten: Empfangen eines Dokuments, das eine Folge von Textzeichen beinhaltet; Bestimmen einer Bewertung für jedes aus den mehreren Zeichen des Dokuments, wobei die Bewertung eines Zeichens basierend auf dem Wert des Zeichens, dem Wert eines oder mehrerer vorangehenden Zeichen in dem Dokument und einer Maschinenlernkomponente, die mit Folgen aus Zeichen trainiert ist, die mit dem definierten Format konform sind, bestimmt wird; wenn die Bewertung eines Zeichens unterhalb eines Schwellenwerts ist, Zuordnen des Zeichens zu einer Gruppe von Zeichen, die für Modifikation geeignet sind; Modifizieren wenigstens eines Zeichens in der Gruppe von Zeichen; und nach dem Modifizieren wenigstens eines der Zeichen in der Gruppe von Zeichen Messen der Leistung einer Anwendung, wenn die Anwendung das Dokument verarbeitet.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Funktionsdiagramm eines Systems in Übereinstimmung mit Aspekten der Offenbarung.
  • 2 ist ein Ablaufdiagramm in Übereinstimmung mit Aspekten der Offenbarung.
  • 3 ist ein Ablaufdiagramm des Trainings eines neuronalen Netzes in Übereinstimmung mit Aspekten der Offenbarung.
  • 4 ist ein Beispiel eines Testdokuments.
  • 5 ist ein Beispiel von Wahrscheinlichkeitswerten von Textelementen.
  • 6 ist ein Beispiel eines Testdokuments.
  • 7 ist ein Beispiel eines Testdokuments, das in Übereinstimmung mit Aspekten der Offenbarung modifiziert ist.
  • 8 ist ein Beispiel von Leistungseigenschaften einer Anwendung.
  • 9 ist ein Beispiel von Leistungseigenschaften einer Anwendung.
  • 10 ist ein Ablaufdiagramm in Übereinstimmung mit Aspekten der Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Übersicht
  • Die Technologie bezieht sich auf das Erzeugen einer Folge von Textelementwerten, die verwendet werden kann, um die Leistung von Anweisungen für eine Computervorrichtung zu messen. Als Beispiel und wie in den 1 und 2 gezeigt kann ein System 100 aus einer oder mehreren Computervorrichtungen 110 und 120 verwendet werden, um Dokumente zu identifizieren, die mit einem definierten Format konsistent sind (Block 210), ein rekurrentes neuronales Netz mit den Dokumenten zu trainieren (Block 220), das Netz zu verwenden, die Vorhersagbarkeit von Textelementen in einem Testdokument zu identifizieren (Block 230), das Testdokument basierend auf der Vorhersagbarkeit des Textelements zu modifizieren (Block 240), eine Anwendung mit dem Testdokument zu testen (Block 250) und abhängig von den Ergebnissen des Tests den Prozess zum Identifizieren der Vorhersagbarkeit, Modifizieren des Testdokuments und Testen der Anwendung zu wiederholen.
  • In dieser Hinsicht und wie in 3 gezeigt ist kann das System Dokumente, die mit einem speziellen definierten Format konsistent sind, identifizieren und diese Dokumente verwenden, um eine Maschinenlernkomponente zu trainieren. Beispielsweise kann das System das neuronale Netz 340 mit einem Körper 330 aus Dokumenten 320, die von Web-Servern 310–12 abgerufen wurden, trainieren.
  • Wie in den 46 gezeigt ist kann das System die Maschinenlernkomponente verwenden, um die Vorhersagbarkeit von Textelementen innerhalb eines Testdokuments zu identifizieren. Beispielsweise kann das neuronale Netz 340 Bewertungswerte zurückgeben, die angeben, dass die Vorhersagbarkeit der Zeichen innerhalb des Abschnitts 611 (z. B. der Zeichenkette 410) relativ hoch ist, die Vorhersagbarkeit des ersten Zeichens in Abschnitt 610 relativ moderat ist und die Vorhersagbarkeit der Zeichen in Abschnitt 630 relativ niedrig ist. Als ein Ergebnis kann das System den Abschnitten 610 und 630 relativ hohe Bewertungen und dem Abschnitt 611 relativ niedrige Bewertungen zuweisen.
  • Das System kann die identifizierten Abschnitte basierend auf den Textelementbewertungen, die durch das neuronale Netz zurückgegeben werden, modifizieren. Beispielsweise und wie in 7 gezeigt ist können ein oder mehrere Zeichen in den Abschnitten 610 und 630 geändert, gelöscht oder hinzugefügt werden.
  • Das modifizierte Dokument kann einer Gruppe von Computeranweisungen zum Testen zur Verfügung gestellt werden. Als Beispiel und wie in 8 gezeigt ist kann das modifizierte Testdokument 700 für eine Browser-Anwendung zum Testen zur Verfügung gestellt werden, und das System kann verschiedene Eigenschaften der Leistung des Browsers messen, wie z. B., wie viele Anweisungen des Browsers ausgeführt wurden oder fehlgeschlagen sind als ein Ergebnis. Das System kann basierend auf der Leistung eine Testbewertung bestimmen, und, wie in 9 gezeigt ist, das modifizierte Dokument kann analysiert, modifiziert, getestet und erneut bewertet werden. Falls die Testbewertung ansteigt, kann das Dokument kontinuierlich analysiert, modifiziert, getestet und bewertet werden, bis seine Testbewertung nicht ansteigt.
  • Beispielsysteme
  • Systeme wie die vorstehend beschriebenen können eine oder mehrere Computervorrichtungen enthalten. Beispielsweise stellt 1 das Beispiel von System 100 bereit, das die Computervorrichtungen 110 und 120 enthält. Die Computervorrichtungen sind konfiguriert, Informationen anzunehmen, Operationen basierend auf diesen Informationen auszuführen und in Reaktion darauf Maßnahmen zu ergreifen oder zusätzliche Informationen bereitzustellen. Die Computervorrichtungen können ein Prozessor sein oder einen Prozessor enthalten, der fähig ist, ein oder mehrere elektrischer Signale, die Informationen repräsentieren, die als ein numerischer Wert ausgedrückt sind, als Eingabe zu empfangen, einen numerischen Wert basierend auf der Eingabe in Übereinstimmung mit Anweisungen bestimmen und ein oder mehrere elektrische Signale, die den bestimmten numerischen Wert repräsentieren, als Ausgabe bereitstellen. Die Vorrichtung 110 enthält den Prozessor 111, der eine handelsübliche zentrale Verarbeitungseinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC) oder ein feldprogrammierbares Gatter-Array sein kann.
  • Die Anweisungen, die durch eine Computervorrichtung verwendet werden, enthalten eine Gruppe aus einer oder mehreren Anweisungen, auf die die Computervorrichtung zugreift und sie ausführt. Als Beispiel speichert die Vorrichtung 110 Werte, die die Anweisungen 113 repräsentieren, und der Prozessor 111 kann auf diese Werte zugreifen und Operationen, die diesen Anweisungen zugeordnet sind, auszuführen oder veranlassen, dass andere Komponenten der Vorrichtung 110 oder des Systems 100 sie ausführen. Beispielsweise können die Anweisungen 113 der Vorrichtung 110 Maschinencode (z. B. Maschinencode, der in Objektcode gespeichert ist) enthalten, der direkt durch den Prozessor 111 ausgeführt werden kann. Alternativ oder zusätzlich können Anweisungen 113 in einem Format gespeichert sein, das zusätzliche Verarbeitung vor der Ausführung erfordert, wie z. B. ein Skript oder eine Sammlung unabhängiger Quellcodemodule, die auf Anforderung interpretiert werden. Eine Operation, die als eine einzelne Anweisung in einem Format ausgedrückt ist, kann mehreren Anweisungen in einem anderen Format entsprechen, z. B. kann das Ausführen eines einzigen Befehls in einem Skript die Ausführung von mehreren Maschinencodeanweisungen erfordern. Falls die Computervorrichtung ein Betriebssystem aufweist, können die Anweisungen Anweisungen enthalten, die in der, oberhalb der oder unterhalb der Betriebssystemschicht ablaufen. Beispielsweise können einige der hier beschriebenen Operationen die Ausführung von Anweisungen betreffen, die bereitgestellt werden durch das Chrome- oder Android-Betriebssystem, die von Google bereitgestellt werden, das Windows-Betriebssystem, das durch Microsoft bereitgestellt wird, oder das macOS-, das OS X- oder das iOS-Betriebssystem, die durch Apple bereitgestellt werden.
  • Die Anweisungen können in einem Speicher gespeichert sein. Beispielsweise sind die Anweisungen 113 in dem Speicher 112 gespeichert. Der Speicher kann irgendeine Komponente sein, die zum Speichern von Informationen auf einem nicht-transitorischen Speichermedium fähig sind, das durch eine Computervorrichtung gelesen werden kann, z. B. Register, die auf demselben Substrat wie der Prozessor 111 bereitgestellt sind, flüchtiger Speicher wie z. B. RAM (Direktzugriffsspeicher), nichtflüchtiger Speicher wie z. B. Flash-Speicher, z. B. eine sichere digitale Karte (SD-Karte), ein Festplattenlaufwerk, ein Festkörperlaufwerk, optischer Speicher oder Bandsicherungen. Die Vorrichtung 110, der Prozessor 111 und der Speicher 112 sind so konfiguriert, dass der Prozessor 111 Werte, die in dem Speicher 112 gespeichert sind, lesen, modifizieren, löschen und hinzufügen kann. Der Speicher kann konfiguriert sein, weniger Zugriff bereitzustellen als das Beispiel von Speicher 112, z. B. kann der Speicher ein Festwertspeicher sein.
  • Der Speicher kann Informationen speichern, die durch Operationen, die auf der Computervorrichtung ausführt werden, verwendet werden oder ihre Ergebnisse sind. Als Beispiel speichert der Speicher 112 Daten 114, die Werte enthalten, die durch den Prozessor 111 in Übereinstimmung mit den Anweisungen 113 abgerufen oder gespeichert werden, wie z. B. Informationen, die durch die Vorrichtung 110 angefordert oder bestimmt werden, wenn sie einige der hier beschriebenen Operationen ausführt. Werte, die in dem Speicher 112 gespeichert sind, können in Übereinstimmung mit einer oder mehreren Datenstrukturen gespeichert sein. Beispielsweise kann ein in dem Speicher 112 gespeicherter Wert einen einzelnen numerischen Wert (z. B. eine Binärzahl, eine Ganzzahl, eine Gleitkommazahl, einen Unicode-Wert, der ein einzelnes Textzeichen repräsentiert, eine Ziffer oder ein Satzzeichen oder einen Wert, der eine einzelne Maschinencodeanweisung repräsentiert), eine Gruppe aus mehreren numerischen Werten (z. B. ein Array von Zahlen, eine Kette aus Textzeichen, XML-formatierte Daten oder eine Datei) oder Informationen, aus denen Werte, die in Übereinstimmung mit den Anweisungen 113 verarbeitet werden sollen, erhalten werden können (z. B. eine Referenz auf einen Wert, der an einem entfernten Ort gespeichert ist, oder einen Parameter einer Funktion, aus der der angeforderte Wert berechnet wird), repräsentieren.
  • Eine Computervorrichtung kann Komponenten zum Empfangen von Informationen aus der physikalischen Umgebung, die die Vorrichtung umgibt, enthalten und direkte Anwendereingabe in die Computervorrichtung erlauben. Ähnlich zu Vorrichtung 110 enthält die Vorrichtung 120 einen Prozessor 111, einen Speicher 112, Anweisungen 113 und Daten 114. Die Vorrichtung 120 enthält außerdem Komponenten, die Informationen detektieren, die sich auf die physikalische Umgebung beziehen, in der die Komponente angeordnet ist, und diese Informationen können Informationen enthalten, die durch den Anwender 150 bereitgestellt sind. Die Vorrichtung 110 enthält eine Anwendereingabekomponente 125, die eine Schaltungsanordnung und andere Komponenten aufweist, die konfiguriert sind, Eingaben von dem Anwender 150, wie z. B. Informationen, die durch Berührung bereitgestellt sind, zu empfangen (z. B. eine Maus, eine Tastatur, ein Tastenfeld, eine Taste oder einen berührungssensitiven Bildschirm). Die Anwendereingabekomponenten können Funktionen ausführen, die sich nicht primär auf Anwendereingabe richten. Als Beispiel kann eine Kamera 127 verwendet werden, um Anwenderbefehle (z. B. Handgesten) und andere visuelle Informationen (z. B. die visuellen Eigenschaften eines Bergs) zu erfassen. Ein Mikrofon 126 kann verwendet werden, um Anwenderbefehle (z. B. verbale Befehle) und andere Audio-Informationen (z. B. das Geräusch eines Wasserfalls) zu erfassen.
  • Eine Computervorrichtung kann Komponenten zum Bereitstellen von Informationen über die physikalische Umgebung, die die Vorrichtung umgibt, enthalten und Ausgaben für Anwender direkt bereitstellen Beispielsweise kann eine Komponente eine Schaltungsanordnung enthalten, die visuelle, Audio- oder tastbare Informationen für Anwender der Vorrichtung ausgibt, wie z. B. eine Anzeigevorrichtung 130 (z. B. einen Computer-Monitor, einen berührungssensitiven Bildschirm, einen Projektor oder eine andere Komponente, die betrieben werden kann, um eine visuelle Eigenschaft in Reaktion auf ein Signal zu ändern), einen Lautsprecher 128 oder einen Motor 126, um die Vorrichtung zu vibrieren.
  • Eine Computervorrichtung kann eine oder mehrere Komponenten zum Kommunizieren mit anderen Computervorrichtungen enthalten. Als Beispiel enthalten die Vorrichtungen 110 und 120 eine Schaltungsanordnung (z. B. eine Netzschnittstelle), die jede Vorrichtung mit einem anderen Knoten des Kommunikationsnetzes 190 verbindet. Das Netz 190 kann aus mehreren Netzen bestehen, die unterschiedliche Kommunikationsprotokolle verwenden. Beispielsweise wenn die Vorrichtung 110 Informationen zu der Vorrichtung 120 überträgt, können die Informationen über eines oder mehrere aus dem Internet (z. B. über Kern-Internet-Router in Übereinstimmung mit dem Übertragungssteuerungsprotokoll (TCP) und dem Internetprotokoll (IP)), einem zellulären Netz (z. B. in Übereinstimmung mit dem LTE-Standard (Langzeitentwicklungs-Standard)), einem lokalen Netz (z. B. einem Ethernet oder Wi-Fi-Netz) und einer Bluetooth-Verbindung gesendet werden. Eine Vorrichtung kann Informationen für einen Anwender über andere Vorrichtungen bereitstellen, z. B. kann die Vorrichtungen 110 Informationen für den Anwender 150 anzeigen durch Senden der Informationen über das Netz 190 zu der Vorrichtung 120 zur Anzeige auf der Anzeigevorrichtung 130. Eine Computervorrichtung kann außerdem Informationen für eine weitere Computervorrichtung ohne Verwendung eines Netzes bereitstellen. Als Beispiel kann eine Computervorrichtung Informationen mit einer Anzeigevorrichtung ausgeben, und eine weitere Vorrichtung kann diese Informationen mit einer Kamera detektieren. Obwohl nur einige wenige Computervorrichtungen in 1 abgebildet sind, kann das System eine große Anzahl von Computervorrichtungen enthalten, die mit dem Netz an einer großen Anzahl von Knoten verbunden sind.
  • Obwohl 1 die Computervorrichtungen 110 und 120 als individuelle Blöcke zeigt, von denen jeder seinen eigenen Prozessor und Speicher beinhaltet, können die hier beschriebenen Operationen eine einzelne Computervorrichtung oder viele Computervorrichtungen, z. B. in der "Cloud", einbeziehen. Beispielsweise können verschiedene Operationen, die nachstehend so beschrieben sind, dass sie eine einzige Computervorrichtung (z. B. eine einzige zentrale Verarbeitungseinheit (CPU) in einem einzigen Server) einbeziehen, mehrere Computervorrichtungen (z. B. mehrere Prozessoren in einer Server-Farm mit Lastausgleich) einbeziehen. Ähnlich können Speicherkomponenten an unterschiedlichen Orten unterschiedliche Abschnitte von Anweisungen 113 speichern und gemeinsam ein Medium zum Speichern der Anweisungen bilden. Als weiteres Beispiel können Operationen, die so beschrieben sind, dass sie mehrere Computervorrichtungen einbeziehen, durch eine einzige Computervorrichtung ausgeführt werden, z. B. kann die Vorrichtung 120 die Daten selbst verarbeiten, anstatt die Daten zum Verarbeiten zu der Vorrichtung 110 zu senden. Alternativ kann die Vorrichtung 120 als ein Thin Client funktionieren, wobei die Vorrichtung 110 alle oder nahezu alle Operationen ausführt, die sich nicht direkt auf Empfangen und Bereitstellen von Informationen für Anwender über die Anwendereingabekomponente 125 und die Anzeigevorrichtung 130 beziehen. Verschiedene Operationen, die hier so beschrieben sind, dass sie durch eine Computervorrichtung ausgeführt werden, können durch eine virtuelle Maschine ausgeführt werden. Als Beispiel können Anweisungen 113 für einen Windows-Server spezifisch sein, die relevanten Operationen können jedoch durch einen Linux-Server ausgeführt werden, auf dem ein Hypervisor läuft, der einen Windows-Server emuliert. Die Operationen können auch durch einen Container ausgeführt werden, z. B. eine Computerumgebung, die nicht auf einem Betriebssystem beruht, das an spezifische Hardware-Typen gebunden ist.
  • In verschiedenen hier beschriebenen Beispielen ist die Vorrichtung 110 ein Server, und die Vorrichtungen 120–21 sind Clientvorrichtungen. Beispielsweise kann die Vorrichtung 110 ein Server sein, und die Vorrichtung 120 kann ein Desktop-Computersystem (Notebook-Computersystem) sein, z. B. können der Prozessor 121 und der Speicher 122 in einem Desktop-Personalcomputer enthalten sein, die Anzeigevorrichtung 130 kann ein externer Monitor sein, der mit dem Personalcomputer durch ein Kabel verbunden ist, und die Anwendereingabekomponente 125 kann eine externe Tastatur sein, die mit dem Computer über Bluetooth kommuniziert. Alternativ kann die Vorrichtung 120 ein drahtloses Telefon mit einem berührungssensitiven Bildschirm sein, der sowohl als Anzeigevorrichtung 130 als auch als Eingabekomponente 125 funktioniert. Andere Clientvorrichtungen können als Beispiel Laptops, Notebooks, Netbooks, Tablets, Set-Top-Boxen (z. B. eine Kabelfernseh-Set-Top-Box, die mit einem Fernsehgerät verbunden ist), und tragbare Vorrichtungen (z. B. eine Smartwatch) enthalten. In dieser Hinsicht kann eine Computervorrichtung andere Komponenten enthalten, die typischerweise in solchen Vorrichtungen oder Allzweckcomputern vorhanden sind, jedoch hier nicht ausdrücklich beschrieben sind.
  • Ein System kann außerdem Dokumente speichern, die ein oder mehrere Textelemente, z. B. ein einzelnen Zeichen, ein Token (z. B. eine Folge aus Zeichen zwischen Trennzeichen innerhalb eines Dokuments, wie z. B. ein Wort) oder eine Zeichenfolge einer gegebenen Länge aufweisen. Die Textelemente können Werte aufweisen, z. B. der Wert eines Zeichens kann "a" oder "*" sein.
  • Das Textelement kann innerhalb eines Dokuments als eine Folge von Werten gespeichert, sein, die mit einem definierten Format konform sind, z. B. eine oder mehrere Anforderungen, die betreffen, wie Textelemente, die sich auf spezielle Informationstypen beziehen, innerhalb eines Dokuments gespeichert sein sollten. In dem Umfang, in dem das definierte Format als eine Sprache betrachtet werden kann, können die Anforderungen als die Grammatik der Sprache betrachtet werden. Die Anforderungen können sich, nur als Beispiel, auf die erlaubten Textelementwerte (z. B. UNICODE oder ASCII), wo spezielle Informationstypen relativ zu dem Anfang des Dokuments gespeichert sein müssen (z. B. Dokumente, die mit der HMTL-Version 5 konform sind, beginnen mit “<!DOCTYPE html>”), reservierte Schlüsselworte und wo spezielle Informationstypen relativ zu anderen Informationstypen gespeichert sein müssen (z. B. folgt die Ziel-URL eines Links auf einer Webseite dem Schlüsselwort "href") beziehen. Obwohl die meisten der nachstehenden Beispiele zur Vereinfachung der Darstellung auf HTML fokussieren, gelten das System und die Operationen, die hier beschrieben sind, für andere definierte Formate, die proprietäre Standards einschließen.
  • Beispielverfahren
  • Operationen in Übereinstimmung einer Vielzahl von Aspekten des Verfahrens werden jetzt beschrieben. Es ist zu verstehen, dass die folgenden Operationen nicht in der nachstehend beschriebenen präzisen Reihenfolge ausgeführt werden müssen. Stattdessen können verschiedene Schritte in einer anderen Reihenfolge oder gleichzeitig gehandhabt werden.
  • Das System kann im Voraus existierende Proben von Informationen, die in Übereinstimmung mit einem ausgewählten definierten Format angeordnet sind, identifizieren. Beispielsweise und wie in 1 gezeigt ist kann die Vorrichtung 110 das Netz 190 verwenden, um auf Dokumente zuzugreifen, die in den Quellen 191 gespeichert sind und mit dem definierten Format konsistent sind. Als Beispiel, wie in 3 gezeigt ist, kann das System mehrere Webseiten, die in Übereinstimmung mit HTML formatiert sind, von mehreren Web-Servern 310–12 abrufen. Die Webseiten 320 bilden gemeinsam einen Körper 330 aus HTML-Dokumenten.
  • Das System kann eine Maschinenlernkomponente mit den Proben des definierten Formats trainieren. In dieser Hinsicht kann die Vorrichtung 110 Anweisungen speichern, die dem Trainieren eines neuronalen Netzes zugeordnet sind, das neuronale Netz durchlaufen, Daten, die in Verbindung mit dem neuronalen Netz gespeichert sind, extrahieren und Folgen von Datenwerten basierend auf dem neuronalen Netz erzeugen. Als Beispiel kann das neuronale Netz 340 ein rekurrentes Netz sein, wie z. B. ein neuronales Netz vom "Long-Short Term Memory"-Typ (LSTM-Typ), und die Vorrichtung 110 kann das neuronale Netz mit dem Körper 330 trainieren.
  • Sobald es trainiert ist, können die Gewichte, Bias und andere Aspekte, die in den Datenstrukturen der Maschinenlernkomponente gespeichert sind, ein Modell des definierten Formats repräsentieren, wobei das Modell nicht eine Gruppe grammatikalischer Regeln ist (wie sie in einer generationsbasierten Fuzzing-Technik vorhanden sein könnte), sondern vielmehr ein wahrscheinlichkeitstheoretisches Modell ist. Beispielsweise kann das System 100 das neuronale Netz 340 verwenden, um eine Bewertung (z. B. einen numerischen Wert) für ein Textelement zu bestimmen, die sich darauf bezieht, wie häufig der Wert des speziellen Textelements denselben oder ähnlichen Folgen von Textelementen in dem Körper 330 aus HTML-Dokumenten, die verwendet wurden, um das neuronale Netz zu trainieren, folgte. In dieser Hinsicht kann das neuronale Netz das definierte Format modellieren durch Bereitstellen von Bewertungen, die sich auf die Wahrscheinlichkeit beziehen, dass der Wert eines speziellen Textelements innerhalb einer Folge von Textelementwerten gleich einem spezifischen Wert sein wird, wenn die Folge mit dem definierten Format konform ist. Die Wahrscheinlichkeit kann eine Funktion der Werte der anderen Textelemente in der Folge und der Nähe der anderen Werte zu dem speziellen Textelement sein, wie z. B. in dem Fall eines rekurrenten Netzes die Werte einer gegeben Anzahl von Textelementen, die dem speziellen Textelement vorangehen. Als Beispiel kann, nachdem das neuronale Netz 340 mit dem Körper 330 aus HTML-Dokumenten trainiert worden ist, das Modell 350 angeben (und die Bewertungen, die durch das neuronale Netz zurückgegeben werden, können widerspiegeln), dass die Wahrscheinlichkeit dafür, dass für ein "e", das auf "head" folgt, 33 % ist (wie z. B. in “<header>”), die Wahrscheinlichkeit für ">" 22 % ist (z. B. wie in “<head>”), die Wahrscheinlichkeit für ein Leerzeichen 11 % Ist (z. B. wenn das Wort "head" in einem Satz verwendet wird), die Wahrscheinlichkeit für "a" 6 % ist (z. B. wie in "headache"), usw. (Die beispielhaften Prozentverteilungen der beispielhaften Zeichenketten und Zeichen, die hier diskutiert sind, sind zur Vereinfachung der Darstellung ausgewählt werden, z. B. ignorieren sie Probleme wie z. B. Beachtung von Groß- und Kleinschreibung. Ein großer Körper von öffentlich zugänglichen HTML-Dokumenten kann andere Wahrscheinlichkeiten und Verteilungen als diejenigen, die hier dargelegt sind, ergeben.)
  • Das System kann die Bewertungen verwenden, um Abschnitte eines Testdokuments zu identifizieren, die modifiziert werden sollen. Beispielsweise können die Bewertungen, die durch das neuronale Netz 340 bereitgestellt sind, verwendet werden, um zu bestimmen, ob ein spezielles Textelement des Testdokuments für eine Mutation geeignet ist. 4 stellt ein Beispiel eines HTML-Testdokuments bereit. Wie nahezu alle, wenn nicht alle, HTML-Dokumente startet das Testdokument 400 mit der Zeichenkette 410 (“<!DO”), die den Schlüsselworten “!DOCTYPE html” entspricht. In dieser Hinsicht und wie in 5 gezeigt ist kann das Modell 350 angeben, dass die Wahrscheinlichkeit 510 dafür, dass ein HTML-Dokument mit "<" startet, 100 % ist, die Wahrscheinlichkeit 511 dafür, dass das nächste Zeichen "!" ist, 100 % ist, und die Wahrscheinlichkeit 512, dass das nächste Zeichen "D" ist, ebenfalls 100 % ist. Als ein Ergebnis kann das neuronale Netz 340 eine relativ hohe Bewertung für jedes Zeichen der Zeichenkette "<!D" am Anfang eines Dokuments zurückgeben, weil die Zeichenkette eine relativ niedrige Perplexität aufweist, z. B. ist jedes Zeichen in hohem Maße vorhersagbar bei Betrachtung des davor stehenden Zeichens. (Für die Zwecke der Diskussion der 4 und 5 ist angenommen, dass das neuronale Netz 340 konfiguriert ist, das nächste Zeichen basierend auf bis zu fünf Zeichen, die ihm unmittelbar vorangehen, zu bewerten.)
  • Wie es vielen HTML-Dokumenten ebenfalls gemeinsam ist, enthält das Dokument 400 außerdem das Schlüsselwort “lang=”, gefolgt von "[Anführungszeichen]en[Anführungszeichen]" (Zeichenkette 420), was angibt, dass das Dokument in englischer Sprache geschrieben ist. In dieser Hinsicht kann das Modell 350 angeben, dass die Wahrscheinlichkeit 520, dass "=" einem Anführungszeichen folgt, 35 % (z. B. wenn "lang" als ein Schlüsselwort verwendet ist), die Wahrscheinlichkeit 521, dass "u" auf "[Leerzeichen]lang" folgt, ist 25 % (z. B. wenn das Wort "language" in einem Satz verwendet ist), und die Wahrscheinlichkeit, dass irgendein anderes Zeichen dem [Anführungszeichen] folgt, kann nahe null sein (und ist somit in dem Diagramm von 5 nicht gezeigt). Als ein Ergebnis kann das Zeichen nach der Zeichenkette "[Leerzeichen]lang" so betrachtet werden, dass es eine relativ moderate Perplexität aufweist, weil das Modell 350 angibt, dass eine 60 %-ige Wahrscheinlichkeit dafür vorhanden ist, dass es einer von zwei Werten sein wird. Wie in der 5 ebenfalls angegeben ist, ist dann, wenn das nächste Zeichen nach "[Leerzeichen]lang" gleich "=" ist, die Wahrscheinlichkeit dafür, dass das nächste Zeichen ein Anführungszeichen-Symbol ist, relativ hoch, z. B. 88 %. Wegen der Anzahl von HTML-Dokumenten, die die Zeichenkette “[Leerzeichen]lang=[Anführungszeichen]en[Anführungszeichen]” enthalten, ist die Wahrscheinlichkeit 523 dafür, dass das Zeichen danach "e" wäre, signifikant. Weil jedoch viele andere potentielle Sprachen für ein HTML-Dokument über Englisch hinaus vorhanden sind, kann "e" eines von vielen Zeichen sein, die eine signifikante Wahrscheinlichkeit dafür aufweisen, dass sie auf “lang=[Anführungszeichen]” folgen. Als ein Ergebnis kann das Zeichen nach der Zeichenkette “ang=[Anführungszeichen]” so betrachtet werden, dass es eine relativ moderate Perplexität und Vorhersagbarkeit aufweist, und das neuronale Netz 340 kann somit eine relativ moderate Bewertung für das Zeichen "e" in der Zeichenkette “lange=[Anführungszeichen]e” zurückgeben.
  • 5 stellt ferner die Vorhersagbarkeit des Zeichens dar, das der Zeichenkette 430 folgt, z. B. “inter”. Die Anzahl populärer Worte, die die Zeichenkette "inter" enthalten, kann so zahlreich sein, dass viele Zeichen eine kleine jedoch relativ gleiche Wahrscheinlichkeit 530 dafür aufweisen, dass sie das nächste sind. Deshalb kann, da die relative Perplexität des Zeichens, das der Zeichenkette "inter" folgt, relativ hoch ist, das neuronale Netz 340 eine relativ niedrige Bewertung für dieses Zeichen zurückgeben.
  • Das System kann Textelemente einer Folge zur Modifikation basierend auf den durch das neuronale Netz zurückgegebenen Bewertungen auswählen. Das Modifizieren von Schlüsselworten in einem Dokument kann dazu führen, dass eine Anwendung nicht fähig ist, das Dokument zu analysieren, und kann somit verursachen, dass die Anwendung die Verarbeitung insgesamt beendet oder abstürzt; das kann in einigen Fällen hilfreich sein, kann jedoch auch dazu führen, dass viele Routinen der Anwendung nicht getestet werden. Wie vorstehend erwähnt, tendieren Schlüsselworte dazu, hohen Bewertungen zugeordnet zu werden. Als ein Ergebnis und wie in 6 gezeigt ist kann das System die Zeichen innerhalb der Abschnitte 611 und 612 (die viele Schlüsselworte enthalten) als ausreichend vorhersagbar, um unmodifiziert zu bleiben, und die Zeichen innerhalb der Abschnitte 610 (die einen oder viele mögliche Sprachcodes enthalten) und 630 (die Text enthalten, der für Anzeige für den Anwender vorgesehen ist), als ausreichend unvorhersagbar, um modifiziert zu werden, festlegen.
  • Das System kann bestimmen, ob ein Textelement für Modifikation geeignet ist oder nicht, durch Vergleichen der Bewertung des Textelements mit einem Schwellenwert. Beispielsweise kann die Vorrichtung 110 durch die Werte der Zeichen des Testdokuments 400 iterieren und für jedes Zeichen eine Bewertung basierend auf dem neuronalen Netz bestimmen und diese Bewertung mit einem Modifikationseignungsschwellenwert vergleichen. Der Modifikationseignungsschwellenwert kann einem Wahrscheinlichkeitsschwellenwert entsprechen. Als Beispiel und mit Bezug auf die 4 und 5 kann das Modell 350 angeben, dass die Wahrscheinlichkeit dafür, dass "=" das nächste Zeichen nach "[Leerzeichen]lang” ist, gleich 35 % ist, was einen Schwellenwert (Zeile 550) von 30 % übersteigt. Als ein Ergebnis kann die durch das neuronale Netz 340 zurückgegebenen Bewertung einen entsprechenden Modifikationseignungsschwellenwert übersteigen, und, falls ja, kann die Vorrichtung 110 das Zeichen als für Modifikation ungeeignet festlegen. (Obwohl 5 zur Vereinfachung der Darstellung einen Schwellenwert von 30 % angibt, können Modifikationseignungsschwellenwerte, die Wahrscheinlichkeitsschwellenwerten von 90 % oder größer zugeordnet sind, interessantere Ergebnisse ergeben.) Falls jedoch der Wert des Zeichens, der “[Leerzeichen]lang” folgt, "u" statt "=" gewesen wäre, und falls die Bewertung von "u" niedriger war als der Modifikationseignungsschwellenwert (z. B. das Modell gibt an, dass die Chancen dafür, dass das Zeichen "u" ist, relativ unwahrscheinlich waren), könnte die Vorrichtung 110 das Zeichen als für Modifikation geeignet festgelegt haben. Das System kann ferner alle Abschnitte zwischen Abschnitten mit hoher Vorhersagbarkeit, wie z. B. den Abschnitten 610 und 630 zwischen den Abschnitten 611–12 bzw. den Abschnitten 631–32 als für Modifikation geeignet festlegen.
  • Die Bewertung und der Modifikationseignungsschwellenwert können auch auf Faktoren basieren, die nicht für den Wert des Textelements spezifisch sind. Beispielsweise falls viele Zeichenwerte eine relativ einheitliche Wahrscheinlichkeit dafür aufweisen, dass sie einer speziellen Zeichenkette folgen, kann der Modifikationseignungsschwellenwert erniedrigt werden, z. B. kann das System 100 das Zeichen mit höherer Wahrscheinlichkeit als für Modifikation geeignet festlegen. Der Modifikationseignungsschwellenwert kann auch dynamisch bestimmt werden. Beispielsweise kann der Schwellenwert eine zufällig bestimmte Zahl sein. Als Beispiel kann ein Zeichen innerhalb des Dokuments 400 als ungeeignet für Modifikation identifiziert werden, wenn S > Random(0,00–1,00) ist, wobei S die Bewertung ist, die durch das neuronale Netz für das Zeichen zurückgegeben wird, und die Bewertungen und potentiellen Zufallswerte im Bereich zwischen 0,00 und 1,00 sind. Als eine Folgerung kann das System ein Textelement als für Modifikation geeignet festlegen, wenn S > 1 – Random(0,00–1,00) ist. Die Bewertung kann auch auf der Anzahl potentieller Werte basieren, die oberhalb eines kleinsten Schwellenwerts oder der Bewertung des wahrscheinlichsten Werts für das Textelement sind.
  • Die Abschnitte des Dokuments, die als für Modifikation geeignet festgelegt wurden, können zufällig geändert werden. Als Beispiel und wie in 7 gezeigt ist kann das System ein modifiziertes Dokument 700 durch Angeben für ein mutationsbasiertes Fuzzing-Modul, dass die Abschnitte 610 und 630 für Mutation verfügbar sind, z. B. Zeichen zufällig geändert, hinzugefügt oder gelöscht werden können, erzeugen.
  • Die Abschnitte, die für Modifikation geeignet sind, können auch zur Ersetzung durch Abschnitte aus demselben oder anderen Dokumenten ausgewählt werden. Beispielsweise und wie in 7 gezeigt ist hat das System die Positionen der Abschnitte 640 und 650 vertauscht. Abschnitte des Testdokuments können auch durch Abschnitte aus anderen Testdokumenten ersetzt werden. Außerdem muss der Ersetzungsabschnitt nicht dieselbe Größe aufweisen wie der ersetzte Abschnitt, insbesondere falls die Ersetzung aus einem anderen Dokument genommen wird. Beispielsweise können zunehmend größere Ersetzungssequenzen hinzugefügt werden, bis eine maximale Länge erreicht ist oder ein Punkt relativ hoher Perplexität erreicht ist.
  • Wenn bestimmt wird, ob ein Textelement modifiziert werden sollte, kann das System nicht nur das vorangehende Textelement, sondern auch nachfolgende Textelemente berücksichtigen. Beispielsweise zeigt die 6 die Zeichenkette “</head><body>” als einen einzigen Block 631. Das Modell kann jedoch angeben, dass das Zeichen "b" relativ unvorhersagbar ist, da es sehr wahrscheinlich sein kann, dass ein Schlüsselwort “ead><” folgen wird, aber das präzise Schlüsselwort selbst kann schwer vorherzusagen sein. Sobald jedoch bekannt ist, dass der Wert des nächsten Zeichens "b" ist, kann das Modell angeben, dass die verbleibenden Zeichen des Blocks 631 hoch vorhersagbar sind, weil das Tag “<body>” häufig auf “<head>” folgt. Als ein Ergebnis und in einigen Aspekten kann, falls ein einziges niedrig bewertetes Zeichen zwischen Zeichenketten aus hoch bewerteten Zeichen eingeschlossen ist, das System überprüfen, ob das niedriger bewertete Zeichen und nachfolgende hoch bewertete Zeichen ein einziges Schlüsselwort bilden.
  • Das System kann eine oder mehrere Eigenschaften der Leistung einer Gruppe von Computeranweisungen messen, wenn sie die Testfolgen verarbeiten. Als Beispiel und wie in 8 gezeigt ist kann die Vorrichtung 110 das Testdokument 700 in einen Browser 810 laden und einen Bericht 805 erzeugen, der betrifft, wie gut die Leistung des Browsers ist. Der Bericht kann den Namen 811 des Dokuments und Informationen wie z. B. ob das Laden des Dokuments verursacht, spezielle Routinen 820–23 (z. B. Routinen, die sich auf das Wiedergeben von Inhalt, Ausführen von Javascript, Kommunizieren von Informationen über ein Netz und Sichern von Daten beziehen) und Plug-Ins 830–32 Dritter aufgerufen werden, und falls ja, ob irgendwelche Fehler aufgetreten sind, enthalten. Das System kann außerdem eine Testbewertung 815 basierend auf anderen Leistungseigenschaften wie z. B. der Abdeckung des Dokuments (z. B. der Anzahl unterschiedlicher Routinen, die aufgerufen wurden, die Gesamtzahl eindeutiger Codezeilen, die ausgeführt wurden), Verarbeitungsgeschwindigkeit (z. B. Ladezeiten), CPU- und Speichernutzung, ob irgendwelche interessanten Ergebnisse gefunden wurden (z. B. Fehler, Sicherheitsprobleme wie z. B. Pufferüberlauf und Dekomprimierungsbomben, Plug-In-Fehler 832, die Anwendung ist abgestürzt usw.) und irgendwelche anderen messbaren Aspekte, die sich auf die Leistung beziehen, berechnen, und der Bericht kann sie ebenfalls enthalten. Unterschiedliche Ereignisse können unterschiedlich gewichtet werden, wenn eine Testbewertung berechnet wird.
  • Die Leistungseigenschaften können verwendet werden, um zu bestimmen, ob weitere Modifikationen an der Anwendung oder dem Dokument vorgenommen werden sollten. Beispielsweise kann das Dokument nach dem initialen Test wie vorstehend beschrieben modifiziert und noch einmal getestet werden. Wie in 9 gezeigt ist, kann das System dann einen zweiten Bericht 905 erzeugen, der angibt, dass eine zusätzliche Routine 921 des Browsers und das Plug-In 931 eines Dritten aufgerufen wurden. Der Bericht gibt außerdem an, dass das Plug-In 930 des Dritten, das die vorherige Version des Dokuments ohne Schwierigkeiten verarbeitet hat, mit einem Pufferüberlauffehler fehlgeschlagen ist, was unter Umständen Sicherheitsprobleme für Daten, die durch dieses Plug-In gehandhabt werden, erzeugen könnte. Als ein Ergebnis stieg die berechnete Testbewertung 915 des Dokuments relativ zu dem ersten Bericht 805 an. Das System kann den Prozess zum Identifizieren von Abschnitten eines Dokuments, die für Modifikation geeignet sind, basierend auf Bewertungen, die durch das neuronale Netz zurückgegeben werden, wiederholen, die geeigneten Abschnitte des Dokuments modifizieren und eine Testbewertung für das Dokument bestimmen, bis die Testbewertung des Dokuments nicht mehr ansteigt. Falls das definierte Format PDF ist, kann das System einen PDF-Reader testen, z. B. die Funktionalität eines Browsers zum Anzeigen von PDF-Dokumenten, einer eigenständigen PDF-Anwendung zum Anzeigen und Editieren von PDF-Dokumenten usw.
  • Das System kann außerdem verwendet werden, um eine vollständig neue Gruppe von Testdokumenten konform zu dem Modell des definierten Formats zu erzeugen. Beispielsweise kann das System ein neues Testdokument erzeugen und zufällig den Wert der Textelemente basierend auf der Wahrscheinlichkeit ihres Auftretens, wie sie durch das durch das durch das neuronale Netz repräsentierte Modell angegeben ist, auswählen. Als Beispiel und wie teilweise in 5 gezeigt ist, kann das Modell 350 angeben, dass alle HTML-Dokumente in dem Körper mit “<DOCTYPE html” beginnen. Als ein Ergebnis wären, wenn das System 100 das neuronale Netz 340 verwendet, um zufällig ein neues Dokument zu erzeugen, die ersten vierzehn Zeichen des Dokuments “<DOCTYPE html”. Danach können sich jedoch die Wahrscheinlichkeiten ändern, z. B. kann das Modell angeben, dass zu 80 % der Zeit der Zeichenkette "html" ein Leerzeichen folgt und ihr zu 20 % der Zeit ein ">" folgt. Als ein Ergebnis kann das System zufällig ein Leerzeichen oder ">" auswählen durch Erzeugen einer Zufallszahl zwischen 0,00 und 1,00 und Bestimmen, ob die Zahl größer oder kleiner als 0,80 ist und dementsprechend ein Leerzeichen oder ">" als das nächste Zeichen des erzeugten Dokuments auswählen. Die verbleibenden Zeichen des Dokuments können auf ähnliche Weise bestimmt werden. Die zufällig erzeugten Testdokumente können dann wie vorstehend beschrieben modifiziert und getestet werden.
  • Das Modell kann periodisch aktualisiert werden, um Änderungen an den Anforderungen und Merkmalen des definierten Formats widerzuspiegeln. Beispielsweise kann das neuronale Netz 340 periodisch mit kürzlich erzeugten Dokumenten trainiert werden, um das Modell 350 mit Änderungen an dem erzeugten Format aktuell zu halten. Abhängig von der Komplexität des definierten Formats und anderen Umständen können die Kosten und anderen Betriebsmittel, die erforderlich sind, um ein neuronales Netz wie z. B. das neuronale Netz 340 zu trainieren und zu pflegen, kleiner sein als die Kosten und Betriebsmittel, die erforderlich sind, um Computerprogramme zu schreiben und zu pflegen, die Dokumente basierend auf einer strengen Gruppe grammatikalischer Regeln, die durch Menschen oder Organisationen, die das Format definiert haben, gesetzt wurden, erzeugen oder analysieren.
  • Obwohl das Verwenden eines rekurrenten neuronalen Netzes, um Textelemente zu bewerten, insbesondere in speziellen Anwendungen vorteilhaft sein kann, kann das System andere Komponenten verwenden, um eine Bewertung bereitzustellen, die auf der Beziehung einer gegebenen Folge von Textelementwerten zu Folgen der Textelementwerte, die mit einem definierten Format konform sind, basiert. Beispielsweise kann anstelle eines rekurrenten neuronalen Netzes die Maschinenlernkomponente eine Stützvektormaschine sein, die mit N-Grammen trainiert wird, die aus Dokumenten kopiert sind, die mit dem deformierten Format konform sind, oder ein Hidden-Markov-Modell. Außerdem kann anstelle von Maschinenlernen die Textelement-Bewertungskomponente eine statische Regressionsroutine enthalten, die eine Folge verwendet, die das Textelement als die abhängige Variable und Folgen in dem Körper als unabhängige Variablen enthält.
  • 10 stellt einen Ablaufplan eines Verfahrens bereit, das durch eine oder mehrere Computervorrichtungen ausgeführt werden kann. Bei Block 1010 wird eine Folge von Werten von Textelementen empfangen. Bei Block 1020 wird eine Bewertung für einen Textelementwert aus der Folge bestimmt, wobei sich die Bewertung in Bezug auf einen speziellen Textelementwert auf die Wahrscheinlichkeit bezieht, dass der spezielle Textelementwert gleich einem oder mehreren gegebenen Werten sein wird, und wobei die Wahrscheinlichkeit basierend auf Folgen von Textelementwerten bestimmt wird, die mit einem definierten Format konsistent sind. Bei Block 1030 wird die Bewertung mit einem Schwellenwert verglichen. Bei Block 1040 wird, wenn die Bewertung unterhalb eines Schwellenwerts ist, der Wert des Textelements modifiziert, um eine modifizierte Folge von Textelementwerten zu bilden. Bei Block 1050 wird die modifizierte Folge mit einer Gruppe von Anweisungen verarbeitet. Bei Block 1060 wird die Eigenschaft der Leistung der Computeranweisungen durch Verarbeiten der modifizierten Folge mit den Computeranweisungen getestet.
  • In einer weiteren Implementierung sind ein System und ein Verfahren zum Testen der Leistung von Anwendungen bereitgestellt. Nur als Beispiel kann das Verfahren Trainieren eines neuronalen Netzes mit Dokumenten, die Textelemente enthalten, die in Übereinstimmung mit einem definierten Format angeordnet sind, und Verwenden des neuronalen Netzes, um die Vorhersagbarkeit des Werts individueller Textelemente innerhalb eines Testdokuments zu bestimmen, enthalten. Wenn das neuronale Netz angibt, dass der Wert eines Textelements unwahrscheinlich ist, kann der Wert modifiziert werden, und das modifizierte Dokument kann verwendet werden, um eine Anwendung zu testen, die Dokumente in Übereinstimmung mit dem definierten Format verarbeitet.
  • Da diese und andere Variationen und Kombinationen der vorstehend diskutierten Merkmale benutzt werden können, ohne von der Erfindung, wie sie durch die Ansprüche definiert ist, abzuweichen, sollte die vorstehende Beschreibung der Ausführungsformen nur als Veranschaulichung anstatt als Einschränkung der Erfindung, wie sie durch die Ansprüche definiert ist, betrachtet werden. Das Bereitstellen von Beispielen der Erfindung (und ebenso Klauseln, die als "wie z. B.", "z. B.", "enthalten" und dergleichen formuliert sind), sollte nicht als einschränkend für die Erfindung auf die spezifischen Beispiele interpretiert werden; vielmehr sind die Beispiele vorgesehen, um nur einige von vielen möglichen Aspekten darzustellen. Ähnlich bedeuten Bezüge auf "basierend auf" und dergleichen "basierend wenigstens teilweise auf".

Claims (20)

  1. Computerlesbares Speichermedium, das mit Anweisungen codiert ist, die dann, wenn sie durch wenigstens einen Prozessor einer Computervorrichtung ausgeführt werden, bewirken, dass der wenigstens eine Prozessor Operationen ausführt, die umfassen: Empfangen einer Folge von Werten von Textelementen; Bestimmen mit einer oder mehreren Computervorrichtungen einer Bewertung für einen Textelementwert der Folge, wobei sich die Bewertung auf die Wahrscheinlichkeit bezieht, dass ein spezieller Textelementwert gleich einem oder mehreren gegeben Werten ist, und wobei die Wahrscheinlichkeit auf Folgen von Textelementwerten basiert, die mit einem definierten Format konsistent sind; Vergleichen mit der einen oder den mehreren Computervorrichtungen der Bewertung mit einem Schwellenwert; wenn die Bewertung unterhalb eines Schwellenwerts ist, Modifizieren mit der einen oder den mehreren Computervorrichtungen des Wertes des Textelements, um eine modifizierte Folge von Textelementwerten zu bilden; Verarbeiten mit der einen oder den mehreren Computervorrichtungen der modifizierten Folge von Textelementwerten mit einer Gruppe von Anweisungen; und Testen mit der einen oder den mehreren Computervorrichtungen einer Leistungseigenschaft der Gruppe von Anweisungen, wenn die Gruppe von Anweisungen die modifizierte Folge von Textelementwerten verarbeiten.
  2. Computerlesbares Speichermedium nach Anspruch 1, wobei das Bestimmen der Bewertung das Bestimmen der Bewertung basierend auf einem rekurrenten neuronalen Netz, das mit Folgen von Werten von Textelementen, die mit dem definierten Format konform sind, trainiert ist, umfasst.
  3. Computerlesbares Speichermedium nach Anspruch 2, wobei das rekurrente neuronale Netz ein neuronales Netz vom "Long-Short Term Memory"-Typ (LSTM-Typ) ist.
  4. Computerlesbares Speichermedium nach Anspruch 2 oder 3, wobei die Folgen von Werten von Textelementen, die mit dem definierten Format konform sind, über das Internet zugreifbar sind.
  5. Computerlesbares Speichermedium nach Anspruch 4, wobei das definierte Format HTML oder PDF ist.
  6. Computerlesbares Speichermedium nach einem der Ansprüche 1 bis 5, wobei die Operationen ferner das Bestimmen eines Testwerts basierend auf der Leistungseigenschaft umfassen.
  7. Computerlesbares Speichermedium nach Anspruch 6, wobei die Operationen ferner umfassen: Bestimmen einer Testbewertung basierend auf der Leistungseigenschaft; und Fortfahren, einen Testwert für eine gegebene Folge von Textelementwerten zu bestimmen, einen Wert eines oder mehrerer Textelemente der gegebenen Folge von Textelementwerten zu modifizieren und die Leistungseigenschaft der Anweisungen mit der gegebenen Folge zu testen, bis der Testwert einen Schwellenwert übersteigt.
  8. System, das umfasst: eine oder mehrere Computervorrichtungen und einen Speicher, der Anweisungen speichert, die durch die eine oder die mehreren Computervorrichtungen ausführbar sind, wobei die Anweisungen umfassen: Empfangen einer initialen Folge von Textelementen, die Werte aufweisen; Bestimmen einer ersten Bewertung für den Wert eines ersten Textelements aus der initialen Folge, wobei sich das Bestimmen der Bewertung in Bezug auf den Wert eines speziellen Textelements in einer speziellen Folge von Textelementen darauf bezieht, wie häufig der Wert des speziellen Textelements denselben oder ähnlichen Folgen von Textelementwerten, die mit einem definierten Format konsistent sind, folgt; Bestimmen einer zweiten Bewertung für den Wert eines zweiten Textelements der initialen Folge, wobei ein drittes Textelement zwischen dem ersten und dem zweiten Textelement in der initialen Folge vorhanden ist; Vergleichen der ersten und der zweiten Bewertung mit einem Schwellenwert; wenn die erste und die zweite Bewertung oberhalb des Schwellenwerts sind, Erzeugen einer modifizierten Folge von Textelementen, die Werte aufweisen, wobei der Wert eines ersten Textelements in der modifizierten Folge gleich dem Wert des ersten Textelements in der initialen Folge ist, der Wert eines zweiten Textelements in der modifizierten Folge gleich dem Wert des zweiten Textelements in der initialen Folge ist, der Wert eines dritten Textelements in der modifizierten Folge von dem Wert des dritten Textelements in der initialen Folge verschieden ist und das dritte Textelement zwischen dem ersten und dem zweiten Textelement in der Folge ist; Verarbeiten mit der einen oder den mehreren Computervorrichtungen der modifizierten Folge von Textelementen mit einer Anwendung; und Testen mit der einen oder den mehreren Computervorrichtungen einer Leistungseigenschaft der Anwendung, wenn die Anwendung die modifizierte Folge von Textelementwerten verarbeitet.
  9. System nach Anspruch 8, wobei das Bestimmen einer Bewertung das Bestimmen der Bewertung basierend auf einem rekurrenten neuronalen Netz, das mit Folgen von Textelementwerten trainiert ist, die mit einem definierten Format konsistent sind, umfasst.
  10. System nach Anspruch 9, wobei das rekurrente neuronale Netz ein neuronales Netz vom "Long-Short Term Memory"-Typ (LSTM-Typ) ist.
  11. System nach Anspruch 10, wobei das definierte Format PDF ist, das neuronale Netz mit PDF-Dokumenten trainiert ist und die Anwendung einen PDF-Reader umfasst.
  12. System nach einem der Ansprüche 8 bis 11, wobei die Anweisungen ferner umfassen: Empfangen der modifizierte Folge von Textelementen, die Werte aufweisen, wobei die modifizierte Folge ein viertes, ein fünftes und ein sechstes Textelement enthält, wobei das sechste Textelement zwischen dem vierten und dem fünften Textelement ist; Bestimmen einer vierten Bewertung für den Wert eines vierten Textelements der modifizierten Folge, Bestimmen einer fünften Bewertung für den Wert eines fünften Textelements der modifizierten Folge, Vergleichen der vierten und der fünften Bewertung mit dem Schwellenwert; wenn die erste, die zweite, die vierte und die fünfte Bewertung oberhalb des Schwellenwerts sind, Modifizieren des Werts des dritten Textelements, so dass er mit dem Wert des sechsten Textelements übereinstimmt.
  13. System nach Anspruch 12, wobei die Anweisungen ferner das Modifizieren des Werts des sechsten Textelements, so dass er mit dem Wert des dritten Textelements übereinstimmt, umfassen.
  14. System, das umfasst: eine oder mehrere Computervorrichtungen; einen Speicher, der Anweisungen speichert, die durch die eine oder die mehreren Computervorrichtungen ausführbar sind; wobei die Anweisungen umfassen: Empfangen eines Dokuments, das eine Folge von Textzeichen beinhaltet; Bestimmen einer Bewertung für jedes aus den mehreren Zeichen des Dokuments, wobei die Bewertung eines Zeichens basierend auf dem Wert des Zeichens, dem Wert eines oder mehrerer vorangehender Zeichen in dem Dokument und einer Maschinenlernkomponente, die mit Folgen von Zeichen trainiert ist, die mit dem definierten Format konform sind, bestimmt wird; wenn die Bewertung eines Zeichens unterhalb eines Schwellenwerts ist, Zuordnen des Zeichens zu einer Gruppe von Zeichen, die für Modifikation geeignet sind; Modifizieren wenigstens eines Zeichens in der Gruppe von Zeichen; und nach dem Modifizieren wenigstens eines Zeichens in der Gruppe von Zeichen Messen der Leistung einer Anwendung, wenn die Anwendung das Dokument verarbeitet.
  15. System nach Anspruch 14, wobei die Maschinenlernkomponente ein rekurrentes neuronales Netz umfasst.
  16. System nach Anspruch 15, wobei das rekurrente neuronale Netz ein neuronales Netz vom "Long-Short Term Memory"-Typ (LSTM-Typ) ist.
  17. System nach einem der Ansprüche 14 bis 16, wobei das Modifizieren eines Zeichens Ersetzen des Zeichens durch mehrere Zeichen umfasst.
  18. System nach einem der Ansprüche 14 bis 16, wobei das Modifizieren eines Zeichens Ersetzen des Zeichens durch andere Zeichen in der Gruppe von Zeichen umfasst.
  19. System nach einem der Ansprüche 14 bis 18, wobei die Bewertung eines Zeichens ferner auf dem Wert von wenigstens zwei vorangehenden Zeichen in dem Dokument basiert.
  20. System nach einem der Ansprüche 14 bis 19, wobei das empfangene Dokument ein erstes Dokument ist und wobei die Anweisungen ferner umfassen: Erzeugen eines zweiten Dokuments, das eine Kopie des ersten Dokuments ist, nachdem das wenigstens eine oder die mehreren Zeichen modifiziert worden sind, Bestimmen der Bewertungen der Zeichen des zweiten Dokuments, Modifizieren wenigstens eines Zeichens des zweiten Dokuments basierend auf der Bewertung des Zeichens; und abhängig von der Leistung der Anwendung Erzeugen eines dritten Dokuments, das eine Kopie des zweiten Dokuments ist, nachdem das wenigstens eine oder die mehreren Zeichen des zweiten Dokuments modifiziert worden sind, Bestimmen der Bewertungen der Zeichen des dritten Dokuments, Modifizieren wenigstens eines Zeichens des dritten Dokuments basierend auf der Bewertung des Zeichens und Messen der Leistung der Anwendung, wenn die Anwendung das dritte Dokument verarbeitet.
DE202017105654.6U 2016-11-23 2017-09-19 Testen von Anwendungen mit einem definierten Eingabeformat Active DE202017105654U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/360,554 2016-11-23
US15/360,554 US9977729B1 (en) 2016-11-23 2016-11-23 Testing applications with a defined input format

Publications (1)

Publication Number Publication Date
DE202017105654U1 true DE202017105654U1 (de) 2018-01-19

Family

ID=60162247

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102017121649.9A Pending DE102017121649A1 (de) 2016-11-23 2017-09-19 Testen von Anwendungen mit einem definierten Eingabeformat
DE202017105654.6U Active DE202017105654U1 (de) 2016-11-23 2017-09-19 Testen von Anwendungen mit einem definierten Eingabeformat

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE102017121649.9A Pending DE102017121649A1 (de) 2016-11-23 2017-09-19 Testen von Anwendungen mit einem definierten Eingabeformat

Country Status (5)

Country Link
US (2) US9977729B1 (de)
CN (2) CN113110988B (de)
DE (2) DE102017121649A1 (de)
GB (2) GB2590140B (de)
WO (1) WO2018097895A1 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10514913B2 (en) * 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10474562B2 (en) * 2017-09-20 2019-11-12 Salesforce.Com Machine learning based ranking of test cases for software development
WO2019222656A1 (en) * 2018-05-18 2019-11-21 Google Llc Systems and methods for debugging neural networks with coverage guided fuzzing
CN108944930B (zh) * 2018-07-05 2020-04-21 合肥工业大学 一种基于lstm的模拟驾驶员特性的自动跟车方法及系统
CN112771530B (zh) * 2018-09-27 2024-08-20 谷歌有限责任公司 用于交互式web文档的自动导航的方法和系统
CN109522221B (zh) * 2018-10-26 2021-08-31 中国科学院信息工程研究所 一种提高模糊测试效率的方法和系统
CN109598334B (zh) * 2018-12-03 2021-06-29 中国信息安全测评中心 一种样本生成方法及装置
US10474564B1 (en) * 2019-01-25 2019-11-12 Softesis Inc. Identifying user interface elements using element signatures
US11157479B2 (en) * 2019-04-08 2021-10-26 Microsoft Technology Licensing, Llc Leveraging a collection of training tables to accurately predict errors within a variety of tables
US11281567B1 (en) * 2020-06-02 2022-03-22 Meta Platforms, Inc. Selecting an optimal subset of software tests for execution
CN112530235A (zh) * 2020-12-15 2021-03-19 深圳市新亚恒利科技有限公司 一种快速阅读训练控制方法、装置、设备及存储介质
US11775878B2 (en) 2020-12-22 2023-10-03 Sas Institute Inc. Automated machine learning test system
CN114385491B (zh) * 2021-12-30 2024-06-18 大连理工大学 一种基于深度学习的js转译器缺陷检测方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369574A (en) * 1990-08-01 1994-11-29 Canon Kabushiki Kaisha Sentence generating system
DE4306508A1 (de) * 1993-03-03 1994-09-08 Philips Patentverwaltung Verfahren und Anordnung zum Ermitteln von Wörtern in einem Sprachsignal
US5523945A (en) * 1993-09-17 1996-06-04 Nec Corporation Related information presentation method in document processing system
US7117153B2 (en) * 2003-02-13 2006-10-03 Microsoft Corporation Method and apparatus for predicting word error rates from text
KR100857862B1 (ko) * 2007-06-05 2008-09-10 한국전자통신연구원 파일 영역 정보와 변이 규칙을 이용한 파일 변이 방법 및그 시스템
US8862940B2 (en) 2012-02-14 2014-10-14 Microsoft Corporation Integrated fuzzing
US9043349B1 (en) * 2012-11-29 2015-05-26 A9.Com, Inc. Image-based character recognition
US9367435B2 (en) * 2013-12-12 2016-06-14 Vertafore, Inc. Integration testing method and system for web services
US9558089B2 (en) 2014-11-12 2017-01-31 Intuit Inc. Testing insecure computing environments using random data sets generated from characterizations of real data sets
CN104965784B (zh) * 2015-06-16 2017-12-26 广州华多网络科技有限公司 自动测试方法及装置
CN106095684B (zh) * 2016-06-17 2019-01-29 北京大学 一种预测性变异测试方法
US10452526B2 (en) * 2017-06-15 2019-10-22 Microsoft Technology Licensing, Llc Machine learning for constrained mutation-based fuzz testing

Also Published As

Publication number Publication date
WO2018097895A1 (en) 2018-05-31
US9977729B1 (en) 2018-05-22
US20180181486A1 (en) 2018-06-28
GB201715225D0 (en) 2017-11-08
CN113110988B (zh) 2022-07-29
GB2556978A (en) 2018-06-13
GB202015227D0 (en) 2020-11-11
CN108089974A (zh) 2018-05-29
GB2556978B (en) 2020-11-04
US10095610B2 (en) 2018-10-09
GB2590140A (en) 2021-06-23
GB2590140B (en) 2021-09-08
CN113110988A (zh) 2021-07-13
DE102017121649A1 (de) 2018-05-24
US20180143896A1 (en) 2018-05-24
CN108089974B (zh) 2021-03-26

Similar Documents

Publication Publication Date Title
DE202017105654U1 (de) Testen von Anwendungen mit einem definierten Eingabeformat
Cain et al. Univariate and multivariate skewness and kurtosis for measuring nonnormality: Prevalence, influence and estimation
US11562099B1 (en) Sanitization of content displayed by web-based applications
CN107808011B (zh) 信息的分类抽取方法、装置、计算机设备和存储介质
US11842257B2 (en) System and method for predicting and scoring a data model
JP6827116B2 (ja) ウェブページのクラスタリング方法及び装置
DE112013002255T5 (de) Verfahren und Vorrichtung zum Einfügen von Daten
US9141596B2 (en) System and method for processing markup language templates from partial input data
DE112020003365T5 (de) Überwachte kreuzmodale wiedergewinnung für zeitreihen und text unter verwendung von multimodalen triplettverlusten
DE102021202469A1 (de) System und verfahren zur generativen textzusammenfassung
DE112020003538T5 (de) Kreuzmodale wiedergewinnung mit wortüberlappungsbasiertem clustern
CN111488422A (zh) 一种结构化数据样本的增量方法、装置、电子设备及介质
DE112010004914T5 (de) Indexieren von Dokumenten
US20160034378A1 (en) Method and system for testing page link addresses
CN111737472A (zh) 文本分类模型的更新方法及系统、电子设备及存储介质
US20230368550A1 (en) Text extraction using optical character recognition
DE112023000325T5 (de) Auswahl der sicherheitsrichtlinie auf der grundlage der berechneten unsicherheit und des vorhergesagten ressourcenverbrauchs
CN109977423B (zh) 一种生词处理方法、装置、电子设备和可读存储介质
CN110956170A (zh) 生成护照机读码样本的方法、装置、设备及存储介质
US20180075157A1 (en) Method and System for Converting Disparate Financial, Regulatory, and Disclosure Documents to a Linked Table
DE112020000116B4 (de) Erkennung von exploit-kits
JP7511341B2 (ja) 情報処理システム、情報処理システムの制御方法、及びプログラム
CN112784006B (zh) 一种书籍推荐方法、装置、电子设备及可读存储介质
JP6834797B2 (ja) 抽出プログラム、抽出方法および抽出装置
Telu Durga et al. News Portal

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years