/ / Softwaretests - Der Prozess zum Erkennen von Fehlern in einem Softwareprodukt

Softwaretests - Der Prozess zum Erkennen von Fehlern in einem Softwareprodukt

Bei der Entwicklung von SoftwareEin wesentlicher Teil des Produktionsprozesses beruht auf Softwaretests. Was dies ist und wie solche Aktivitäten ausgeführt werden, wird in diesem Artikel erörtert.

Was heißt Testen?

Softwaretests

Damit meinen wir den Prozess, in demAusführen von Software zum Erkennen von Stellen, an denen der Code nicht ordnungsgemäß funktioniert. Um das beste Ergebnis zu erzielen, werden absichtlich schwierige Sätze von Eingabedaten erstellt. Das Hauptziel des Inspektors besteht darin, optimale Möglichkeiten für den Ausfall von Softwareprodukten zu schaffen. Obwohl das Testen eines entwickelten Programms manchmal zu dem üblichen Test der Leistung und der Leistung von Funktionen vereinfacht werden kann. Dies spart Zeit, geht jedoch häufig mit Unzuverlässigkeit der Software, Unzufriedenheit der Benutzer usw. einher.

Effektivität

Wie gut und schnell Fehler gefunden werden,Beeinflusst erheblich die Kosten und die Dauer der Softwareentwicklung in der gewünschten Qualität. Trotz der Tatsache, dass Tester Gehälter erhalten, die um ein Vielfaches niedriger sind als die der Programmierer, betragen die Kosten für ihre Dienstleistungen normalerweise 30 - 40% der Kosten des gesamten Projekts. Dies ist auf die Anzahl der Mitarbeiter zurückzuführen, da es ungewöhnlich und ziemlich schwierig ist, nach Fehlern zu suchen. Aber selbst wenn die Software eine erhebliche Anzahl von Tests bestanden hat, gibt es keine 100% ige Garantie dafür, dass es keine Fehler gibt. Es ist einfach nicht bekannt, wann sie erscheinen werden. Um die Tester zu motivieren, die Arten von Prüfungen auszuwählen, bei denen Fehler wahrscheinlicher sind, werden verschiedene Motivationsmittel verwendet: moralische und materielle.

Arbeitsansatz

Computer testen

Die optimale Situation ist wennEs werden verschiedene Mechanismen implementiert, um sicherzustellen, dass die Software von Anfang an fehlerfrei ist. Dazu ist es notwendig, sich um ein kompetentes Architekturdesign zu kümmern, eine klare technische Aufgabe, und es ist auch wichtig, keine Korrekturen im Zusammenhang mit bereits begonnenen Projektarbeiten vorzunehmen. In diesem Fall steht der Tester vor der Aufgabe, eine kleine Anzahl von Fehlern zu finden und zu bestimmen, die im Endergebnis verbleiben. Das spart Zeit und Geld.

Was ist ein Test?

Dies ist ein wichtiger Aspekt der Aktivität.der Inspektor, der für die erfolgreiche Erkennung von Programmcodefehlern notwendig ist. Sie sind notwendig, um die Richtigkeit der Anwendung zu kontrollieren. Was ist im Test enthalten? Es besteht aus anfänglichen Daten und Werten, die sich als resultierend (oder intermediär) herausstellen sollten. Um Probleme und Inkonsistenzen erfolgreicher identifizieren zu können, müssen Tests kompiliert werden, nachdem der Algorithmus entwickelt wurde, die Programmierung jedoch noch nicht begonnen hat. Darüber hinaus ist es wünschenswert, bei der Berechnung der erforderlichen Daten verschiedene Ansätze zu verwenden. In diesem Fall erhöht sich die Wahrscheinlichkeit, einen Fehler zu erkennen, da Sie den Code aus einem anderen Blickwinkel untersuchen können. Integrierte Tests sollten die Überprüfung der externen Auswirkungen des fertigen Softwareprodukts sowie seiner Betriebsalgorithmen ermöglichen. Von besonderem Interesse sind marginale und entartete Fälle. In der Praxis kann bei fehlerhaften Aktivitäten häufig festgestellt werden, dass der Zyklus einmal weniger oder mehr als geplant ausgeführt wird. Es ist auch wichtig, den Computer zu testen, mit dem Sie die Übereinstimmung mit dem gewünschten Ergebnis auf verschiedenen Maschinen überprüfen können. Dies ist notwendig, um sicherzustellen, dass die Software auf allen Computern funktioniert. Darüber hinaus ist es wichtig, den Computer zu testen, auf dem die Entwicklung ausgeführt werden soll, wenn Sie eine plattformübergreifende Entwicklung erstellen.

Die Kunst, Fehler zu finden

Testen durch

