Gereksinimleri izleme örnek raporu

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Gereksinimler kategorisine ait iş öğelerinin kalitesini, gereksinim izleme raporuyla izleyebilirsiniz. Gereksinimler kategorisi Kullanıcı Hikayeleri (Çevik), Ürün Kapsam Öğeleri (Scrum), Sorunlar (Temel) ve Gereksinimler (CMMI) gibi iş öğelerini içerir. İş öğesi kategorileri hakkında daha fazla bilgi edinmek için bkz . Kullanıcı hikayelerini, sorunlarını, hatalarını ve diğer iş öğelerini izleme.

Aşağıdaki görüntüde bir gereksinim izleme raporu örneği gösterilmektedir.

Power BI Gereksinimleri izleme raporunun ekran görüntüsü.

Bu rapor, listelediği her gereksinim için aşağıdaki bilgileri görüntüler:

  • Tamamlanan çalışma yüzdesi: Gereksinime bağlı tüm görevler için tamamlanan saatlerin toplamına göre tamamlanan çalışma yüzdesini gösteren ilerleme çubuğu.
  • Geçirilen testler: En son test çalıştırmasına göre geçirilen test çalışması sayısı.
  • Başarısız testler: En son test çalıştırmasına göre başarısız olan test çalışması sayısı.
  • Testleri çalıştırma: Yürütülen test çalıştırmalarının sayısı.
  • Etkin hatalar: Etkin durumdaki bağlı hataların sayısı.
  • Kapatılan hatalar: Kapalı, Bitti veya Tamamlandı durumundaki bağlı hataların sayısı.

Not

