Ich arbeite mit folgendem System:
Network Data Feed -> Third Party Nio Library -> My Objects via adapter pattern
Wir hatten kürzlich ein Problem, bei dem ich die von mir verwendete Version der Bibliothek aktualisiert habe. Dies führte unter anderem dazu, dass Zeitstempel (die von der Bibliothek eines Drittanbieters zurückgegeben werden long
) von Millisekunden nach der Epoche auf Nanosekunden nach der Epoche geändert wurden.
Das Problem:
Wenn ich Tests schreibe, die die Objekte der Drittanbieterbibliothek verspotten, ist mein Test falsch, wenn ich bei den Objekten der Drittanbieterbibliothek einen Fehler gemacht habe. Zum Beispiel habe ich nicht bemerkt, dass sich die Genauigkeit der Zeitstempel geändert hat, was dazu führte, dass der Komponententest geändert werden musste, da mein Modell die falschen Daten zurückgab. Dies ist kein Fehler in der Bibliothek , es ist passiert, weil ich etwas in der Dokumentation verpasst habe.
Das Problem ist, ich kann nicht sicher sein, welche Daten in diesen Datenstrukturen enthalten sind, da ich ohne einen echten Datenfeed keine echten generieren kann. Diese Objekte sind groß und kompliziert und enthalten viele verschiedene Daten. Die Dokumentation für die Drittanbieter-Bibliothek ist schlecht.
Die Frage:
Wie kann ich meine Tests einrichten, um dieses Verhalten zu testen? Ich bin nicht sicher, ob ich dieses Problem in einem Komponententest lösen kann, da der Test selbst leicht falsch sein kann. Darüber hinaus ist das integrierte System groß und kompliziert und es ist leicht, etwas zu übersehen. In der obigen Situation hatte ich beispielsweise das Timestamp-Handling an mehreren Stellen korrekt angepasst, aber einen davon habe ich verpasst. Das System schien in meinem Integrationstest hauptsächlich die richtigen Dinge zu tun, aber als ich es für die Produktion bereitstellte (mit viel mehr Daten), wurde das Problem offensichtlich.
Ich habe momentan keinen Prozess für meine Integrationstests. Testen ist im Wesentlichen: Versuchen Sie, die Einheitentests in Ordnung zu halten, fügen Sie weitere Tests hinzu, wenn Probleme auftreten, und stellen Sie sie dann auf meinem Testserver bereit. Stellen Sie sicher, dass die Dinge vernünftig erscheinen. Dieses Problem mit dem Zeitstempel bestand die Komponententests, da die Mocks falsch erstellt wurden, und bestand dann den Integrationstest, weil keine unmittelbaren, offensichtlichen Probleme aufgetreten sind. Ich habe keine QS-Abteilung.
Timestamp
Rückklasse (mit einem beliebigen Darstellung sie wollen) und liefert genannte Verfahren ( .seconds()
, .milliseconds()
, .microseconds()
, .nanoseconds()
) und natürlich den Namen Konstrukteure. Dann hätte es keine Probleme gegeben.