Agile testing: the first quadrant
Agile testing is a testing approach that is designed to be flexible and adaptable, and is often used in conjunction with agile software development methodologies such as Scrum and Extreme Programming (XP).
In the context of agile testing, the first quadrant refers to the tests that are performed at the beginning of the development process, before any code has been written. These tests are designed to validate the requirements and design of the system, and may include activities such as:
Exploration: involves exploring the requirements and design of the system in order to identify potential risks and areas of uncertainty.
Validation: involves verifying that the requirements and design of the system are correct and complete, and that they meet the needs of the users.
Estimation: involves estimating the effort required to implement the system, based on the requirements and design.
Risk identification: involves identifying and prioritizing the risks associated with the system, in order to focus the testing effort on the most important areas.
Overall, the first quadrant of agile testing is focused on validating the requirements and design of the system, and on identifying and mitigating risks in order to ensure that the development process is efficient and effective.
The first quadrant contains unit tests and component tests. The following image is about Lisa Crispin's 4 quadrants
Unit tests
Testing function, classes, and methods following the discipline of test-driven development and other extreme programming practices. We have a lot of unit testing frameworks that can help us to write our tests. The following list is for the most common programming language. You can find a large list of frameworks on Wikipedia.
- PHP
- PHPUnit, Enhance PHP
- BDD: Codeception, Behat
- Javascript
- Java
- JUnit
- BDD:
- Python
- Unittest and Unittest2
- Doctest
- Nose
- BDD:
- Ruby
- BDD: Rspec, Cucumber
Component tests
Component testing is a method where testing of each component in an application is done separately. Martin Fowler definition: A component test is a test that limits the scope of the exercised software to a portion of the system under test.
- Broad-stack test:
- Test Pyramid: unit on the base, service and UI. Check the ice cream cone: an amazing article about the test pyramid and various testing levels
Other terms we must consider speaking about component testing:
- Stub
- Test Double is a generic term for any case where you replace a production object for testing purposes - Martin Fowler.
After testing
We must consider further steps in the software development life cycle with unit and component testing:
- Continuous integration
- Continuous delivery
- Continuous deployment: on continuous delivery, every change is ready to be deployed. On continuous deployment, the process is automatic. This article is great and it explains the difference.
Q&A must find nothing!
Q&A must find nothing after we have deployed our application.
- Unit tests 100% coverage; all tests must pass
- Test the behavior: UI, forms, links, redirect are testable with BDD and browser automation tools like Selenium or Sahi.
People
Least but last, I have to remember the most important people around Agile and Agile testing:
- Robert C. "Uncle Bob" Martin.
- Martin Fowler
- Kent Beck
- Lisa Crispin
- Mike Cohn