Gereksinimler izleme toplaması örnek raporu

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

Gereksinimler izleme toplaması raporu, Gereksinimler izleme raporuna göre derlenmiştir ve tek düzeyli bir toplama için ölçümlerin nasıl toplanmış olduğunu gösterir. Örneğin, Kullanıcı Hikayeleri ile gereksinimleri izliyorsanız, bu makalede sağlanan sorguları kullanarak Özellikler için verileri toplayabilirsiniz.

Aşağıdaki görüntüde bir örnek gösterilmiştir.

Power BI Hikayelerine Genel Bakış Toplama Raporu'nun 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.

Sorgu alanı ve yineleme yolları

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

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.

Gereksinimler için saat tamamlanma yüzdesi sorgusu

Not

WorkItemType kullandığınız işleme göre öğesini değiştirin. Scrum şablonu Özellik'i, Temel şablon ise sırasıyla iş öğesi türünü toplayarak Epic'i destekler.

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

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(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"

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

Not

WorkItemType kullandığınız işleme göre öğesini değiştirin. Scrum şablonu Özellik'i, Temel şablon ise sırasıyla iş öğesi türünü toplayarak Epic'i destekler.

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

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} and WorkItemType eq 'Feature' )'

Yalnızca belirtilen Yineleme ve Alan altındaki Özellikler için veri döndürür.

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

Belirtilen Yineleme ve Alan altındaki yalnızca seçili kapsam gereksinimi öğeleri için veri döndürme.

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

Özellikler'in alt öğelerini genişletin ve iş öğeleri için Tamamlanan Çalışma ve Kalan Çalışma verilerini döndürin.

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

Özellikler'in alt öğelerini genişletin ve hata için filtreleyin, dönüş verilerini Eyalete göre gruplandırın ve alt öğelerin toplam sayısını güneşleyin.

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

Toplama sırasında test noktalarının değerlerini Başarılı, Başarısız, Engellendi, Uygulanamaz ve Hiçbiri'nin en son yürütme sonucuna göre topla. Ayrıca, toplamını RunCountalmak için en son sonucu Hiçbiri'ne eşit olmayan test noktalarının değerlerini de topla.

/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

  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

Burada, Kimlik doğrulama senaryoları iki Kullanıcı Hikayesi'nin üst özelliğidir.

Power BI Örnek Öykülerine Genel Bakış Toplama Raporu'nun ekran görüntüsü.