- What is Agile?
- Principles of Agile Testing
- Agile vs. Waterfall
- Role of Testing in Agile
- Challenges of Testers in Agile
- Agile Tester Should be
- Pros and Cons
- Role of Testing in Agile
In the world of software development, the term agiletypically refers to any approach to project management that strives to unite teams around the principles of collaboration, flexibility, simplicity, transparency, and responsiveness to feedback throughout the entire process of developing a new program or product.
And agile testing generally means the practice of testing software for bugs or performance issues within the context of an agile workflow.
What is Agile
Agile Software Development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change.
- Agile => Speed
- Speed requires discipline
It is not;
- Compressing the schedule
- Throwing out the documentation
- Coding up to the last minute
Agile methodology may result in short term speed, but at the cost of long term pain.
Principles of Agile Testing
- Testing moves the project forward
- Testing is not a phase
- Everyone tests
- Shortening feedback loops
- Keep the code clean
- Lightweight documentation
- From Test-last to Test-driven
Testing moves the project forward
On traditional projects, testing is usually treated as a quality gate, and the QA/Test group often serves as the quality gatekeeper. It’s considered the responsibility of testing to prevent bad software from going out to the field. The result of this approach is long, drawn out bug scrub meetings in which we argue about the priority of the bugs found in test and whether or not they are sufficiently important and/or severe to delay a release.
On Agile teams, we build the product well from the beginning, using testing to provide feedback on an ongoing basis about how well the emerging product is meeting the business needs. This results as decreasing the hard path of the test process, which can prevent of cause the Project deadline to be exceeded.
Testing is not a phase
Agile teams test continuously. It’s the only way to be sure that the features implemented during a given iteration or sprint are actually done.
Continuous testing is the only way to ensure continuous progress.
In traditional projects, the independent testers are responsible for all test activities. In Agile, whole team is responsible for testing.
Agile need speed, testing duration would not slow down if the whole team joins the testing phase. Sprints are planned according to the development phases, so testing phase has to be as fast as development phase.
Shortening feedback loops
- Programmer writes code
- Someone executes code
- Provides info about how it behaves
If the software isn’t tested until the very end of a long release, the feedback loops will be extended and can be measured in months. In Agile it cannot be done in this way.
Shorter feedback loops increase Agility in the project.
Keep the code clean
- This principle in an example of the discipline that Agile teams have.
- Buggy software is harder to test, harder to debug-modify, and slows everything down.
- Every developer should keep the code clean and fix bugs fast.
Instead of writing verbose, comprehensive test documentation, Agile testers:
- Use reusable checklists to suggest tests
- Focus on the essence of the test rather than the incidental details
- Use lightweight documentation styles/tools
- Capturing test ideas in charters for Exploratory Testing
- Leverage documents for multiple purpose
From Test-last to Test-driven
In traditional environments, tests are derived from project artifacts such as requirements documents. The requirements and design come first, and the tests follow. And executing those tests happens at the end of the project
Defining the tests with the requirements, rather than after, and using those tests to drive the development effort, gives us much more clear done criteria and shared focus on the goal. T. This is a “testlast” approach.
Agile vs. Waterfall
- One big project
- A sequential process
- Suited for situations where change is uncommon
- A process that requires clearly defined requirements upfront
- Many small projects
- Highly collaborative
- Best for those who want continuous improvements
- Involves customers
- A process in which requirements are expected to evolve and change
In Waterfall Projects
- Test is planned before testing phase
- Test plan is rarely reviewed during testing phase.
In Agile Projects
- Test is planned before project start and during project often
- Test plan is reviewed each sprint
Software Quality improves because testing starts from day one.
Role of Testing in Agile
- Testing is the headlights of the project – where are you now? Where are you headed?
- Testing provides information to the team – allowing the team to make informed decisions
- A “bug” is anything that could bug a user – testers don’t make the final call
- Testing does not assure quality – the team does (or doesn’t)
- Testing is not a game of “got you!” – find ways to set goals, rather then focusing on mistakes
Challenges of testers in Agile
- No traditional style business requirements or functional specification documents. We have small documents (story cards developed from the 4×4 inch cards) which only detail one feature. Any additional details about the feature are captured via collaborative meetings and discussions.
- You will be testing as early as practical and continuously throughout the lifecycle so expect that the code won’t be complete and is probably still being written
- Your acceptance Test cases are part of the requirements analysis process as you are developing them before the software is developed
- The development team has a responsibility to create automated unit tests which can be run against the code every time a build is performed
- With multiple code deliveries during the iteration, your regression testing requirements have now significantly increased and without test automation support, your ability to maintain a consistent level of regression coverage will significantly decrease
Agile Tester Should be
- Provide continuous feedback.
- Deliver value to the customer.
- Enable face-to-face communication.
- Have courage.
- Keep it simple.
- Practice continuous improvement.
- Respond to change.
- Focus on people.
Pros and Cons
- Flexible model, adaptive planning
- Customer feedback simultaneously with development and testing
- Facilitates interaction and communication between stakeholders
- Active user involment needed
- Intense collobration needed
- Hard to predict timeline-budget
- Everthing in the plan is vague-uncertain
Future of Agile Testing
Agile has already won the battle for mainstream acceptance, and by all indications its general precepts are going to remain viable for some time. While much of this success is undoubtedly due to its effectiveness when used in appropriate circumstances, liberating software teams from old, tired ways of doing business, it’s also at least partially the result of the changing territory of computing itself.
The speed of software sales and numbers of downloads are increasing, and development processes should follow this trend. Agile is the best solution for this problem that we have, but for now.
- An “agile testing mind-set” is customer-focused, results-oriented, collaborative, creative, eager to learn, and passionate about delivering business value in a timely manner.
- Attitude is important, and it blurs the lines between testers, programmers, and other roles on an agile team.
- Agile testers apply agile values and principles such as feedback, communication, courage, simplicity, enjoyment, and delivering value in order to help the team identify and deliver the customer requirements for each story.
- Agile testers add value to their teams and their organizations with their unique viewpoint and team-oriented approach.
- Talby D., Keren A., Hazzan O., Dubinsky Y. Agile Software Testing in a large scale Project, IEEE Software, August 2006
- Sumrell M., From Waterfall to Agile – How does a QA Team Transition?, IEEE Agile 2007
- Puleio M., How Not to do Agile Testing, Agile 2006 Conference
- Agile testing, http://en.wikipedia.org/wiki/Agile_testing
- Agile Testing Approach, http://www.tutorialspoint.com/software_testing_dictionary/agile_testing.htm
- Agile Testing Strategies, http://www.ambysoft.com/essays/agileTesting.html#ImplicationsForTesting
- Ten Principles for Agile Testers, http://agile.dzone.com/articles/agile-testing-principles
- Waterfall vs. Agile, http://www.onedesk.com/2013/01/waterfall-vs-agile/
- An Introduction to Agile Software Testing, http://www.slideshare.net/kmstechnology/introduction-to-agile-software-testing
- Hendrickson E., Agile Testing, Quality Tree Software, August 2008
- Agile software development tutorial: Agile testing, http://searchsoftwarequality.techtarget.com/tutorial/Agile-software-development-tutorial-Agile-testing
- Agile & Waterfall Methodologies – A Side-By-Side Comparison, http://www.base36.com/2012/12/agile-waterfall-methodologies-a-side-by-side-comparison/
- Agile Testing Methodologies, http://www.guru99.com/agile-scrum-extreme-testing.html