What Were They Looking for?

The customer was looking for a way to modify the custom reports to display something like:

Requirement NameRequirement importancePrio 1 TC count for ReqPrio 2 TC count for ReqPrio 3 TC count for ReqPrio 4 TC count for Req

 

There are several ways you could create a report like this:

  1. Take a standard report (e.g. Requirements Traceability) and modify the XSLT to display the data differently
  2. Create a custom report from scratch using the Entity SQL language

How to Create the Report

In this case, it's very similar to the standard requirements traceability report, we just need to tweak the XSLT.

  1. So in the Reports administration section, use the Clone button to make a copy of the Requirements Traceability Report.
  2. Then Edit the Report after you have cloned it.
  3. Delete the Test Case Reverse Traceability section, since we don't need it.
  4. Edit the main Requirements Forward Traceability section, and use this XSLT instead of the standard markup:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:template match="/RequirementData">
    <table class="DataGrid" style="width:100%">
      <tr>
        <th>Req #</th>
        <th>Requirement Name</th>
        <th>Requirement Importance</th>
        <th>Prio 1 TC count for Req</th>
        <th>Prio 2 TC count for Req</th>
        <th>Prio 3 TC count for Req</th>
        <th>Prio 4 TC count for Req</th>
      </tr>
      <xsl:for-each select="Requirement">
        <tr>
          <td>
            RQ<xsl:value-of select="RequirementId"/>
          </td>
          <td>
            <xsl:attribute name="style">
              padding-left: <xsl:value-of select="string-length(IndentLevel)*2"/>px;
            </xsl:attribute>
            <xsl:if test="IsSummary='True'">
              <b>
                <xsl:value-of select="Name"/>
              </b>
            </xsl:if>
            <xsl:if test="IsSummary='False'">
              <xsl:value-of select="Name"/>
            </xsl:if>
          </td>
          <td>
            <xsl:value-of select="ImportanceName"/>
          </td>
          <td>
            <xsl:value-of select="count(TestCases/TestCase[TestCasePriorityName = '1 - Critical'])"/>
          </td>
          <td>
            <xsl:value-of select="count(TestCases/TestCase[TestCasePriorityName = '2 - High'])"/>
          </td>
          <td>
            <xsl:value-of select="count(TestCases/TestCase[TestCasePriorityName = '3 - Medium'])"/>
          </td>
          <td>
            <xsl:value-of select="count(TestCases/TestCase[TestCasePriorityName = '4 - Low'])"/>
          </td>
        </tr>
      </xsl:for-each>
    </table>
  </xsl:template>
</xsl:stylesheet>

When run, this gives the following report: