Frage

Ich schrieb einen Anwendungsserver (mit Python & verdrillt) und ich möchte einige Tests zu schreiben beginnen. Aber ich will nicht Verdrehte Trial verwendet aus Zeitgründen und nicht die Zeit mit ihm jetzt spielen zu müssen. Also hier ist das, was ich im Sinn haben: einen kleinen Test-Client schreiben, die auf den App-Server verbindet und macht die notwendigen Anforderungen (das Kommunikationsprotokoll ist einige in-house XML), Speichern in einer statischen Art und Weise der empfangenen XML und dann einige Tests schreiben auf diesen statischen Daten mit UNITEST.

Meine Frage ist: Ist das ein richtiger Ansatz, und wenn ja, welche Art von Tests mit diesem Ansatz fällt

?

Auch mit dieser Methode hat mehrere Nachteile, wie: nicht in der Lage ist, um die Datenbankschicht, um den Zugriff auf das Schema zu bauen / umbauen, wann geht der Test-Client auf den Server verbinden: für jeden Unit-Test oder vor der Ausführung die Testsuite?

War es hilfreich?

Lösung

"Meine Frage ist: Ist das ein richtiger Ansatz?"

Es ist, was Sie gewählt haben. Sie machte eine Menge Ausreden, so gehe ich davon aus, dass Ihr ziemlich gut auf diesem Kurs festgelegt. Es ist nicht die beste, aber Sie haben bereits alle Gründe aufgeführt, es zu tun (und fragten dann Follow-up-Fragen zu dieser speziellen Vorgehensweise). „Richtige“ darf nicht in dem es nicht mehr, so dass es auf diese Frage keine Antwort ist.

"welche Art von Tests mit diesem Ansatz abgedeckt?"

Sie nennen es "black-box" Tests. Der Anwendungsserver ist eine Blackbox, die ein paar Ein- und Ausgänge hat, und Sie können nichts davon Interna testen. Es ist eine akzeptable Form der Prüfung betrachtet, weil sie die Bottom-Line externen Schnittstellen für akzeptables Verhalten prüfen.

Wenn Sie Probleme haben, wird es zu tun diagnostische Arbeit nutzlos erwiesen. Sie werden feststellen, dass Sie White-Box-Tests auch auf den internen Strukturen benötigen.

"nicht in der Lage ist, um die Datenbankschicht, um den Zugriff auf das Schema zu bauen / rebuild"

Warum nicht? Dies ist Python. Schreiben Sie ein separates Tool, das diese Schicht importiert und tut Datenbank aufbaut.

"Wann wird das Test-Client geht auf den Server verbinden: für jeden Unit-Test oder vor der Testsuite"

Abhängig von der Absicht des Tests. Hängt von Ihren Anwendungsfällen. Was in der „realen Welt“ mit Ihren tatsächlichen beabsichtigten Kunden geschieht?

Sie werden Client-Verhalten testen wollen, verbinden die Art und Weise Kunden Verbindungen herstellen.

Auch sollten Sie abnormales Verhalten testen, wie Kunden-Verbindungen oder Dinge zu tun, aus der Ordnung oder nicht verbundenen fallen.

Andere Tipps

Sie sollten Test verwenden. Es ist wirklich nicht sehr hart. Trial Dokumentation stehen könnte verbessert werden, aber wenn Sie wissen, wie die Standard-Bibliothek Unit-Test verwenden, der einzige Unterschied ist, dass anstelle des Schreibens

import unittest

Sie sollten schreiben

from twisted.trial import unittest

... und dann können Sie Deferreds von Ihrer test_ Methode zurück. So ziemlich alles andere ist gleich.

Der einzige andere Unterschied ist, dass anstelle ein riesiges Testobjekt an der Unterseite des Moduls zu bauen und dann läuft

python your/test_module.py

Sie können einfach Ihre Testfälle definieren und führen

trial your.test_module

Wenn Sie nicht über Reaktor Integration kümmern sich überhaupt, in der Tat kann man nur trial auf einer Reihe von bestehenden Python Unit-Tests laufen. Studie unterstützt die Standard-Bibliothek 'unittest' -Modul.

Ich glaube, Sie in die falsche Richtung gewählt haben. Es ist wahr, dass der Test docs sehr leicht ist. Aber Versuch ist Basis auf Unittest und nur ein paar Sachen hinzufügen, mit der Reaktorschleife und den asynchronen Aufrufen zu tun (es ist nicht einfach, Tests zu schreiben, die mit deffers beschäftigen). Alle Tests, die nicht deffer / asynchronen Aufruf einschließlich werden genau wie normaler Unittest.

Der Testbefehl ist ein Test Runner (ein bisschen wie Nase), so dass Sie nicht schreiben Test-Suiten für Ihre Tests müssen. Sie werden Zeit mit ihm speichern. Hinzu kommt, dass der Testbefehl ausgeben kann, Profilieren und Coverage-Informationen. Just do Test -h für weitere Informationen.

Aber in irgendeiner Weise das erste, was man sich fragen sollte, ist, welche Art von Tests durchführen, müssen Sie die meisten, Unit-Tests, Integrationstests oder Systemtests (Black-Box). Es ist möglich, alle mit Test zu tun, aber es ist nicht notwendig, immer in der beste Passform.

haben verdrehte nicht vor verwendet und die verdrehte / Studie Dokumentation ist nicht stellar von dem, was ich gerade gesehen, aber es werde Sie wahrscheinlich 2-3 Tage richtig das Testsystem Sie oben beschreiben zu implementieren. Nun, wie ich sagte, ich habe keine Ahnung von Prozess, aber ich denke, Sie wahrscheinlich bekommen könnten es Arbeit in 1-2 Tagen, da Sie bereits über eine Twisted-Anwendung haben. Nun, wenn Test Ihnen mehr Reichweite in kürzerer Zeit gibt, würde ich mit Test gehen.

Aber denken Sie daran das ist nur eine Antwort von einem sehr oberflächlichen Blick auf der Dokumentation

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