Ich versuche herauszufinden, wie man eine Codeabdeckung in einem verteilten System testet - d.h. ein System, das aus mehreren ausführbaren Dateien besteht, die nur gemeinsam etwas Sinnvolles tun (und tatsächlich von einander gestartet werden). Hat jemand ein ähnliches Problem in Angriff genommen, und welche Werkzeuge haben Sie verwendet?
Antwort
Zu viele Anzeigen?Sie können natürlich unabhängig voneinander Daten zur Testabdeckung für jedes verteilte Teil sammeln. Das erste Problem besteht darin, dass die verteilten Teile in verschiedenen Sprachen kodiert sein können (z. B. C++ und Java), so dass Sie für jede Sprache ein eigenes Testabdeckungstool benötigen. Wenn Sie nur die Daten der verteilten Elemente unabhängig voneinander betrachten wollen, sollte dies einfach sein, abgesehen von den Unannehmlichkeiten, die die Verwaltung der verschiedenen Teile mit sich bringt. Verwenden Sie die Testabdeckungsanzeige jedes Testabdeckungstools, um die Abdeckung für den entsprechenden Teil anzuzeigen.
Wenn die Frage lautet: "Wie sammelt man integrierte Testabdeckungsdaten für das gesamte System?", dann müssen Sie die Testabdeckungsdaten für die einzelnen verteilten Teile alle zur gleichen Zeit sammeln, wenn Sie einen Test durchführen. (Dabei spielt es keine Rolle, ob Sie Unit- oder Systemtests durchführen).
Anschließend müssen Sie diese Ergebnisse in einer einzigen Übersicht für das gesamte System zusammenstellen.
Viele Tools kombinieren nicht die Testabdeckung von verschiedenen Programmen. Daher müssen Sie dies wahrscheinlich selbst in die Hand nehmen. Wenn alle Ihre verteilten Codeelemente in einer Sprache vorliegen, haben Sie den Vorteil, dass Sie nur eine Darstellung der Testabdeckungsdaten haben, aber den Nachteil, dass diese wahrscheinlich nicht sehr gut dokumentiert ist. Normalerweise werden diese Daten direkt von einem Viewer angezeigt, und der Anbieter des Testabdeckungswerkzeugs hat wenig Grund, zu dokumentieren, wie die Testabdeckungsdaten kodiert sind. Oftmals werden dann Ad-hoc-Tools entwickelt, um diese Daten zu kombinieren, wenn man die Darstellung herausfinden kann.
Wenn Sie mehrere Sprachen und mehrere Testabdeckungstools verwenden, haben Sie wahrscheinlich mehrere Testabdeckungsrepräsentationen und die Ad-hoc-Lösung wird viel schwieriger, wenn Sie sie überhaupt durchführen können.
Unser Testabdeckungs-Tools haben die angenehme Eigenschaft, dass sie eine große Vielfalt an Sprachen und Dialekten abdecken (C, C++, C#, Java, PLSQL, COBOL, PHP, ...), dass sie alle die gleiche Darstellung für Testabdeckungsvektoren verwenden und dass das mitgelieferte Tool zur Anzeige der Testabdeckung diese Informationen für Sie kombiniert (über die Benutzeroberfläche auswählbare Aktion). Kein Rätselraten oder Ad-hoc-Verfahren, sondern eine Ansicht des gesamten Codes in den verschiedenen Sprachen (auch wenn diese auf unterschiedlichen Rechnern laufen) mit der vollständigen Testabdeckung für die gesamte verteilte Anwendung.