Kazanılan süre

Her koşu ne kadar test süresi kazandırdığını söyler. Rakamlar CI'ınızda kalır; bu yüzden bir aylık toplamı almak, güvenmek zorunda olduğunuz bir dashboard değil, birkaç satırlık bir script'tir.

Her koşuda

Bir kapsam haritası, her test sınıfının ne kadar sürdüğünü kaydeder. TestDetta herhangi bir şey çalıştırmadan önce tüm test paketinin ve seçtiği sınıfların kayıtlı sürelerini toplar:

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

Aynı satır GitHub job summary'sinde ve --summary-file'ın diğer CI sistemleri için yazdığı Markdown'da da bulunur. Yalnızca test süresini sayar. Derleme ve restore her iki durumda da yapılır; tamamen atlanan test projeleri bunun istisnasıdır: onlar hiç derlenmez, bu da satırın gösterdiğinden daha fazla kazanç demektir.

Süre bilgisi olmayan projeler, örneğin henüz onlar için bir harita kaydedilmediğinden, her iki rakamın da dışında bırakılır; JSON bunları projectsWithoutTimings içinde listeler.

JSON'da

td affected --format json, aynı rakamları script'ler için hem koşunun tamamı hem de her test projesi için taşır:

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

Toplamı almak

Her pull request koşusunun JSON çıktısını bir derleme artifact'ı olarak saklayın. Herhangi bir dönem boyunca savedSeconds değerlerini toplamak, hiçbir şey CI'ınızdan çıkmadan kazanılan test süresini verir:

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

Runner dakikaları için testleri çalıştıran paralel job sayısıyla (bir işletim sistemi ya da framework matrisi), maliyet için de runner'ınızın dakika fiyatıyla çarpın. Tasarruf hesaplayıcısı aynısını tahminlerle yapar.

Rakamlar ne anlama gelir