-
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 4–6 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".