Agile Testing: Arresting Anti-Patterns to Foster Productivity
The testing industry is blooming exponentially with new trends, tools, and patterns popping up constantly. Many of these new patterns claim to increase the productivity of testers and testing. Nevertheless, not all patterns increase productivity. Often, testers unconsciously fall into such anti-patterns. This article covers some common anti-patterns during agile testing, along with some tips and ideas on countering them.
Table Of Contents
In your everyday life, you would have observed, read, and heard about common patterns for approaching and solving problems efficiently. The term anti-pattern, however, is often unfamiliar to many. An antipattern is a pattern that is often thought of as a standard solution to a problem, but often has negative consequences or is counter-productive in the long run.
In order to help you better understand this concept, here are a few examples of common anti-pattern during agile testing:
1. Measuring with surrogate or proxy measures.
i. For example, measuring the number of tests added by a tester to measure their productivity.
ii. The use of proxy measures to measure progress is often founded on incorrect assumptions and biases.
iii. Such measures are only used because they are easy to count.
2. Using tools or practices in the wrong context.
i. An example would be using email communication, where using chat would have been more convenient and efficient.
ii. Any tool or practice is merely a heuristic for solving a particular problem.
iii. A sapient use (the use of skill and care) and understanding of the context/purpose are essential.
iv. If all you have is a hammer, everything will look like a nail.
Now that we understand what an anti-pattern is. We’ll discuss three common anti-patterns that most testers encounter:
- Not Documenting Things
- Over Emphasis on GUI Tools
- Restricting Efficiency to Test Automation
Not Documenting Things
In the industry, it is a common misconception that Agile means no documentation. It’s true that Agile emphasizes building working software over “comprehensive documentation”. Nevertheless, not documenting things, at all, is one of the biggest productivity traps. It is true that we do not need overly comprehensive documentation of the entire software. Nonetheless, documenting creates a local cache about yourself that ultimately helps you be more productive, and these caches are easily retrievable from your workflow management platform for team use.
If you have ever worked in a distributed team, you are familiar with the common practice of members asking for information via chat messages or emails. These formats are often short-lived and flow down the system instantly. People often have to repeat the same or similar information when someone else asks for it. Furthermore, this creates reliance on people for project information and degrades the rollout/transition experience when someone leaves the team.
When documentation is done, it can be used as a local cache to share information that people would have otherwise gathered from you. Every time a document is read by someone, you instantly save the time you had originally invested in creating it. The returns on this investment will also compound over time, just like any other investment.
In other words, whenever you share information that isn’t documented, make sure it is documented. I consider documenting my work to be one of my most important productivity secrets. Depending on the context, I try to move important and persistent information to either of these:
- Test Notes
- FAQ Doc
- Flow Chart Documents
- JIRA, etc.
Over Emphasis on GUI Tools
It is easy to visualize information when using GUI tools because they simplify complexity. Testers typically use GUI tools to generate data, filter data, run tests, and so on. There are, however, some limitations associated with GUI tools, such as:
- Platform dependent
- Less Verbose
- Requires more space & memory
It can be a productivity anti-pattern to place too much emphasis on GUI tools. Often, command-line interfaces are more effective for quick, basic, and quirky tasks. Having fluency with the command line improves your flexibility and productivity as an engineer in both obvious and subtle ways. CLI tools have their own benefits in the long run. Often, operating system commands, shell scripts, keyboard shortcuts, etc., are capable of doing heavy-lifting GUI tasks quickly. It is usually more convenient to work with CLI terminals when you have constrained devices that do not have enough space or are restricted from using GUI tools.
Want to learn about more about CLI & CLI Utils? Here are some references:
- Art of Command Line: Master the command line, in one page (github.com)
- Awesome Command Line Utilities (github.com)
Restricting Efficiency to Test Automation
Testing efficiency is often associated with the automation of test procedures or the execution of tests via automated test scripts. However, the use of tools can improve efficiency in all aspects/phases of testing. The use of tools can greatly enhance testing efficiency if they are used intelligently. There is a wide range of possibilities for automation in various test activities, such as:
- Test Environment Setup
- Mocking Component Behavior
- Test Data Preparation
- Test Build Generation
- Micro Utilities / Scripts
- Text Fillers
- Test Environment Cleanup
Automating your day-to-day tasks is possible in a variety of ways, and the examples above are only a few. Any task that’s repetitive or lacks creativity should be considered for automation whenever possible. Most of the time, you will find already available tools or similar ideas to build your own tool to enhance your testing efficiency.
Moreover, small utilities, macros, micro tools, and extensions can enhance your testing efficiency as well. A few examples of such small tools and extensions are listed below:
- Session Management – Save Tabs with Project / Purpose. One Click Opener.
- Bug Magnet – Exploratory Testing Assistant
- Go Full Page – Save your Pages (Full)
- Fake Filler – Free, Fake, Random Form Filler
- Exploratory Testing Extension – Note Taker
- UX Check – UX Guidewords / Heuristics
Testsigma too supports a lot of such add-ons supporting various automation actions and data generators powered by the Testsigma Team and the Community. Checkout the Testsigma add-on marketplace here: Testsigma Addons Marketplace
For all our visual readers, I have summarized this entire article in the form of this mind map.