Frage

Ich bin Einführung automatisierte Integrationstests auf eine ausgereifte Anwendung, die ist bisher nur manuell getestet.

Die App ist Windows-basiert und spricht mit einer MySQL-Datenbank.

Was ist der beste Weg (einschließlich einer Beschreibung der empfohlenen Werkzeuge) Tests unabhängig voneinander zu halten in Bezug auf die Datenbanktransaktionen, die auftreten wird?

(Änderungen an der App-Quelle für diesen speziellen Zweck sind keine Option.)

War es hilfreich?

Lösung

Wie Verifizieren Sie die Ergebnisse?

Wenn Sie die DB abzufragen (und es klingt wie Sie wahrscheinlich tun) für die Ergebnisse dann bin ich mit Kris K, außer ich mich bemühen würde die DB nach jedem Testfall neu zu erstellen, nicht nur jede Suite.

Dies hilft gefährlich Tests

interagieren

Wie für Werkzeuge, würde ich empfehlen, CppUnit . Sie sind wirklich nicht Unit-Tests zu tun, aber es sollte keine Rolle spielen, wie die xUnit Rahmen sollten Sie geben den Aufbau und Abrüsten Rahmen Sie automatisch benötigen, um auf Ihre Prüfadapter

Offensichtlich ist dies in langsam laufenden Tests zur Folge haben kann, je nach Datenbankgröße, Bevölkerung etc. Sie können in der Lage sein, Datenbanken zu Anbringen / Abnehmen anstatt abzufallen / neu zu erstellen.

Wenn Sie in die weitere Forschung interessiert sind, überprüfen XUnit Testmuster . Es ist ein schönes Buch und eine gute Website für diese Art der Sache.

Und vielen Dank für die Automatisierung:)

Nick

Andere Tipps

Sie können Dump / Wiederherstellen der Datenbank für jede Testsuite usw. Da Sie dies zu automatisieren, kann es etwas im Setup / Teardown Funktionalität sein.

ich verwendet, um die Datenbank in der Setup-Funktion der Datenbank bezogenen Unit-Test-Klasse wiederherzustellen. Auf diese Weise wurde sichergestellt, dass jeder Testlauf unter den gleichen Bedingungen.

Sie können prüfen, für die Tests spezielle Datenbank Gehalt herzustellen, das heißt mit weniger Daten als die aktuelle Produktionsversion (halten die Wiederherstellungszeiten sinnvoll).

Die beste Umgebung für eine solche Prüfung, glaube ich, ist VMWare oder ein Äquivalent. Legen Sie Ihre Datenbank, Transaktionsprotokoll und so weiter, dann die ganze Menge aufnehmen - Datenbank sowie Konfiguration. Dann Test erneut, laden Sie das Bild und die Datenbank und die Tests beginnen. Dies erfordert noch die Wartung der Tests, wie die Systemänderungen, aber zumindest die Tests sind wiederholbar, die eine Ihrer größten Herausforderungen in den Integrationstests ist.

Für die Testautomatisierung, verwenden viele Menschen Perl, aber wir haben festgestellt, dass Perl-Programme wie Topsy wachsen und gewunden werden. Die Verwendung von Python als Skriptsprache (wir laufen C ++ Tests) lohnt sich, wenn Sie versuchen, eine Reihe von strukturierten Tests zu bauen.

Wie @ Kris K. sagt Dumping und Wiederherstellen der Datenbank zwischen jedem Test wird wahrscheinlich der Weg zu gehen.

Da Sie tun suchen Prüfung außerhalb der App würde ich sehe den Test-Framework in einer Sprache zu bauen, wo Sie die Vorteile der besseren Test-Tool nutzen.

Wenn Sie den Test-Framework in Java gebaut Sie die Vorteile von JUnit nehmen könnten und möglicherweise sogar so etwas wie < a href = "http://fitnesse.org/" rel = "nofollow noreferrer"> FitNesse .

Denken Sie nicht, dass, nur weil die zu testende Anwendung ist C ++, das heißt, Sie stecken mit C ++ für automatisierte Tests.

Bitte versuchen Sie AnyDbTest, ich denke, es ist das sehr Werkzeug ist, die Sie finden. ( www.anydbtest.com ).

Features:

  • 1.Writing Testfall mit XML, nicht Java / C ++ / C # / VB-Code. Nicht brauchen die teuren Programmiertools.

  • 2.Supports alle gängigen Datenbanken wie Oracle / SQL Server / My SQL

  • 3.So viele Arten von Behauptung unterstützt, wie StrictEqual, SetEqual, IsSupersetOf, Überlappungen und RecordCountEqual usw. Darüber hinaus können die meisten Behauptungen Präfix Logik nicht Operator.

  • 4.Allows eine Excel-Tabelle / XML als die Quelle der Daten für die Tests verwendet. Wie Sie wissen, ist Excel-Tabelle leicht bearbeiten / erstellen und die Testdaten beibehalten.

  • 5.Supports Sandbox-Testmodell, wenn ein Test in Sandbox ausgeführt werden wird, wird alle Datenbankoperationen auf jeder DB gerollt werden alle Änderungen rückgängig gemacht werden zurück bedeutet.

  • 6.Allows Durchführen von Datenpumpe aus einer Datenbank / Excel in der Zieldatenbank bei der Prüfung der Initialisierung und Abschlussphase. Das ist einfache Möglichkeit, die Testdaten für die Prüfung vorzubereiten.

  • 7.Unique Quer unterschiedlicher Typ Datenbank-Tests, was bedeutet, Ziel- und Referenzergebnismenge aus zwei Datenbanken kommen kann, auch ein SQL-Server, ein anderes ist Oracle.

  • 8.Set Stil Vergleich für Recordset. AnyDbTest wird Ihnen sagen, was die Kreuzung ist oder einen Überschuss oder Abwesenheit zwischen den beiden Datensätzen.

  • 9.Sequential Stil Vergleich für Recordset oder skalare Werte. Es bedeutet, dass die beiden Ergebnismengen werden in ihrer ursprünglichen Reihenfolge verglichen werden.

  • 10.Allow Ergebnismenge von SQL-Anweisung in XML / Excel-Datei exportiert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top