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 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.
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.
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.
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ğı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 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 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(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ğı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 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}
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}
)`
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:
- 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.
Raporunuz aşağıdaki görüntüye benzer görünmelidir.