The document introduces the PURIFF acronym as a checklist for determining the types of tests that should be conducted during a sprint. PURIFF stands for Performance, Unitary, Regression, Integration, Functional, and Functional testing. Each letter represents a different category of testing. The scope of each testing type is described, including examples of tools that can be used to automate the different tests. Using PURIFF helps ensure all necessary testing is considered to deliver a potentially releasable product increment at the end of each sprint.
1. Page 1
PURIFF: Scoping the Sprint Tests
Mahfoud Amiour
CSPO, CSM
mamiour@softenia-solutions.com
Introduction
In Scrum each Sprint produces an increment which is a partial and potentially releasable product. To
be releasable, the increment must meet all acceptance criteria and pass different categories of tests.
Consequently, each Sprint should consider all testing activities required for a releasable product.
Unfortunately, I observed during my interventions on different projects that many teams only focus
on a sub-set of testing activities during the Sprint.
In this article I introduce the acronym PURIFF as a concept containing all test categories to be
conducted during the Sprint. The Scrum team can use the PURIFF acronym as a checklist to
determine which categories of tests are relevant to its context
Each element of the PURIFF acronym represents a category of tests:
• P: for Performance testing;
• U: covers Unitary testing ;
• R: deals with non-Regression tests;
• I: represents Integration testing ;
• F: for Functional tests ;
• F: covers non-Functional tests.
PURIFF testing scope
The scope of PURIFF includes the following categories of tests:
• Performance tests. Performance tests ensure that the system response time is acceptable
for the users. They consist in measuring the application’s reaction time to the different
requests. There are different tools (commercial and open source) that can be used for
performance tests: HP Load Runner, IBM Rational Performance Tester and JMeter are
examples of performance testing tools.
• Unitary tests. Unitary tests are written by developers to test individual classes. They fall into
the test driven development or TDD strategy. Different solutions exist to write and run
unitary tests automatically. JUnit and NUnit are among the most popular tools for unit
2. Page 2
testing.
• Non-Regression tests. The objective of non-regression tests is to ensure that new defects
have not been introduced after the modification of the code. Indeed, each code change is
likely to introduce regression on the existing system. Retesting the already tested system
becomes necessary. Regression tests are a tedious activity especially in an Agile context,
characterized by continuous changes and frequent deliveries. They are also time-consuming
when done manually. I strongly recommend automating them. Even if automation has a
cost, the return of investments for the project is high. Fitness, Selenium, Microsoft Test
Manager, and HP ALM are examples of the tools that the team can use to automate non-
regression tests.
• Integration tests. Integration tests allow to verify that the modules (a set of classes) work
well when put together. They are usually run automatically on the continuous integration
environment.
• Functional tests. The scope of Functional tests is to check that the system behaves
corresponding to what has been specified through the elements of the Product Backlog (i.e.
Acceptance criteria). They consist in testing each new feature of the increment against the
corresponding acceptance tests. These tests can be run manually or automatically.
• Non Functional tests. Non-Functional tests cover the non-functional aspects of the
application. These aspects are often defined as non-functional requirements (technical user
stories). For example: scalability, robustness, security, portability, stress testing, etc.
Conclusion
In this article I introduced the acronym PURIFF as a concept that contains all the testing
activities that have to be considered in a sprint (iteration).
Even if all the increments are not intended to be deployed on production, the Scrum team
can use the PURIFF scope as a checklist to determine which categories of tests are relevant
to its context.