Bagikan melalui


Laporan sampel rollup pelacakan persyaratan

Layanan Azure DevOps | Azure DevOps Server 2022 | Azure DevOps Server 2020

Laporan rollup pelacakan persyaratan dibangun pada laporan Pelacakan persyaratan dan menunjukkan cara mengagregasi metrik untuk roll-up satu tingkat. Misalnya, jika Anda melacak persyaratan dengan Cerita Pengguna, Anda dapat menggabungkan data untuk Fitur menggunakan kueri yang disediakan dalam artikel ini.

Contoh ditunjukkan dalam gambar berikut.

Cuplikan layar Laporan Rollup Ringkasan Cerita Power BI.

Laporan ini menampilkan informasi berikut untuk setiap persyaratan yang dicantumkannya:

  • Persentase pekerjaan selesai: Bilah kemajuan yang menunjukkan persentase pekerjaan yang selesai berdasarkan rollup jam yang selesai untuk semua tugas yang ditautkan ke persyaratan.
  • Lulus tes: Jumlah kasus pengujian yang dijalankan yang diteruskan berdasarkan eksekusi pengujian terbaru.
  • Pengujian yang gagal: Jumlah kasus pengujian yang dijalankan yang gagal berdasarkan eksekusi pengujian terbaru.
  • Jalankan pengujian: Jumlah eksekusi pengujian yang dijalankan.
  • Bug aktif: Jumlah bug yang ditautkan dalam status Aktif.
  • Bug tertutup: Jumlah bug yang ditautkan dalam status Tertutup, Selesai, atau Selesai.

Catatan

Pelacakan persyaratan hanya didukung untuk kasus pengujian yang ditautkan melalui rangkaian pengujian berbasis Persyaratan. Hubungan antara item kerja persyaratan—Cerita Pengguna (Tangkas), Item Backlog Produk (Scrum), Persyaratan (CMMI), atau Masalah (Dasar)—dan eksekusi pengujian manual hanya terbentuk saat kasus pengujian ditautkan melalui rangkaian pengujian berbasis Persyaratan.

Pertanyaan yang dijawab laporan

Laporan pelacakan persyaratan berguna untuk menjawab jenis pertanyaan berikut.

Kemajuan kerja

  • Apakah jumlah pekerjaan yang tersisa untuk setiap persyaratan sesuai dengan harapan Anda?
  • Apakah persyaratan peringkat teratas diimplementasikan terlebih dahulu?
  • Berapa banyak pengujian yang didefinisikan untuk setiap persyaratan? Berapa banyak tes yang lulus?
  • Persyaratan apa yang sedang diterapkan yang tidak memiliki kasus pengujian yang ditentukan untuk mereka?

Kemajuan kualitas

  • Berapa banyak kasus pengujian yang telah berjalan untuk setiap persyaratan, dan berapa banyak yang telah lulus?
  • Berapa banyak bug aktif yang dimiliki setiap persyaratan?
  • Apakah bug ditemukan untuk persyaratan yang sedang diuji?
  • Apakah bug sedang diselesaikan atau tetap aktif?

Penilaian risiko

  • Persyaratan mana yang berisiko?
  • Persyaratan mana yang tidak cukup stabil untuk rilis?
  • Persyaratan mana yang dapat kita kirim hari ini?

Penting

Integrasi dan akses Power BI ke umpan OData Dari Layanan Analitik umumnya tersedia untuk Azure DevOps Services dan Azure DevOps Server 2020 dan versi yang lebih baru. Kueri sampel yang disediakan dalam artikel ini hanya valid terhadap Azure DevOps Server 2020 dan versi yang lebih baru, dan bergantung pada pratinjau v3.0 atau versi yang lebih baru. Kami mendorong Anda untuk menggunakan kueri ini dan memberi kami umpan balik.

Prasyarat

  • Tingkat akses: Anda harus menjadi anggota proyek dengan akses Dasar atau yang lebih tinggi.
  • Izin: Secara default, anggota proyek memiliki izin untuk mengkueri Analitik dan membuat tampilan.
  • Untuk informasi selengkapnya tentang prasyarat lain mengenai pengaktifan layanan dan fitur serta aktivitas pelacakan data umum, lihat Izin dan prasyarat untuk mengakses Analitik.

Catatan

Artikel ini mengasumsikan Anda telah membaca Gambaran Umum Laporan Sampel menggunakan Kueri OData dan memiliki pemahaman dasar tentang Power BI.

