The success rate of a development project which provides a solution, satisfies the customer and is also robust, is very low. Some reasons why a software development project may not be successful are:
a. Perception of the team developing software and of customer about requirements, may defer. This may lead to development of a great software that does not match customer requirements and needs.
b. Customer’s requirements have changed over time. As the understanding of business processes improve, customer may change the requirements. These changes may become difficult to implement and certainly will increase the time required for implementation.
This article is published from the DotNetCurry .NET Magazine – A Free High Quality Digital Magazine for .NET professionals published once every two months. Subscribe to this eMagazine for Free and get access to hundreds of free .NET tutorials from experts
In both the cases, the customer remains unhappy with software that is built at the end of entire cycle of development. In traditional waterfall model, there are clear cut stages in Software Development Life Cycle (SDLC).
It is always a challenge to incorporate the changing requirements of customers’ in this process. For this reason, a new approach to software development was introduced in terms of Agile methodology. Agile methodology recommends small chunks of functionality to be built in a short time span (iteration) and then get the feedback from customer before starting the next iteration. Each of the iterations comprises of the activities as follows
These activities may run in parallel, many-a-times. The order of activities and who does what activity are not important. What is most important is that team builds a demonstrable version of software that can be viewed by customer and customer can give feedback on that. It should have incremental value in comparison to the earlier version. Team members together share the responsibility to create demonstrable software once the requirements to be completed in each iteration (sprint), are frozen. Every iteration involves deploying a workable bit which is tested as a part of the activities of that iteration. Since each iteration has some amount of testing, it is necessary to plan and execute this testing systematically. This testing is what we will call Agile Testing.
Normally when a team is developing software following the agile methodology, they are applying agile principles. The following table specifies a list of agile principles, challenges faced in implementation of these principles in terms of testing and the kind of practice from agile testing that can be applied to address it.
I will now discuss how each of these challenges can be addressed by various tools provided as part of Visual Studio 2012.
How do I take care of Customer’s requirements?
We can involve customers while creation of test cases. With Microsoft Team Foundation Server 2012, management of Test cases is taken care of with the help of the IDE called Microsoft Test Manager 2012 (MTM). MTM provides IDE for creating and executing test cases. Test cases can provide acceptance criteria in the form of expected results. A Test Case can be linked to a requirement. A Requirement can be tested by one or more test cases.
TDD or Test Drive Development is also one of the ways of modeling customer’s requirements. In this process, the test will be first defined, executed and later the functionality to satisfy test is written. Visual Studio 2012 developer can follow the approach of TDD where a developer writes the unit test first and later writes the code to satisfy that.
How do I ensure Testers’ involvement in the complete life cycle?
As there are no boundaries of stages while working with Agile Methodology, Agile Testing will provide tester’s involvement in the development cycle from beginning of iteration. A Tester has to define what will be tested in the iteration and which test cases will be run in that iteration. This definition is documented in a Test Plan which is linked to that iteration. Microsoft Test Manager 2012 provides Test Plans which are associated to Team Projects. The Team Projects can be based on process templates provided by Team Foundation Server in terms on Agile, Scrum or CMMI. Each Team Project can have a number of Test Plans associated. Each iteration may have one Test Plan. The following diagram shows 2 test plans available with current team project.
Each Test Plan will act as a container for Test Suites made up of test cases. These Test Suites can be requirement based, static or query based. Creating a requirement based suite will automatically fetch all the test cases which are associated with the requirement.
A PBI has three test cases associated with it. If I create a requirement based test suite with this PBI, then it will start showing all the 3 test cases in the plan tab of MTM.
How do I keep customers always in loop while developing the software?
Customers should know and stay updated with the look and feel of the software project. At the same time, customer should also be able to view the software and its functionality before shipping.
· Visual Studio 2012 provides storyboard feature which will give an idea of the look of an application to the customer. With requirement as work item, there is a provision of connecting to a storyboard which can be created with the help of PowerPoint. There are a lot of shapes and icons provided with PowerPoint which support in creating a storyboard. Following diagram shows some of them.
The customer can provide inputs about the workflows in the software based upon the storyboard that is shared with the customer representative.
· After the software is ready for the demonstration, team creates a feedback request which comprises of all the information, as to what is to be checked, how the application is going to execute etc. An email is sent to the customer mentioning those guidelines. The customers can install free Feedback client tool on his/ her machine and provide the feedback that will be recorded in feedback response work item.
Customer can provide feedback in terms of audio, video or screenshots.
· There is a concept of creating a Work Item View only view for customers. With this view the customers will be able to view various work items but cannot update it.
How do I take care of Exploratory Testing during development?
Normally testing is carried out by using pre-defined test cases. These test cases provide detailed information about each step to be executed and the result expected from it. Sometimes these set test cases are not available. If you have sufficient domain knowledge then you can explore the application without going through fixed steps and still find out about any flaws if they exist. Visual Studio 2012 provides exploratory testing feature with a lot of in built facilities.
Exploratory testing does not require test case for execution. You can either explore the application without any association to work item or explore an existing work item. While doing so, actions can be recorded with some comments or video or audio information about exploration can also be provided. Later you can decide whether to create a bug or a test case based on the actions recorded during exploration.
Explore with option can capture a lot of information behind the scene which helps in creating a rich bug. A rich bug is the bug which provides a lot of data about itself.
Following bug shows exploration actions and we can create test case along with the bug as shown below
If the application exploration is going to take a lot of time and I have to pause in between, I can resume the application exploration at a later stage. Note that I cannot close the MTM instance running.
With exploratory session result, I can observe that I have created a bug as well as a test case. This test case will now have pre-defined steps which can be modified to suit my acceptance criteria.
I started exploring application without any defined set of test cases, but after the exploration is over, I can have a test case with actions and expected results. This test case can then be used for testing by a tester who may not have sufficient domain knowledge.
The lightweight tool for testing is provided with the Test hub as a part of Web Access. It is available from Team Foundation Server 2012 Update 2 onwards.
How do I take care of automated testing?
It is required to test the software to find out if the bugs have been actually fixed and also to ensure that no other functionality has failed because of bug fixes and newly added features. We need to test previously executed tests. Using Microsoft Test Manager 2012, we can create action recordings of test case while manually executing. These recorded actions can be used to automate the test cases.
Visual Studio 2012 also provides various automated test types namely Unit Tests, Web Performance Tests, Load Tests and Coded UI Tests. Out of these types, normally unit tests, web tests (which are also functionality tests) are mainly executed by developers or programmers to check the functionality. Once functionality testing is over, load testing can be conducted.
Visual Studio 2012 provides a unique way of testing UI in terms of Coded UI Tests (CUIT). CUIT can be created in 2 ways. In the first option, we can use the actions we have already recorded while conducting manual testing using MTM. The other option is to record actions and add assertions from Visual Studio 2012 with the help of Coded UI Test Builder (CUIT Builder). With CUIT, we can also track the quality of the output provided.
The code generated is with the help of .NET framework supported languages like C# as shown here.
As the code generated is in a high level language like C#, it can be easily modified as per the needs.
With this article, I have put forth the concept of Agile Testing. While applying Agile methodology, the testing done is termed as Agile Testing. Visual Studio 2012 provides tools with which a lightweight testing feature is available as Test tab with web Access. We also discussed how testing involves the whole team and that customers play a very important role in the whole development life cycle. We also discussed how exploratory testing is one of the useful feature provided with Visual Studio 2012. Using automated tests with Visual Studio 2012 will lead to reliable automation and which will further result into continuous quality of the software produced.