Programme zielen oft darauf ab, mit riesigen zu arbeitenein Array von Daten. Ist es wirklich notwendig, es komplett zu erstellen? Nein. Die Praxis der "Miniaturisierung" des Programms ist weit verbreitet. In diesem Fall ist die Datenmenge im Vergleich zu der Menge, die verwendet werden soll, angemessen reduziert. Schauen wir uns ein Beispiel an: Es gibt ein Programm, in dem eine 50x50-Matrix erstellt wird. Mit anderen Worten, Sie müssen 2500.000 Werte manuell eingeben. Dies ist natürlich möglich, aber es wird sehr lange dauern. Um die Funktionsfähigkeit zu testen, erhält das Softwareprodukt eine Matrix mit den Abmessungen 5x5. Dazu müssen Sie 25 Werte eingeben. Wenn in diesem Fall ein normaler, fehlerfreier Betrieb beobachtet wird, bedeutet dies, dass alles in Ordnung ist. Obwohl es hier Fallstricke gibt, die bedeuten, dass während der Miniaturisierung eine Situation auftritt, in deren Folge Änderungen implizit werden und vorübergehend verschwinden. Es ist auch sehr selten, aber es kommt immer noch vor, dass neue Fehler auftreten.

Verfolgte Ziele

Softwaretests sind aufgrund von nicht einfachdie Tatsache, dass dieser Prozess nicht vollständig formalisiert werden kann. Größere Programme haben fast nie den notwendigen exakten Benchmark. Daher wird eine Reihe von indirekten Daten als Richtlinie verwendet, die jedoch die Eigenschaften und Funktionen von Softwareentwicklungen, die gerade getestet werden, nicht vollständig widerspiegeln. Darüber hinaus müssen sie so ausgewählt werden, dass das korrekte Ergebnis bereits vor dem Testen des Softwareprodukts berechnet wird. Wenn dies nicht im Voraus erfolgt, besteht die Versuchung, alles näher zu betrachten, und wenn das Maschinenergebnis in den erwarteten Bereich fällt, wird fälschlicherweise entschieden, dass alles in Ordnung ist.

Testen unter verschiedenen Bedingungen

Softwareprodukt

Das Testen von Programmen erfolgt in der Regel inVolumes, die erforderlich sind, um Funktionstests in begrenztem Umfang zu minimieren. Aktivitäten werden mit sich ändernden Parametern sowie deren Arbeitsbedingungen durchgeführt. Der Testprozess kann in drei Phasen unterteilt werden:

  • Überprüfung unter normalen Bedingungen. In diesem Fall wird die Hauptfunktionalität der entwickelten Software getestet. Das Ergebnis sollte wie erwartet sein.
  • Überprüfen Sie die Notfallbedingungen.In diesen Fällen wird davon ausgegangen, dass Grenzdaten vorliegen, die die Leistung der erstellten Software beeinträchtigen können. Ein Beispiel ist die Arbeit mit extrem großen oder kleinen Zahlen oder im Allgemeinen das völlige Fehlen von erhaltenen Informationen.
  • Ausnahmecheck.Es geht um die Verwendung von Daten, die über die Verarbeitung hinausgehen. In solchen Situationen ist es sehr schlecht, wenn die Software sie als für die Berechnung geeignet erkennt und ein plausibles Ergebnis liefert. Es ist darauf zu achten, dass in solchen Fällen nicht korrekt verarbeitbare Daten zurückgewiesen werden. Es ist auch erforderlich, den Benutzer darüber zu informieren.

Softwaretests: Typen

Anwendungsfehler

Erstellen Sie Software ohne Fehlerziemlich schwierig. Dies nimmt viel Zeit in Anspruch. Um ein gutes Produkt zu erhalten, werden häufig zwei Arten von Tests verwendet: Alpha und Beta. Was sind sie Wenn es sich um Alphatests handelt, handelt es sich um Tests, die von Mitarbeitern von Entwicklern unter "Laborbedingungen" durchgeführt werden. Dies ist die letzte Testphase, bevor das Programm an die Endbenutzer übertragen wird. Daher versuchen Entwickler zu maximieren. Zur Vereinfachung der Bedienung können Daten protokolliert werden, um eine Chronologie der Probleme und ihrer Lösungen zu erstellen. Betatests bedeuten die Auslieferung von Software an einen begrenzten Kreis von Benutzern, damit diese das Programm ausführen und fehlende Fehler identifizieren können. Die Besonderheit in diesem Fall ist, dass die Software häufig nicht für den vorgesehenen Zweck verwendet wird. Dadurch werden Störungen erkannt, bei denen bisher nichts bemerkt wurde. Das ist ganz normal und es besteht kein Grund zur Sorge.

Testabschluss

