mediathekview / MServer

Server zum Steuern des Crawler
https://mediathekview.de
GNU General Public License v3.0
69 stars 19 forks source link

Infrastruktur für Tests #61

Closed pidoubleyou closed 7 years ago

pidoubleyou commented 7 years ago

Bei den Refactorings sind einige Fehler passiert. Wenn wir UnitTests bzw. Integrationstests hätten, könnten Fehler bereits frühzeitig festgestellt werden.

Dieser Issue soll die Infrastruktur für die Ausführung von Tests herstellen:

noch zu ergänzen...

alex1702 commented 7 years ago

Finde ich sinnvoll und sollte umgesetzt werden. Wenn wir die hier erfolgreich umgesetzt haben können wir auch welche für MSearch und dann später für MediathekView umsetzen.

Nicklas2751 commented 7 years ago

Ich finde das ganze auch gut, was mir etwas sorge bereitet ist welche Sendungen wir als Test Daten nutzen. Da wir ja mit den crawlern immer auf echtdaten zugreifen und die sich ändern bin ich da aktuell noch etwas Ratlos. Ich bin mir auch nicht sicher in wie weit es Sinn machen würde die Webseiten zu mocken.

@pidoubleyou & @alex1702 Habt ihr da schon Ideen was für Testdaten man verwenden könnte? Oder dachtet ihr eher daran "nur" einzelne Methoden zu testen und eher weniger Integrationstests?

alex1702 commented 7 years ago

eventuell könnte man da testserver erstellen. der dann z.b. die ZDF API imitiert und für jeden Sender eine Art beispielseite wo sozusagen example Dateien liegen oder so. Das muss natürlich dann genauso gepflegt werden wie der crawler. man könnte dafür dann vllt auch ein extra Schalter einbauen.

xaverW commented 7 years ago

eventuell könnte man da testserver erstellen. der dann z.b. die ZDF API imitiert

stimmt doch dann wieder nicht mit der realen Umgebung überein/spiegelt evtl. Änderungen wieder?

alex1702 commented 7 years ago

Ja stimmt auch wieder. Ich würde glatt sagen, dass man dann eine extra config/option hat wo der crawler nur 1 minute sucht und dann versucht mit einer abgespeckten filmliste zusammen zu führen. ansonsten würden die tests ja auch zu lange brauchen. die abgespeckte filmliste für den import kann man ja dann auf nem server zur verfügung stellen, sodass da nix zum testen ins git muss.

xaverW commented 7 years ago

gibts schon:

<suchen>
        <suchen-sender-wie>max</suchen-sender-wie> 
        <suchen-liste-wie>alles</suchen-liste-wie>
        <suchen-wann>sofort</suchen-wann>
        <suchen-max-warten>1</suchen-max-warten>
        <suchen-sender></suchen-sender>
</suchen>

Laufzeit 1 Minute, import kann eine ganz normale Liste sein, das dauert ja nicht lange und wenn der import einer alten Liste (was 10 MInuten dauert) nicht zum Test steht, einfach aus dem Config entfernen.

pidoubleyou commented 7 years ago

Ich dachte zunächst an Regressionstests einzelner Methoden bzw. Logiken von MServer, bei denen die Anfragen an die Mediatheken durch Mocks ersetzt sind. Diese verwenden Beispieldaten, die ursprünglich mal von den Mediatheken geliefert wurden.

Auf Integrationstests mit den Mediatheken würde ich zunächst verzichten, da sich das erwartete Ergebnis ständig durch neue/herausgenommene Filme verändert. Eventuell wäre dafür ein Monitoring der Logfiles, die von den Crawler erzeugt werden, sinnvoller.

pidoubleyou commented 7 years ago

Ich habe im Feature Branch #61 einige UnitTests implementiert und dabei ein nötiges Refactoring für bessere Testbarkeit an einer Stelle durchgeführt. Kommentare gerne erwünscht.

Ich werde in den nächsten Tagen noch ein Beispiel für die Deserializer/Tasks des ZDF-Crawlers erstellen.