Gereksinim izleme yalnızca Gereksinim tabanlı bir test paketi aracılığıyla bağlantılı test çalışmaları için desteklenir. Gereksinim iş öğesi (Kullanıcı Hikayesi (Çevik), Ürün Kapsam Öğesi (Scrum), Gereksinim (CMMI) veya Sorun (Temel) ile el ile test yürütme arasındaki ilişki yalnızca test çalışması Gereksinim tabanlı bir test paketi aracılığıyla bağlandığında oluşturulur.

Raporun yanıt verdiği sorular

Gereksinim izleme raporları, aşağıdaki soru türlerini yanıtlamak için kullanışlıdır.

çalışma ilerleme durumu

  • Her gereksinim için kalan çalışma miktarı beklentilerinize karşılık geliyor mu?
  • İlk sırada yer alan gereksinimler uygulanıyor mu?
  • Her gereksinim için kaç test tanımlanır? Kaç test geçiyor?
  • Bunlar için tanımlanmış test çalışması olmayan hangi gereksinimler uygulanıyor?

Kalite ilerlemesi

  • Her gereksinim için kaç test çalışması çalıştırılır ve kaç test çalışması geçmiştir?
  • Her gereksinimde kaç etkin hata var?
  • Test edilen gereksinimler için hatalar bulundu mu?
  • Hatalar çözümleniyor mu yoksa etkin mi kalıyor?

Risk değerlendirmesi

  • Hangi gereksinimler risk altındadır?
  • Hangi gereksinimler yayın için yeterince kararlı değildir?
  • Bugün hangi gereksinimleri gönderebiliriz?

Önemli

Power BI tümleştirmesi ve Analiz Hizmeti'nin OData akışına erişim genellikle Azure DevOps Services ve Azure DevOps Server 2020 ve sonraki sürümlerde kullanılabilir. Bu makalede sağlanan örnek sorgular yalnızca Azure DevOps Server 2020 ve sonraki sürümlerde geçerlidir ve v3.0 önizleme veya sonraki sürüme bağlıdır. Bu sorguları kullanmanızı ve bize geri bildirim sağlamanızı öneririz.

Önkoşullar

  • Analytics verilerini görüntülemek ve hizmeti sorgulamak için Temel erişim veya daha yüksek erişime sahip bir projenin üyesi olmanız gerekir. Varsayılan olarak, tüm proje üyelerine Analytics'i sorgulama ve Analiz görünümlerini tanımlama izinleri verilir.
  • Hizmet ve özellik etkinleştirme ve genel veri izleme etkinlikleriyle ilgili diğer önkoşullar hakkında bilgi edinmek için bkz . Analytics'e erişim izinleri ve önkoşulları.

Not

Bu makalede, OData Sorgularını kullanarak Örnek Raporlara Genel Bakış makalesini okuduğunuz ve Power BI hakkında temel bilgilere sahip olduğunuz varsayılır.

Raporun yararlı veriler oluşturması için aşağıdaki görevleri gerçekleştirmiş olmanız gerekir:

  • Gereksinim iş öğelerini tanımlayıp bunları ilgilendiğiniz alan ve yineleme yollarına atadiniz. Alan ve yineleme yollarını tanımlama hakkında bilgi için bkz . Alan yollarını tanımlama ve Yineleme yollarını tanımlama.
  • Tamamlanma yüzdesini almak için, Alt bağlantı türüyle gereksinimlere bağlı görevlerin veya hataların Çalışmayı Tamamlama ve Kalan Çalışma alanlarını doldurmanız gerekir.
  • Test çalışmalarının yürütme durumunu almak için, bu gereksinimlere karşılık gelen Test Planlarında gereksinim tabanlı test paketleri oluşturmuş olacaksınız. Kanban panosu aracılığıyla eklediğiniz satır içi testler bu önkoşulu karşılar, ancak testlere bağladığınız gereksinimler karşılamaz. Daha fazla bilgi edinmek için bkz . Test planları ve test paketleri oluşturma.
  • Hataların durumunu almak için hatalar oluşturmuş ve Alt bağlantı türüne sahip gereksinimlere bağlamış olursunuz.

Örnek sorgular

Raporu oluşturmak için Power BI desktop'a üç Power BI sorgusu ekleyip bunları bağlamanız gerekir. Her sorgu veya WorkItemsTestPoints varlık kümesini yürütür.

Not

Aşağıdaki bölümlerde sağlanan Power BI sorgu parçacıkları, sütunları genişletmek ve veri türünü değiştirmek için gerekli veri dönüşümlerini içerir.

Not

Filtre veya rapor amacıyla kullanılabilir özellikleri belirlemek için bkz . Azure Boards için meta veri başvurusu. sorgularınızı filtreleyebilir veya ile kullanılabilen EntitySetveya NavigationPropertyBinding Path değerlerinin Property altındaki EntityType değerlerden herhangi birini kullanarak özellikleri döndürebilirsiniz. Her EntitySet bir EntityTypeöğesine karşılık gelir. Her değerin veri türü hakkında daha fazla bilgi edinmek için ilgili EntityTypeiçin sağlanan meta verileri gözden geçirin.

Sorgu alanı ve yineleme yolları

Raporunuzun kapsamını belirli bir Alan ve Yineleme yolu olarak belirlemek için, AreaSK ve IterationSK kullanarak sorguyu filtreleyebilirsiniz. Ayrıntılar için bkz . OData Analytics kullanarak temel sorguları tanımlama.

Gereksinimler için saat tamamlanma yüzdesi sorgusu

Not

Aşağıdaki sorgu, iş öğelerindeki ve Completed Work alanlarını tanımladığından Remaining Work Çevik işlemi için çalışır.

Aşağıda listelenen Power BI sorgusunu doğrudan Veri Al-Boş> Sorgu penceresine yapıştırabilirsiniz. Daha fazla bilgi için OData sorgularını kullanarak örnek raporlara genel bakış sayfasını gözden geçirin.

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"

Gereksinimlerin test yürütme durumunu sorgulama

Not

Filtre veya rapor amacıyla kullanılabilir özellikleri belirlemek için bkz . Test Planları Analizi için meta veri başvurusu. sorgularınızı filtreleyebilir veya ile kullanılabilen EntitySetveya NavigationPropertyBinding Path değerlerinin Property altındaki EntityType değerlerden herhangi birini kullanarak özellikleri döndürebilirsiniz. Her EntitySet bir EntityTypeöğesine karşılık gelir. Her değerin veri türü hakkında daha fazla bilgi edinmek için ilgili EntityTypeiçin sağlanan meta verileri gözden geçirin.

Aşağıda listelenen Power BI sorgusunu doğrudan Veri Al-Boş> Sorgu penceresine yapıştırabilirsiniz. Daha fazla bilgi için OData sorgularını kullanarak örnek raporlara genel bakış sayfasını gözden geçirin.

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"

Not

girdisiTestSuite/RequirementWorkItem/..., iş öğesinin önkoşullarda açıklandığı gibi gereksinim tabanlı test paketleri aracılığıyla test paketine bağlanması gerektiğini gösterir.

Gereksinimlere bağlı hataların durumunu sorgulama

Aşağıda listelenen Power BI sorgusunu doğrudan Veri Al-Boş> Sorgu penceresine yapıştırabilirsiniz. Daha fazla bilgi için OData sorgularını kullanarak örnek raporlara genel bakış sayfasını gözden geçirin.

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"

Değiştirme dizeleri ve sorgu dökümü

Aşağıdaki dizeleri değerlerinizle kullanın. Değiştirmenize köşeli ayraç {} eklemeyin. Örneğin, kuruluşunuzun adı "Fabrikam" ise yerine {organization}Fabrikamyerine değerini {Fabrikam}yazın.

  • {organization} - Kuruluşunuzun adı
  • {project} - Projenizin adı
  • {iterationSK} - İlgilenilen Yineleme Yolu ile ilişkili GUID. GUID'yi aramak için bkz. [.. /extend-analytics/wit-analytics.md#iterationsk](Belirli bir Yineleme Yolu için YinelemeSK değerini döndür)
  • {areaSK} - İlgilenilen Alan Yolu ile ilişkili GUID. GUID'yi aramak için bkz. [.. /extend-analytics/wit-analytics.md#areask](Belirli bir Alan Yolu için AreaSK değerini döndür).

Sorgu dökümü

Aşağıdaki tabloda sorgunun her bölümü açıklanmaktadır.

Sorgu bölümü

Açıklama


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

Yalnızca seçili Yineleme, Alan ve kapsam iş öğeleri için veri döndürür.

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

İş öğelerini, ilişkili en az bir işlem için 'gereksinimler' kategorisine girebilecek şekilde filtreleyin.

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

Gereksinimleri alırken hata türü iş öğelerini atlayın. Temel işlem şablonunda Sorun iş öğeleri de hata türündedir, bu nedenle Temel işlem için bu yan tümceyi sorgunuzdan kaldırın.

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) ) )

