Bagikan melalui


Laporan sampel pelacakan persyaratan

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

Anda dapat melacak kualitas item kerja yang termasuk dalam kategori Persyaratan dengan laporan pelacakan persyaratan. Kategori Persyaratan mencakup item kerja seperti Cerita Pengguna (Tangkas), Item Backlog Produk (Scrum), Masalah (Dasar), dan Persyaratan (CMMI). Untuk informasi selengkapnya tentang kategori item kerja, lihat Melacak cerita pengguna, masalah, bug, dan item kerja lainnya.

Gambar berikut menunjukkan contoh laporan pelacakan persyaratan.

Cuplikan layar laporan pelacakan Persyaratan 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

  • Akses: Menjadi anggota proyek dengan setidaknya akses Dasar .
  • 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 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.

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.

Area kueri dan jalur perulangan

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

Kueri untuk persentase penyelesaian jam untuk persyaratan

Catatan

Kueri berikut berfungsi untuk proses Agile karena menentukan Remaining Work bidang dan Completed Work dalam item kerja.

Salin dan tempel kueri Power BI berikut ini langsung ke jendela Dapatkan Kueri Kosong Data>. Untuk informasi selengkapnya, lihat 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 Processes/any(p:p/BacklogType eq 'RequirementBacklog') 
        and Processes/all(p:p/IsBugType eq false)
    )
    &$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.

Salin dan tempel kueri Power BI berikut ini langsung ke jendela Dapatkan Kueri Kosong Data>. Untuk informasi selengkapnya, lihat 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(TestSuite/RequirementWorkItem/WorkItemId as WorkItemId, TestSuite/RequirementWorkItem/Title as WorkItemTitle)
    /groupby(
        (WorkItemId, WorkItemTitle),
        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

Salin dan tempel kueri Power BI berikut ini langsung ke jendela Dapatkan Kueri Kosong Data>. Untuk informasi selengkapnya, lihat 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 Processes/any(p:p/BacklogType eq 'RequirementBacklog') 
        and Processes/all(p:p/IsBugType eq false)
    )
    &$expand=Links(
        $apply=filter(
            (LinkTypeName eq 'Child' or LinkTypeName eq 'Related')
            and TargetWorkItem/WorkItemType eq 'Bug'
        )
        /groupby(
            (TargetWorkItem/State),
            aggregate($count as Count)
        )
    )&$select=WorkItemId,Title", null, [Implementation="2.0"]),
    #"Expanded Links" = Table.ExpandTableColumn(Source, "Links", {"TargetWorkItem", "Count"}, {"Links.TargetWorkItem", "Links.Count"}),
    #"Expanded Links.TargetWorkItem" = Table.ExpandRecordColumn(#"Expanded Links", "Links.TargetWorkItem", {"State"}, {"Links.TargetWorkItem.State"}),
    #"Filtered Rows" = Table.SelectRows(#"Expanded Links.TargetWorkItem", each [Links.Count] <> null and [Links.Count] <> ""),
    #"Pivoted Column" = Table.Pivot(#"Filtered Rows", List.Distinct(#"Filtered Rows"[Links.TargetWorkItem.State]), "Links.TargetWorkItem.State", "Links.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} )`

Mengembalikan data hanya untuk item kerja Iterasi, Area, dan backlog yang dipilih.

Processes/any(p:p/BacklogType eq 'RequirementBacklog')

Filter item kerja sewaktu-waktu sehingga item tersebut harus termasuk dalam kategori 'persyaratan' untuk setidaknya satu proses yang terkait dengannya.

Processes/all(p:p/IsBugType eq false)

Hilangkan item kerja jenis bug saat mendapatkan persyaratan. Dalam templat proses Dasar, Masalah item kerja juga berjenis bug, jadi untuk proses Dasar hapus klausa ini dari kueri Anda.

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 persyaratan yang dipilih berdasarkan Iterasi dan Area.

/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 Passed

Saat menggabungkan, titik pengujian jenis-cast memiliki hasil eksekusi terbaru 'Diteruskan' ke 1 dan menjumlahkannya sebagai metrik ''Passed.

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

Mengembalikan data Pekerjaan yang Selesai dan Sisa Pekerjaan untuk item kerja anak dari item induk yang difilter.

/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

Untuk membuat laporan, lakukan langkah-langkah berikut:

  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

Laporan Anda akan terlihat mirip dengan gambar berikut.

Cuplikan layar laporan pelacakan Persyaratan Power BI