Best Practices for Microsoft Test Manager part 1: Introduction to Scrum Methodology
So it has been a long while since I blogged and for that I can only apologise: there’s little point in evangelising the product if I don’t use every opportunity to do so, and as the blog is available 24/7, there’s little excuse not to.
In my defence I have been out on project and busy creating some training material: I also took a webinar recently which gave an introduction to Microsoft Test Manager for our Middle east partners, and I am pleased to say that it went down very well.
I also had an opportunity to spend a few days with a company in Cardiff who are beginning a project using Microsoft VSTS 2010, and I must say that I have completely forgotten how overwhelming it can be to someone who has little exposure to the Microsoft ALM just how much there is to learn.
So, with this in mind, and also in relation to something I alluded to in my previous post, I want us to explore how Microsoft Test Manager can help testers and developers work more closely together within a product development iteration – such as an agile sprint – to build quality upstream and keep their project on track. As it is a rather large subject, and I want us to start right at the beginning and explain a little bit about Scrum, this blog will be a two parter.
Agile Testing Methodology is an approach to software development projects in which functionality is released in smaller cycles, or iterations. This functionality is based on features that have been broken down into sections small enough to be developed and tested within an iteration.
The advantage of Agile development is that changes to the product can be made dynamically. Incremental releases verify that features are released and signed off for production and fit within the overall scope of the product.
Scrum is a framework for agile software development and enables the creation of teams that are able to organise themselves and commit to deliver in a timely manner.
A role unique to the Scrum approach is that of a Scrum Master: overseer of project management tasks including team communication, requirements, schedules and progress. However the role differs from project manager as it is the Scrum Master’s role to facilitate team communications, like leading daily scrums (see below) and also to provide guidance and remove impediments that are preventing the team from delivering its goals. Also as an agile team, it is committed to its team members and not a hierarchical management authority. Therefore the Scrum Master doesn’t lead the team.
A key benefit of Agile is that can it can be organised to shape into any organisation in terms of size of team, length of sprint, experience, etc.
- Kick Off– The goal of this meeting is to get everybody on the team together to review the product backlog.
- Elaboration – (list of prioritised work to be done for that particular sprint). While the team is collectively creating the sprint backlog, stories need to be broken into either sub-stories or smaller tasks. During this collective team exercise you can really see the differences in project management (at least if you have a more rigid and formal waterfall like type of background), because there is no management authority that assigns tasks to team members.
- Spring Backlog – Backlog is prioritised and work is committed for this particular sprint, which becomes the sprint backlog. Team will break down the backlog/ user stories into smaller tasks/sub stories. Team will allocate themselves to work required for the sprint and estimate the effort required to deliver stories. If required more work can be broken down and allocated. Note it is in these meetings that resource is also estimated: some people may have holidays or appointments coming up that will take them out of the sprint for a period of time. The team take ownership of the Sprint Backlog Estimations are set by the Team. Often an accompanying Task Board is used to see and change the state of the tasks of the current sprint, like “to do”, “in progress” and “done”.
- Scrum Meetings – Once sprint backlog has been committed to, scrum meetings will take place at the same time everyday in the same location. These meetings are ideally very quick, focusing on the salient facts that are pertinent to this sprint only. The objective of the scrum is for each team member to answer 3 questions: what have I accomplished since the previous scrum, what I will be working on next, and what impediments are preventing me from accomplishing my goals. These meetings are key to ensure that the team can achieve their goal, or change quickly if any work is re-prioritised.
- Final Acceptance Meeting – Towards the end of a sprint typically a final acceptance meeting will take place. In this meeting the team will present what they have delivered in this sprint, usually to the business.
- Retrospective – At the end of an iteration there is a retrospective meeting. The team will get together to discuss 3 things from the previous sprint:
- What we should start doing for the next sprint
- We the team should stop doing for the next sprint
- What from the previous sprint was successful and should be carried over.
- Team members would be required to mention one of each of the above.
Advantages of Using Scrum
When a project is being developed using Scrum, testing cannot be considered as a phase at the end; it must be considered and integrated throughout the iteration cycle. It fuses with programming tasks, working in parallel. The role of a tester is therefore changed in Agile, although the tester must be prepared to put in the effort to change:
- Better communication and more collaboration among devs and testers
As Testing is integrated throughout the iteration cycle then testers are now also integrated from the start – the same also applies to developers. This participation not only from project commencement, but also taking into consideration that devs and testers are one agile team, that they get together on a daily basis and take part in the scrums, and that they are involved and exposed to the tasks that each other is performing towards the overall success of the sprint, means communication among themselves is improved. Scrum meetings also give other team members to comment and contribute to a sprint task that they may not be directly involved in but may be able to improve or offer a solution to an impediment.
- Testers are now more integral to the project
Testers should be prepared to contribute to the project. One of the fundamental concepts of Agile/Scrum methodologies is that teams must be self organising, and the contribution and offerings of a tester must be seen as equal to that of a developer.
- Testing efforts must be maximised
As delivery of functionality is greatly reduced to releases every month – 6 weeks, and, presuming that Continuous Integration is used, builds are frequently being released all the time. Therefore testing efforts ideally must be optimised, as there is no separate time for testing the functionality. The ideal approach to Agile testing is a combination of Automated Testing and Exploratory Testing.
- Exploratory testing is useful when looking for bugs, opportunities to improve, and missing features. So testers should plan on “exploring” the product at the beginning of each new sprint, or any time that there is a change done to a product feature within the sprint.
- Automated functional and regression testing will require planning within the sprint. Automated Testing from a UI point can be expensive in terms of time and maintenance, and so ideally automated testing throughout the product, from Unit Testing to Services testing to End to End testing should be implemented. Unit Testing provides the least amount of maintenance and the quickest feedback to verify if a software build is broken or not. Below the Test Automation Triangle emphasizes this point.
So to sum up, Scrum methodology is an entirely different form of software development from more formal methods, as the onus is placed on the team to deliver the project in a manner that they have control over. The next article will look at a typical sprint in far greater detail and will explore how Microsoft Test Manager can add value at key points to ensure that the project is on time and on track.