Testwirkung für teilweise zugeordnete TFVC-Repositorys in TFS/Azure DevOps Services
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Die Testauswirkungsanalyse (TIA) ist seit Version 2 der Aufgabe Teil der VSTest-Aufgabe. Dieses Feature hilft dabei, den DevOps-Zyklus zu beschleunigen, indem es Sie dabei unterstützt, nur relevante Tests für einen Build auszuführen. Letztendlich führen Sie somit nur noch Tests aus, die von eingehenden Änderungen betroffen sind, und nicht die vollständige Testsammlung. Weitere Informationen zur Testauswirkungsanalyse finden Sie unter Beschleunigen von Tests mithilfe der Testauswirkungsanalyse (TIA).
Zusätzlich zur Unterstützung von GitHub und Git in Azure DevOps unterstützt TIA auch TFVC. In diesem Artikel wird eine bekannte Einschränkung von TIA in Build-/Releasepipelines auf Basis von TFVC beschrieben sowie eine Problemumgehung, um diese Einschränkung zu überwinden.
Problem mit teilweise zugeordneten TFVC-Repositorys
TIA funktioniert so, dass es Daten zu den Dateien sammelt, die eine Testmethode während ihrer ersten Ausführung berührt, auch als Baselinelauf bezeichnet. Der Collector, der diese Daten sammelt, sieht nur das eingetragene Repository auf dem Agent-Computer. Bei TFVC-basierten Pipelines erhalten Sie eine Möglichkeit zum Eintragen teilweiser Repositorys. Betrachten Sie beispielsweise ein Repository mit der folgenden Struktur.
Nun wird in Ihrer Build-/Releasepipeline die Kachel Quellen abrufen unter Prozess angezeigt, wie im folgenden Beispiel gezeigt.
Wählen Sie Quellen abrufen aus, und auf dem rechten Blatt werden Optionen zum teilweisen Zuordnen Ihres Repositorys angezeigt.
Wenn Sie das gesamte Repository eintragen, wie im vorherigen Beispiel gezeigt, funktioniert TIA weiterhin einwandfrei. Wenn Sie die Eintragung jedoch wie im folgenden Beispiel nur teilweise vornehmen, findet TIA die betroffenen Tests nicht.
Wenn ein TFVC-Repository teilweise eingetragen ist, findet TIA die betroffenen Tests nicht, weil der Collector Änderungen nur für das teilweise eingetragene Repository auf dem Agent sammeln kann und den gesamten Pfad nicht sieht. Wenn eine Codeänderung vom Server eingeht, wird der gesamte Pfad bereitgestellt, und der Abgleichsversuch mit dem zugeordneten Pfad schlägt fehl.
Problemumgehung
Um dieses Problem zu umgehen, können Sie Ihr Teilrepository der vollständigen Codestruktur auf dem Server zuordnen, sodass der vollständige Pfad der Dateien in Ihrer lokalen Eintragung mit dem vollständigen Serverpfad übereinstimmt. Hierzu können Sie einen lokalen Pfad angeben, der mit dem Serverpfad übereinstimmt, wie im folgenden Beispiel gezeigt.
Dadurch wird sichergestellt, dass der Serverpfad mit dem vom Collector gesammelten Pfad übereinstimmt und die betroffenen Tests ordnungsgemäß aufgeführt werden.