Are You a Good Agile Tester?
In previous article, we looked at 10 Characteristics of a bad software tester. In contrast, this article focuses on characteristics that good agile testers possess.
Testing in an agile environment is different that the traditional methodologies such as waterfall. Agile is an iterative model of delivery which requires continuous collaboration between the team members, providing quick feedback and be able to self-manage.
Quite often there are challenges in testing in an agile environments such as lack of documentation, changing priorities, less time to test, but with the right mindset and attitude, testers in agile team can provide a lot of value and help the team deliver good quality software on continuous basis.
So, let’s see what makes a good agile tester in an agile team?
Difference Between Testing and Quality Assurance
A good agile tester knows that his job is not limited to only executing test scripts, reporting defects and signing off on releases. Testing is only a portion of the wider quality assurance practice.
Testing is no longer a phase in agile software delivery. It’s a continuous activity before, during and after each sprint. In an agile team everyone is responsible for the quality of the software and quality should be baked in right from the start and not an afterthought.
If any of the stakeholders, BAs, Developers or even other testers in the team are not quality focused, it is the job of the tester to remind the team about the consequences of ignoring good practices to build a quality software.
Technical Knowledge and Test Automation
Test Automation is vital to the success of an agile project because automated tests can provide fast and reliable feedback to the development team. Tests can be automated at different levels with different purposes.
A good agile tester with sound technical knowledge is able to:
- Determine and advise which tests should be automated at which layer.
- Choose the right set of tools to help the testing
- Help the developers in writing automated tests and analyze the results of the automated tests.
- Create different automation suites, such as smoke pack, full regression pack, end-to-end regression pack, etc.
- Minimize the execution time for the automated tests in order to obtain quick feedback
- Execute tests on a continuous basis
- Provide valuable metrics to the business
- Utilize the facilities of different testing tools to help with manual testing
Agile testers also know that no matter how good the automated tests are, exploratory testing is still required to complement test automation, because not all bugs can be found by test automation.
To get the most benefit out of test automation, best practices should be followed.
Provide Continuous Feedback
One of the key benefits of agile development is being able to deliver a working solution quickly. In order to move fast, we need to get quick feedback on each version of the code.
We should be able to know, within a short period of time, whether new or updated code has caused any regression bugs. Hence, one of the objectives of testing in agile is to provide relevant information about the health of the application quickly.
When issues are reported early, we can fix them straight away and move on. If the feedback loop is delayed, the team have moved on and it becomes more difficult and time consuming to identify the root cause of the issue.
As Kniberg and Skarin put it:
Change something=> Find out how it went => Learn from it => Change something again. Generally speaking you want as short a feedback loop as possible, so you can adapt your process quickly.
Feedback can be provided in many forms such as:
- Pair Programming
- Code Reviews
- Unit Tests
- Automated Integration Tests
- Automated Acceptance Tests
- Automated Regression Tests
- Exploratory Testing
Of course the agile tester should ensure that proper and effective tests are written and executed at each level.
Well Versed in Agile Methodologies
Good agile testers have read and understood the agile manifesto and implement its principles on their daily tasks. Agile testers know that they are part of the delivery team and that there is no separation of testing phase and development phase, but rather testing is a continuous activity which happens as part of the development.
Good agile testers know that change is inevitable and that priorities change on a daily basis. There might be last minute urgent production bug fixes which requires testing as well as testing the new features and functionality.
Agile Testers understand the agile terminologies and participate in the activities. They read books such as Agile Testing by Lisa Crispin and Janet Gregory, User Stories Applied by Mike Cohn, Specifications By Example by Gojko Adzic.
In order to be able to design effective tests which are aimed at finding bugs and execute a successful exploratory testing session, agile testers need to have good understanding and knowledge of the domain application.
Good agile testers spend time to learn the terminology of the specific domain, understand architectural diagrams and help devise meaningful business case scenarios.
Although domain knowledge is vital in agile testing environments, because of the short time and crazy workload, good agile testers are highly skilled in the test profession so that they can design less tests with more coverage and are comfortable using techniques such as pairwise to design tests.
Domain knowledge can be obtained by talking to BAs and Developers, working with the application, and reading specifications.
Eager to Learn and Improve
An Agile team should, between the team members, have all the necessary skills to build and deliver a good solution, encompassing technical and business skills.
Team members in agile teams are multi-skilled. Developers know the importance of testing (or at least they should) and write automated tests where appropriate and applicable.
Likewise, good agile testers keep up with the changing technologies, learn new skills, such as coding/programming, HTTP, databases, API testing, technical testing in order to help their peer developers to keep moving fast.
Having said that, it does not mean that if a tester cannot code has no place in an agile team. Highly skilled testers provide a lot of value to the agile team, however having technical knowledge helps develop their career further and be more in demand.
The key drivers to a successful Agile team are the mentality and the attitude of the individual team members, together with everyone sharing a team objective and a team measure of success. This ensures the team and the individuals within the team are driven and motivated by the “All for one and one for all” mentality. What we look for is the “What can I do to help here?” attitude, rather than the “That’s not my problem” mentality.