The role of a software tester is challenging. The tasks can be daunting due to the complex nature of modern software products, team dynamics, and organizational structures. Software testers are playing a central role in every product organization and team and can feel constant pressure in their daily life. Software testers have not only to be strong in tooling, technical skills, data management, and understanding the user, no they also have to be strong in stakeholder management. They need to communicate with many different people from different perspectives and levels.
In this article, I want to share my personal experience when I was working as a software tester in agile teams for more than 10 years. To give you some context, here are a few important things to know before reading this article.
Introduction of Daniel
Hi, my name is Daniel Knott and I have more than 14 years of professional experience in software testing. At the moment I am working as Head of Product Quality Engineering for MaibornWolff in Germany. My current role is not a hands-on active testing one. It’s a pure management position. Before working in this position, I worked in many different agile development teams on web and mobile products. I was not only working with the developers, product managers, and designers in one team but in many at the same time. One of the most challenging roles I had, was when I was helping my former company to scale mobile testing from one mobile development team up to 30 development teams.
During this time I faced many challenges. However, looking back at the last 10 years, I can say that the following three topics were the most challenging ones:
In my career as a software tester, I worked with many different tools and I bet you, too. I am not talking about exclusive testing tools to write automated scripts but tools for all kinds of support. From documenting ideas to tools or frameworks to setup CI/CD pipelines including test automation and not to miss communication tools. The amount of tools a software tester or people working in the software development industry have to use is huge. During my time the hardest challenge was to find the right tools for our needs.
The administrative tools for example for communication and documentation of the product process were usually defined by the management. However, the tools for the daily challenges were on us, the development team. Selecting a tool is easy, but I have seen many teams failing with the tool selection because they tend to select the most hyped tool on the market. The really cool ones, if you know what I mean. But this can be a trap! Just because it’s a hyped tool doesn’t mean that the tool is the right one for your project. I learned it the hard way when selecting a mobile testing tool in 2011. Back then there were not too many mobile testing tools on the market, so I picked the one that did a great job in sales. Once I started to work with the tool I noticed that not all our requirements will be met and that the tool will be useless in the long run.
It wasn’t an easy decision to drop the tool and find and select another one. But I learned that picking a tool, no matter the use case, needs careful research. Now, if I have to pick a tool, I start raising questions. The questions and the answers lead to a checklist with selection criteria for the right tool. In the exploration phase, I check the tools and see how many boxes will be ticked. The tool with the most ticked boxes is the winner.
In doing this process, it’s much easier for me to integrate new tools in our development chain to get fast feedback and the best support I need to finish the task.
The second challenge I want to write about in this article is data. Software products work with all kinds of data. From user data to product data. The software that we are building is processing this data on different layers of the product architecture including the data storage.
The data being processed in a product is the central part of every product. Without data most of the products are useless. In my previous positions, I had to deal with different kinds of data. There was sensitive user data including personal information such as name, last name, addresses, or credit card data. When working with this kind of sensitive data it’s important to work and check always at 100% that the system is not leaking this data.
I was lucky in my early days as a software tester. I was working with really experienced software testers and developers in a team. They explained to me how to deal with this kind of data and showed me techniques to not mess up with the data.
The most important rule they taught me when working with data was to always check on which system I am currently connected to. Before hitting the enter key, double-check if you are on a production system with real customer data or if are you connected to a staging system with fake data. If you follow this rule, you can never mess up with the production data in the first place. Sure there are other ways to mess up with the production data, but this is a simple rule to follow.
Over the course of the years working in different teams, I usually checked the structure of the production data. What fields and attributes of the data are we processing and storing. Based on this information I created fake data using scripts for our staging systems. This data was stored in databases and could be resetted by commands from our CI/ CD pipeline when we needed them for test automation.
Lucky me, I was never involved in any data breaches or mess-ups. But you just have to check the news. There are many examples, where companies, teams, or individuals mess up with production data. Such events have a huge impact on the company’s reputation and can easily mean the end of the business.
When you are handling lots of data as well, I highly recommend you to talk to people who work longer in the company and let them explain to you how the data is being used and what structure it has. This knowledge will help you to define your own strategy on how you want to work with it.
The third and most challenging task I have faced working as a software tester is working with people. Every human being is different. People have different tastes, views and working styles. Just take a moment and think about your colleagues. Are they all the same? I bet not and this is super great. But working with people, especially as software testers, is challenging. As software testers, we have to talk to many different people. We need to talk to product managers, who talk more on the business side. We have to talk to developers who are the tech experts in a team. We are talking to designers and interaction designers who create new products having an eye on the business and the tech side of things. But we are also talking to other stakeholders such as upper management, and internal departments like sales, marketing, or product support. We are also talking to clients to get to know their habits in using our product. And last but not least we are talking to software testers, too.
When I was working in a development team, one of my first tasks always was to talk to all my colleagues involved in the development process. I wanted to understand and find out which information I can get from them and which information I need to deliver to them. This helped me a lot to find the right way to communicate with each of them. This is extremely helpful when you as a software tester have to share information during the development of the product. I saw it as one of my central tasks, to give open and candid feedback about the current state of the product. And depending on whom I was talking to, I adapted my communication style, to deliver the information in the right format. It’s important that the other person is understanding the information to use it for his/ her tasks. With the right communication and people skills, many problems can be solved during the development process. In the long run, this leads to a happy working environment and customers.
In this article, I shared my personal three real-life challenges with you that I have experienced over the course of the years working as a software tester. Of course, I had to handle more challenges on a daily basis. However, looking back at the three mentioned ones, they kept me busy the most.
These are challenges that you don’t solve just once. You have to constantly adapt your solutions to the current situation, to find the best solution for your team, company, and product.
I would love to hear about your challenges as a software tester, please share them with me and the testing community.