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.
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
- Erişim: En az Temel erişimi olan bir projenin üyesi olun.
- İzinler: Varsayılan olarak, proje üyeleri Analytics'i sorgulama ve görünüm oluşturma iznine sahiptir.
- Hizmet ve özellik etkinleştirme ve genel veri izleme etkinlikleriyle ilgili diğer önkoşullar hakkında daha fazla bilgi için bkz . Analytics'e erişim izinleri ve önkoşulları.
Not
Bu makalede, OData Sorguları 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. Pano aracılığıyla eklediğiniz satır içi testler bu önkoşulu karşılar, ancak testlere bağladığınız gereksinimler bunu karşılamaz. Daha fazla bilgi 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 WorkItems
TestPoints
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 IterationSK
kullanarak 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 EntitySet
veya 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 için ilgili EntityType
iç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ğıdaki Power BI sorgusunu kopyalayıp doğrudan Veri>Al Boş Sorgu penceresine yapıştırın. Daha fazla bilgi için bkz . OData sorgularını kullanan örnek raporlara genel bakış.
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 EntitySet
veya 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 için ilgili EntityType
için sağlanan meta verileri gözden geçirin.
Aşağıdaki Power BI sorgusunu kopyalayıp doğrudan Veri>Al Boş Sorgu penceresine yapıştırın. Daha fazla bilgi için bkz . OData sorgularını kullanan örnek raporlara genel bakış.
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ğıdaki Power BI sorgusunu kopyalayıp doğrudan Veri>Al Boş Sorgu penceresine yapıştırın. Daha fazla bilgi için bkz . OData sorgularını kullanan örnek raporlara genel bakış.
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}
Fabrikam
yerine 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ı RunCount
almak 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
- Modelleme sekmesinden İlişkileri Yönet seçin ve üç sorgu sonucunu sütuna göre
WorkItemId
bağlayın. - Görselleştirmeler'in altında Tablo'ya tıklayın.
- Üç Power BI sorgusundan ilgilendiğiniz sütunları ekleyin.
- Geçirilen testler vb. gibi ekleme sütunları için Toplama olarak topla'ya tıklayın.
Burada, Kimlik doğrulama senaryoları iki Kullanıcı Hikayesi'nin üst özelliğidir.