Testing is a skill that software developers can hone over time. Think of it not as a chore to be done, but rather as a personal skill and an integral part of the software development process. Good developers know how to test locally before moving on or pushing up. I thought it would be beneficial to break down the behaviors and attitudes I believe are the mark of a mature test-as-a-skill. These apply for both automated and manual testing, although the actual manifestations vary for each. So, a wise testing-developer is one who:
The mantra is “code a little, test a little.” A skillful testing-developer will test as frequently as is reasonably possible. Testing for minutes—as opposed to hours or days—is generally ideal due to the constant stream of objective feedback received for every little change made. TDD (Test Driven Development) takes the idea of frequent testing even further by putting the act of testing itself in the driver’s seat. Additionally, running the test suite as part of each build (or even with each pull request) also helps to ensure unit tests are being run frequently (even if some team members are forgetful).
Sometimes things get too technical and complicated to just wing it. A good testing-developer has learned to test one thing at a time because trying to do too much at once can hide problems or cause you to reach incorrect conclusions (for example, making changes A and B caused C, therefore A caused C).
Understands a test’s limitations
A good testing-developer looks beyond the superficiality of the green dots of passing tests and asks “What is actually being tested? What does it prove?” A common problem is forgetting to check that the results generated were correct. A good testing-developer always wonders how they can be sure the results are correct.
Performs root-cause analysis
A good-testing developer treats each bug as a potential lesson learned and asks, “Why did this problem get by me? Could I have reasonably prevented it?” A good testing-developer also immediately looks to understand the scope of an issue; is it a bug confined to a single instance on a page or is it a global issue?
Sees things from the user’s perspective
One of the hardest challenges is seeing things from another person’s perspective. Developers have a natural tendency to see things from their own perspective, which can be quite different from a user’s perspective (especially when the user is a kind of specialist, such as a data analyst for health insurance company). When you make the switch to seeing things from a user’s perspective, often what didn’t previously look like a problem now seems like an obvious and glaring issue.
Knows when to keep on testing
Sometimes developers think that to have tested the code means they’ve merely done something to test the code. In reality, having tested the code is more about having done everything reasonable to test the code. Being able to judge the line of reasonability is a key part of the skill.
Lastly, finding good software developers with a solid grounding in test-as-a-skill can be very difficult. If your organization needs help with any aspect of software development, please don’t hesitate to reach out to us. We’d love to help you get started.