Agar laporan menghasilkan data yang berguna, Anda harus melakukan tugas-tugas berikut:

  • Anda telah menentukan item kerja persyaratan dan menetapkannya ke area dan jalur iterasi yang menarik. Untuk informasi tentang cara menentukan jalur perulangan dan area, lihat Menentukan jalur area dan Menentukan jalur iterasi.
  • Untuk mendapatkan persentase penyelesaian jam, Anda perlu mengisi bidang Pekerjaan Lengkap dan Pekerjaan yang Tersisa dari tugas atau bug yang ditautkan ke persyaratan dengan jenis tautan Anak.
  • Untuk mendapatkan status eksekusi kasus pengujian, Anda akan membuat rangkaian pengujian berbasis persyaratan dalam Rencana Pengujian yang sesuai dengan persyaratan tersebut. Pengujian sebaris yang Anda tambahkan melalui papan memenuhi prasyarat ini, namun persyaratan yang Anda tautkan ke pengujian tidak. Untuk informasi selengkapnya, lihat Membuat paket pengujian dan rangkaian pengujian.
  • Untuk mendapatkan status bug, Anda akan membuat dan menautkan bug ke persyaratan dengan jenis tautan Anak .

Contoh kueri

Untuk menghasilkan laporan, Anda harus menambahkan tiga kueri Power BI ke desktop Power BI lalu menautkannya. Setiap kueri menjalankan WorkItems set entitas atau TestPoints .

Catatan

Cuplikan kueri Power BI yang disediakan di bagian berikut ini menyertakan transformasi data yang diperlukan untuk memperluas kolom dan mengubah tipe data.

Area kueri dan jalur perulangan

Untuk mencakup laporan Anda ke jalur Area dan Iterasi tertentu, Anda bisa memfilter kueri menggunakan AreaSK dan IterationSK. Untuk detailnya, lihat Menentukan kueri dasar menggunakan OData Analytics.

Catatan

Untuk menentukan properti yang tersedia untuk tujuan filter atau laporan, lihat Referensi metadata untuk Azure Boards. Anda dapat memfilter kueri atau mengembalikan properti menggunakan salah satu nilai di Property bawah nilai atau NavigationPropertyBinding Path yang EntityType tersedia dengan EntitySet. Masing-masing EntitySet sesuai dengan EntityType. Untuk informasi selengkapnya tentang jenis data dari setiap nilai, tinjau metadata yang disediakan untuk yang sesuai EntityType.

Kueri untuk persentase penyelesaian jam untuk persyaratan

Catatan

WorkItemType Ubah berdasarkan proses yang Anda gunakan. Templat Scrum mendukung Fitur dan templat Dasar masing-masing mendukung Epik sebagai jenis item kerja gulung.

Anda bisa menempelkan kueri Power BI yang tercantum di bawah ini langsung ke jendela Dapatkan Kueri Kosong Data>. Untuk informasi selengkapnya, tinjau Gambaran Umum laporan sampel menggunakan kueri OData.

