Saturday, December 22, 2012

One Click Sprint Management


2012-08-11

Let's face it, the introduction of agile and scrum methodologies into the testing process has imposed some major time constraint challenges on top of the ones that already existed.  So testers are constantly seeking ways to optimize the work load and strike a balance between being agile and performing all of the tasks required to do good and effective testing.  Let's explore an option that can help us save time with one of the tasks we desire to do, release and/or sprint management.

Today's test management systems offers testers even greater flexibility via their WebService API interface.  We can utilize the API to help us manage the sprints automatically by embedding the tasks either into our automated setup and configuration of our applications under test or into our test automation.  Here are a couple of ideas:

1) As a tester, you need to create a new release within the test management system and then link your tests (manual or automated) to the test sets.  As part of your automation, you can utilize the API to create a release and then perform the tasks of linking all tests that are part of the test run.  To make this more efficient, you can choose to dynamically create the release name or get the release name from your application and use it for the release artifact creation.  Here is a java example of this scenario.

public static RemoteRelease createRelease (String releaseId, Boolean iteration, String parentReleaseId) {
//When using the WebService API of a test management system, define an object of type release (or whatever the artifact is named)
RemoteRelease remoteRelease = new RemoteRelease();
Calendar date = Calendar.getInstance();
Integer rId = 0;
//Call a supporting function called 'connect' to login and open a connection to the test management system.
if (connect()) {
try {
    //Set the artifact's, in this case release, property settings
    remoteRelease.setActive(true);
    remoteRelease.setName(releaseId);
    remoteRelease.setCreationDate(date);
    remoteRelease.setDaysNonWorking(0);
    remoteRelease.setEndDate(date);
    remoteRelease.setIteration(iteration);
    remoteRelease.setLastUpdateDate(date);
    remoteRelease.setResourceCount(1);
    remoteRelease.setSummary(iteration);
    remoteRelease.setStartDate(date);
    remoteRelease.setVersionNumber(releaseId);
    //Now upload/create the artifact with the associated settings in the test               management system.
    if (!parentReleaseId.equals("")) {
         rId = getSpiraTeamRelease(parentReleaseId);
    }
    if (rId > 0) {
         remoteRelease = proxy.release_Create(remoteRelease, rId);
    } else {
    remoteRelease = proxy.release_Create(remoteRelease, null);
    }
} catch (RemoteException r) {
System.out.println("Failure creating release for id:  " + releaseId + ", " + r);
}
}
return remoteRelease;
}

2)  As a tester, you need to manage sprints and builds within a given release.  You can build a function/method as part of the automated installation and configuration or the automated test run to:
  1. Evaluate the release end date.
  2. If the release has not ended, create a sprint.
  3. If the sprint has not ended, create a build.
  4. Link desired tests or testsets to the build.
The benefits to the tester, the team and to management are:
  1. One can evaluate the average number of test runs per sprint/per release.
  2. One can trace test artifacts to a release, sprint or build.
  3. One can review historical test runs for cross-reference.
  4. Test results are automatically organized by release, sprint or builds and easily available to the team.
  5. One can review test coverage by release.
Happy testing!

No comments:

Post a Comment