Wenn die vorherigen Schritte erfolgreich abgeschlossen wurden, dannEs bleibt ein Abnahmetest durchzuführen. In diesem Fall wird es eine einfache Formalität. Bei dieser Überprüfung wird bestätigt, dass keine zusätzlichen Probleme gefunden wurden und die Software auf den Markt gebracht werden kann. Je wichtiger das Endergebnis ist, desto sorgfältiger sollte die Überprüfung durchgeführt werden. Es muss sichergestellt werden, dass alle Phasen erfolgreich abgeschlossen werden. So sieht der gesamte Testprozess aus. Kommen wir nun zu den technischen Details und sprechen über nützliche Tools wie Testprogramme. Was sind sie und in welchen Fällen werden sie verwendet?

Automatisiertes Testen

entwickeltes Programm testen

Früher glaubte man, dass dynamische Analyseentwickelte Software - dies ist ein zu schwerer Ansatz, der zum Erkennen von Fehlern ineffizient ist. Aufgrund der zunehmenden Komplexität und des zunehmenden Umfangs der Programme ergab sich jedoch die gegenteilige Auffassung. Automatisierte Tests werden dort eingesetzt, wo Leistung und Sicherheit die wichtigsten Prioritäten sind. Und sie sollten mit jeder Eingabe sein. Als Beispiel für Programme, für die ein solcher Test geeignet ist, können die folgenden angeführt werden: Netzwerkprotokolle, Webserver, Sandboxing. Wir werden mehrere Proben untersuchen, die für eine solche Aktivität verwendet werden können. Wenn Sie an kostenlosen Testprogrammen interessiert sind, ist es schwierig, qualitativ hochwertige zu finden. Es gibt jedoch gehackte "Raubkopien" von bewährten Projekten, sodass Sie sich an deren Dienste wenden können.

Lawine

Dieses Tool hilft beim Erkennen von Fehlern.Bestehen von Testprogrammen im dynamischen Analysemodus. Es sammelt Daten und analysiert den Ausführungspfad des entwickelten Objekts. Der Tester verfügt über eine Reihe von Eingabedaten, die einen Fehler verursachen oder die bestehenden Einschränkungen umgehen. Aufgrund des Vorhandenseins eines guten Verifizierungsalgorithmus wird eine große Anzahl möglicher Situationen entwickelt. Das Programm empfängt verschiedene Sätze von Eingabedaten, mit denen Sie eine erhebliche Anzahl von Situationen simulieren und solche Bedingungen erstellen können, wenn ein Fehler am wahrscheinlichsten ist. Ein wichtiger Vorteil des Programms ist die Verwendung von heuristischen Metriken. Wenn es ein Problem gibt, ist der Anwendungsfehler sehr wahrscheinlich. Dieses Programm hat jedoch Einschränkungen wie das Überprüfen von nur einem markierten Eingabe-Socket oder einer markierten Datei. Während einer Operation wie dem Testen eines Programms werden detaillierte Informationen zum Vorliegen von Problemen mit Nullzeigern, Endlosschleifen, falschen Adressen oder Fehlfunktionen aufgrund der Verwendung von Bibliotheken bereitgestellt. Dies ist natürlich keine vollständige Liste der erkannten Fehler, sondern nur ihre allgemeinen Beispiele. Leider müssen Entwickler die Fehler korrigieren - automatische Werkzeuge sind für diese Zwecke nicht geeignet.

KLEE

Testprogramme

Dies ist ein gutes Programm zum Testen des Gedächtnisses.Es kann ca. 50 Systemaufrufe und eine große Anzahl virtueller Prozesse abfangen und läuft somit parallel und separat ab. Im Allgemeinen sucht das Programm jedoch nicht nach einzelnen verdächtigen Stellen, sondern verarbeitet die maximal mögliche Codemenge und analysiert die verwendeten Datenübertragungspfade. Aus diesem Grund hängt die Testzeit des Programms von der Größe des Objekts ab. Bei der Überprüfung wird die Wette auf symbolische Prozesse gelegt. Sie sind eine der Möglichkeiten, um Aufgaben in einem zu testenden Programm auszuführen. Dank der parallelen Arbeit können eine Vielzahl von Optionen für die zu untersuchende Anwendung analysiert werden. Für jeden Pfad werden nach dem Ende seiner Prüfung die Eingabedatensätze gespeichert, von denen aus die Überprüfung begonnen hat. Es ist zu beachten, dass Testprogramme mit KLEE dazu beitragen, eine große Anzahl von Abweichungen zu identifizieren, die nicht auftreten sollten. Sie kann Probleme auch in Anwendungen finden, die seit Jahrzehnten entwickelt wurden.

Mochte:
0
Beliebte Beiträge
Spirituelle Entwicklung
Essen
Ja