Gesparte Zeit

Jeder Lauf gibt an, wie viel Testzeit er gespart hat. Die Zahlen bleiben in Ihrer CI, sodass die Summe über einen Monat ein paar Zeilen Skript ist und kein Dashboard, dem Sie vertrauen müssen.

Bei jedem Lauf

Eine Coverage-Map hält fest, wie lange jede Testklasse gebraucht hat. Bevor etwas ausgeführt wird, summiert TestDetta die aufgezeichnete Zeit der gesamten Testsuite und die der ausgewählten Klassen:

Recorded test time: 0.6 s of 3.4 s (83% saved).

Dieselbe Zeile steht in der GitHub Job Summary und im Markdown, das --summary-file für andere CI-Systeme schreibt. Sie zählt nur Testzeit. Build und Restore finden ohnehin statt, außer bei Testprojekten, die ganz übersprungen werden: Diese werden gar nicht gebaut, was mehr spart, als die Zeile zeigt.

Projekte ohne Zeitangaben, etwa weil für sie noch keine Map aufgezeichnet wurde, fließen in keine der beiden Zahlen ein; das JSON listet sie in projectsWithoutTimings auf.

Im JSON

td affected --format json enthält dieselben Zahlen für Skripte, für den gesamten Lauf und für jedes Testprojekt:

{
  "estimate": {
    "fullSeconds": 3.4,
    "selectedSeconds": 0.6,
    "savedSeconds": 2.8,
    "projectsWithoutTimings": []
  }
}

Aufsummieren

Bewahren Sie das JSON jedes Pull-Request-Laufs als Build-Artefakt auf. Die Summe von savedSeconds über einen beliebigen Zeitraum ergibt die gesparte Testzeit, ohne dass etwas Ihre CI verlässt:

td affected --format json > testdetta.json      # in each pull request run

# later, over the files of a month:
jq -s 'map(.estimate.savedSeconds // 0) | add / 3600' runs/*.json   # hours saved

Multiplizieren Sie mit der Anzahl paralleler Jobs, die die Tests ausführen (eine Betriebssystem- oder Framework-Matrix), um Runner-Minuten zu erhalten, und mit dem Minutenpreis Ihres Runners für die Kosten. Der Ersparnisrechner macht dasselbe mit Schätzwerten.

Was die Zahlen bedeuten