Yalnızca Yineleme ve Alan temelinde seçilen gereksinimler için veri döndürme.

/aggregate($count as TotalCount,

Filtrelenmiş test noktaları genelinde verileri toplama ve sayı olarak sahip olma TotalCount.

cast(LastResultOutcome eq 'Passed', Edm.Int32) with sum as Passed

Toplama sırasında, en son yürütme sonucunun 'Geçirildi' değerinin 1'e iletildiğini ve bunların 'Passed' ölçümü olarak toplanmasını içeren tür atama test noktaları.

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

Filtrelenmiş üst öğelerin alt iş öğeleri için Tamamlanan Çalışma ve Kalan Çalışma verilerini döndürür.

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

Filtrelenmiş iş öğeleri genelinde Tamamlanan Çalışma ve Kalan Çalışma verilerini toplama.

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

Tamamlanan Çalışma ve Kalan Çalışma toplamını hesaplama.

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

Tamamlanan çalışma yüzdesini hesaplayın.

Tablo raporunu oluşturma

Raporu oluşturmak için aşağıdaki adımları uygulayın:

  1. Modelleme sekmesinden İlişkileri Yönet seçin ve üç sorgu sonucunu sütuna göre WorkItemId bağlayın.
  2. Görselleştirmeler'in altında Tablo'ya tıklayın.
  3. Üç Power BI sorgusundan ilgilendiğiniz sütunları ekleyin.
  4. Geçirilen testler vb. gibi ekleme sütunları için Toplama olarak topla'ya tıklayın.

    Power BI toplama olarak topla'ya tıklayın

Raporunuz aşağıdaki görüntüye benzer görünmelidir.

Power BI Gereksinimleri izleme raporunun ekran görüntüsü