Recently, one of our clients asked me to come and give a talk on software testing best practices. They wanted to know “best practices” but of course we all know that “best practices” don’t really exist. After all, who eats baloney these days? No such thing! Despite that, I whipped up a presentation on what I thought were directions to follow in terms of where software testing is headed and the direction that companies should move. As I put together the talk, I started to think about how the boundaries between hardware and software are falling. Whatever you chose to call this disruption (the Internet of Things, the connected world, etc.), it means that products are more complicated. So, although software is simplifying our lives, it also takes more connectivity and integration to make them work. In my recent keynote at PSQT, I discussed how the Internet of Things was impacting QA and how we, as testers, need to adapt. Extracting some of those key points, I believe that software testing best practices will involve these five concepts:
- Software is everywhere. It’s working its way into almost all industries. What was once a hardware or embedded software company that produces things such as speakers, garage door openers or refrigerators, now has a software component that continues to evolve with more functionality. Most of that additional functionality is tied to other products in an ecosystem whether it is home automation or security. This means that software engineers need to have much broader understandings and skills to think of how the products they develop will work not only alone but also with other products, some of which you might not even be aware. Since a large part of the value of the product will be how it integrates with other products, ensuring that integration is seamless will require new knowledge and skills.
- We are all in the security and privacy business. All of this connectedness means that there are now vulnerabilities everywhere there is a door, and sometimes even where there is no door. Learn how to write secure code and test that code for penetration vulnerabilities.
- Automation is king. With Agile, you can’t get around automation. Learn how to automate in its many forms, including white box, black box, behavior driven, and API.
- Don’t take performance for granted. Performance is now more complicated because you have to test across many interconnected devices.
- We need to talk. Agile is here to stay, and being agile requires collaboration. This means that even though we may be geeks, we need to be able to express ourselves both in writing and in oral communication. And there are many levels of each of these. For writing, we don’t want a lot of it in Agile, but what we do need is conciseness and clarity. For speaking, we need to act similarly, but we also need to be able to put on an extrovert’s hat to reach out to team members with different specialities.
While there are no set software testing best practices, there are software test engineers who will tell you to “do this” or “do that.” However, there are some visible directions in the industry that can tell us what software testing trends are taking place to help guide the way.