let
    Source = OData.Feed("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems? 
$filter=( 
    IterationSK eq {iterationSK}
    and AreaSK eq {areaSK}
    and WorkItemType eq 'Feature'
)
&$expand=Descendants( 
    $apply=filter( CompletedWork ne null or RemainingWork ne null ) 
    /aggregate( 
        iif(CompletedWork ne null, CompletedWork, 0) with sum as SumCompletedWork, 
        iif(RemainingWork ne null, RemainingWork, 0) with sum as SumRemainingWork 
    ) 
    /compute( 
        (SumCompletedWork add SumRemainingWork) as TotalWork, 
        SumCompletedWork as SumCompleted 
    ) 
    /compute( 
        iif(TotalWork gt 0,(SumCompleted div cast(TotalWork, Edm.Double) mul 100), 0) as PercCompletedWork 
    ) 
)
&$select=WorkItemId, Title", null, [Implementation="2.0"]),
    #"Expanded Descendants" = Table.ExpandTableColumn(Source, "Descendants", {"SumCompletedWork", "SumRemainingWork", "TotalWork", "SumCompleted", "PercCompletedWork"}, {"Descendants.SumCompletedWork", "Descendants.SumRemainingWork", "Descendants.TotalWork", "Descendants.SumCompleted", "Descendants.PercCompletedWork"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded Descendants",{{"Descendants.SumCompletedWork", type number}, {"Descendants.SumRemainingWork", type number}, {"Descendants.TotalWork", type number}, {"Descendants.SumCompleted", type number}, {"Descendants.PercCompletedWork", type number}})
in
    #"Changed Type"

Kueri untuk status eksekusi pengujian persyaratan

Catatan

Untuk menentukan properti yang tersedia untuk tujuan filter atau laporan, lihat Referensi metadata untuk Analitik Paket Pengujian. Anda dapat memfilter kueri atau mengembalikan properti menggunakan salah satu nilai di Property bawah nilai atau NavigationPropertyBinding Path yang EntityType tersedia dengan EntitySet. Masing-masing EntitySet sesuai dengan EntityType. Untuk informasi selengkapnya tentang jenis data dari setiap nilai, tinjau metadata yang disediakan untuk yang sesuai EntityType.

Anda bisa menempelkan kueri Power BI yang tercantum di bawah ini langsung ke jendela Dapatkan Kueri Kosong Data>. Untuk informasi selengkapnya, tinjau Gambaran Umum laporan sampel menggunakan kueri OData.

let
    Source = OData.Feed("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/TestPoints? 
	$apply=filter(
	    (TestSuite/RequirementWorkItem/IterationSK eq {iterationSK}
    and TestSuite/RequirementWorkItem/AreaSK eq {areaSK}
    and TestSuite/RequirementWorkItem/Processes/any(p:p/BacklogType eq 'RequirementBacklog')
    and TestSuite/RequirementWorkItem/Processes/all(p:p/IsBugType eq false)
	))
	/compute(iif(TestSuite/RequirementWorkItem/Parent ne null, TestSuite/RequirementWorkItem/Parent/WorkItemId, 0) as ParentWorkItemId, 
	iif(TestSuite/RequirementWorkItem/Parent ne null, TestSuite/RequirementWorkItem/Parent/Title, 'Unparented') as ParentWorkItemTitle
	)/groupby(
	    (ParentWorkItemId, ParentWorkItemTitle), 
	    aggregate(
	        $count as TotalCount, 
	        cast(LastResultOutcome eq 'Passed', Edm.Int32) with sum as PassedCount, 
	        cast(LastResultOutcome eq 'Failed', Edm.Int32) with sum as FailedCount, 
            cast(LastResultOutcome eq 'Blocked', Edm.Int32) with sum as BlockedCount,
            cast(LastResultOutcome eq 'NotApplicable', Edm.Int32) with sum as NotApplicableCount,
	        cast(LastResultOutcome eq 'None', Edm.Int32) with sum as NotRunCount, 
	        cast(LastResultOutcome ne 'None', Edm.Int32) with sum as RunCount)
)", null, [Implementation="2.0"]),
    #"Changed Type" = Table.TransformColumnTypes(#"Source",{{"TotalCount", type number}, {"PassedCount", type number}, {"FailedCount", type number}, {"BlockedCount", type number}, {"NotApplicableCount", type number}, {"NotRunCount", type number}, {"RunCount", type number}})
in
    #"Changed Type"

Catatan

Entri TestSuite/RequirementWorkItem/... menunjukkan bahwa item kerja harus ditautkan ke rangkaian pengujian melalui suite pengujian berbasis persyaratan seperti yang dibahas dalam prasyarat.

Kueri untuk status bug yang ditautkan ke persyaratan

Catatan

WorkItemType Ubah berdasarkan proses yang Anda gunakan. Templat Scrum mendukung Fitur dan templat Dasar masing-masing mendukung Epik sebagai jenis item kerja gulung.

Anda bisa menempelkan kueri Power BI yang tercantum di bawah ini langsung ke jendela Dapatkan Kueri Kosong Data>. Untuk informasi selengkapnya, tinjau Gambaran Umum laporan sampel menggunakan kueri OData.

let
    Source = OData.Feed("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?
    $filter=(
        IterationSK eq {iterationSK}
        and AreaSK eq {areaSK}
        and WorkItemType eq 'Feature'
    )
&$expand=Descendants(
    $apply=filter(
        WorkItemType eq 'Bug'
    )
    /groupby(
        (State),
        aggregate($count as Count)
    )
)
&$select=WorkItemId,Title", null, [Implementation="2.0"]),
    #"Expanded Descendants" = Table.ExpandTableColumn(Source, "Descendants", {"State", "Count"}, {"Descendants.State", "Descendants.Count"}),
    #"Filtered Rows" = Table.SelectRows(#"Expanded Descendants", each [Descendants.Count] <> null and [Descendants.Count] <> ""),
    #"Pivoted Column" = Table.Pivot(#"Filtered Rows", List.Distinct(#"Filtered Rows"[Descendants.State]), "Descendants.State", "Descendants.Count", List.Sum),
    #"Changed Type" = Table.TransformColumnTypes(#"Pivoted Column",{{"Active", type number}, {"Closed", type number}})
in
    #"Changed Type"

String substitusi dan perincian kueri

Ganti string berikut dengan nilai Anda. Jangan sertakan {} tanda kurung dengan pengganti Anda. Misalnya jika nama organisasi Anda adalah "Fabrikam", ganti {organization} dengan Fabrikam, bukan {Fabrikam}.

  • {organization} - Nama organisasi Anda
  • {project} - Nama proyek Anda
  • {iterationSK} - GUID yang terkait dengan Jalur Iterasi yang menarik. Untuk mencari GUID, lihat [.. /extend-analytics/wit-analytics.md#iterationsk](Mengembalikan IterationSK untuk Jalur Perulangan tertentu)
  • {areaSK} - GUID yang terkait dengan Jalur Area yang menarik. Untuk mencari GUID, lihat [.. /extend-analytics/wit-analytics.md#areask](Mengembalikan AreaSK untuk Jalur Area tertentu).

Perincian kueri

Tabel berikut ini menjelaskan setiap bagian kueri.

Bagian kueri

Keterangan


$filter=( IterationSK eq {iterationSK} and AreaSK eq {areaSK} dan WorkItemType eq 'Feature' )'

Mengembalikan data hanya untuk Fitur di bawah Iterasi dan Area yang ditentukan.

filter( (TestSuite/RequirementWorkItem/IterationSK eq {iterationSK} and TestSuite/RequirementWorkItem/AreaSK eq {areaSK} and TestSuite/RequirementWorkItem/Processes/any(p:p/BacklogType eq 'RequirementBacklog') and TestSuite/RequirementWorkItem/Processes/all(p:p/IsBugType eq false)))

Mengembalikan data hanya untuk item persyaratan backlog yang dipilih di bawah Perulangan dan Area yang ditentukan.

&$expand=Descendants( $apply=filter( CompletedWork ne null or RemainingWork ne null )

Perluas item turunan Fitur dan kembalikan data Pekerjaan yang Selesai dan Pekerjaan Yang Tersisa untuk item kerja.

&$expand=Descendants( $apply=filter( WorkItemType eq 'Bug' ) /groupby( (State), aggregate($count as Count) )

Perluas item anak fitur dan filter untuk bug, kelompokkan data kembali menurut Status dan sun jumlah total item anak.

/aggregate($count as TotalCount,

Agregat data di seluruh titik pengujian yang difilter dengan memiliki hitungan sebagai TotalCount.

cast(LastResultOutcome eq 'Passed', Edm.Int32) with sum as PassedCount, cast(LastResultOutcome eq 'Failed', Edm.Int32) with sum as FailedCount, cast(LastResultOutcome eq 'Blocked', Edm.Int32) with sum as BlockedCount, cast(LastResultOutcome eq 'NotApplicable', Edm.Int32) with sum as NotApplicableCount, cast(LastResultOutcome eq 'None', Edm.Int32) with sum as NotRunCount, cast(LastResultOutcome ne 'None', Edm.Int32) with sum as RunCount)

Saat mengagregasi, jumlah nilai titik pengujian berdasarkan hasil eksekusi terbarunya dari Lulus, Gagal, Diblokir, Tidak Dapat Diterapkan, dan Tidak Ada. Selain itu, jumlah nilai titik pengujian yang hasil terbarunya tidak sama dengan Tidak Ada untuk mendapatkan total RunCount.

/aggregate( iif(CompletedWork ne null, CompletedWork, 0) with sum as SumCompletedWork, iif(RemainingWork ne null, RemainingWork, 0) with sum as SumRemainingWork

Agregat Data Pekerjaan yang Selesai dan Pekerjaan Yang Tersisa di seluruh item kerja yang difilter.

)/compute( (SumCompletedWork add SumRemainingWork) as TotalWork, SumCompletedWork as SumCompleted

Menghitung total rollup Pekerjaan yang Selesai dan Sisa Pekerjaan.

)/compute( iif(TotalWork gt 0,(SumCompleted div cast(TotalWork, Edm.Double) mul 100), 0) as PercCompletedWork )

Hitung persentase wor yang telah selesai.

Membuat laporan Tabel

  1. Dari tab Pemodelan, pilih Kelola Hubungan dan tautkan tiga hasil kueri menurut WorkItemId kolom.
  2. Di bawah Visualisasi, pilih Tabel.
  3. Tambahkan kolom yang Anda minati dari tiga kueri Power BI.
  4. Pilih Jumlah sebagai agregasi untuk kolom aditif seperti Tes lulus dll.

    Power BI pilih Jumlah sebagai agregasi

Di sini, skenario Autentikasi adalah fitur induk dari dua Cerita Pengguna.

Cuplikan layar Laporan Rollup Ringkasan Cerita Sampel Power BI.