What does it take to be in charge of software quality? What skills can make you a better quality assurance engineer? How can you contribute most on the projects you are working on? <p>Pour some coffee, put on some relaxing music and join us for the sixth episode of Tech Talks where Ana Milutinović shares the valuable experience she obtained while working as a Quality Assurance Specialist at Zühlke.</p>
What changed the most in the field of quality?
There was a seismic shift in methodology when it comes to the world of software development. This had a direct effect on our work. Quality assurance is now a part of the development team which is great because it is built-in from the very start of a project. We call this the “Shift-left testing“ approach.
In terms of the workflow, the testers are familiar with the development process now. It is very important because the test cycle is a component of the development cycle. These should not be separated like before, because it is a singular process. However, the downside is that we have fallen into the trap of equalizing quality assurance with automation or automated testing.
What is your take on automated testing?
I handled automation on a project for five years and learned a lot: to code, to use relevant tools, and to design frameworks that make my job easier. Testing skills aside, you need quality assurance skills to write quality assurance tests. It takes a strategy to help you decide what to automate and how to automate it out of thousands of possibilities.
In his book "Perfect Software and Other Illusions About Testing", Gerald M. Weinberg says the following on the subject:
„Most of the time, a nonfunctional smoke alarm is behaviourally indistinguishable from one that works. Sadly, the most common reminder to replace the batteries is a fire.“
The quote sums up my opinion perfectly - automated testing is a must. In my experience, it‘s an instrument of quality assurance and it only makes sense when it gives you information on which you can make good decisions on the software you are working on. It needs to give you an informative data of the product and then smartly use it as a good insight.
How to deliver quality?
Quality assurance is a process, and an engineer should test it throughout the cycle and create conditions for good decision making, whether it comes to the client, the developer or other participants in the process. It is also very much about managing and acquiring skills. They handle project evaluations throughout the test cycle. I’ll give you an example:
I have the title of a quality assurance manager on a project. It doesn’t mean that I manage the group of testers. I manage a test process. Although I don't like the word 'managing'."
It’s a new project. The first thing I do is a design for testability, it’s a nice example that comes to mind. I mention this because in this day and age, software development has evolved in a way that everything comes in a box, an of-the-shelf, ready-made and available for fast deployment.
In Design for Testability I am taking care of the requirements needed to simplify the testing. We choose which approach to use while creating mock-ups or fake objects. Also, we are dealing with logging and dumps, because it may be difficult to diagnose the root cause of the problem without a good logging approach. In large systems, often some unit tests pass and some system test fail.
Also, we do something called flexible configuration. It about finding the simplest deployment in the test environment. No one thinks about it today because you can go to CI/CD Pipeline and find a pre-packaged solution. But there are always specific elements that can be more suited to the project and designed alternatively.
Quality Assurance can be included in later stages of development. This was the case of a project that I was a part of. The project was at the stage where several partners have already developed and tested separate components. My task was to design and execute the System-level test. System-level addressed the integration of these components and test process was designed accordingly. Also, the test process included stake holder coordination and partnership between teams. This meant a unique defect management system, special test environment etc.
The example illustrates additional skills required for a quality assurance engineer. You are in charge of designing and running the process, you coordinate people while writing tests at the same time. It requires some experience.
When it comes to technical skills, the more knowledge and practice you have with the principles, concepts, and systems of code – the better. This is a solid foundation upon which you can further enter any kind of coding and you will be looking at and working with other people's code a lot.
Quality assurance also doesn’t stop upon the release of a product. We used to do post- mortem analyses of the projects, these days we make retrospectives and we also have shift right testing, which I find interesting. It means you stay on the project after its release. You develop monitoring systems that notify you of errors. In my opinion, a tester should stay on the project after its release, because they can track quality and bugs that occur in real-time. In that way, they gather significant data that can give them an insight into the quality of their work and experience when it comes to future projects.
Is the value of quality assurance recognised?
It depends on the company. There are some with a quality assurance culture, who are used working with testers and quality assurance people. In an environment where roles are clearly defined and familiar to everyone, things run smoothly.
The process is a bit harder in organizations that don’t have experience working with quality assurance. It’s not easy to pin this down, but it can be difficult for them to understand and accept that quality assurance process is of value. They eventually do, it just takes time. In such instances, communication skills are the best asset you can have as a quality assurance specialist.
There is a belief that that testers and developers always end up on opposite sides. I don’t agree with this. I’ve always improved my knowledge and worked side by side with the developers. When you have that kind of mindset, there will be no problem whatsoever.
Can the learning curve be accelerated outside the office?
Today, there is an equal amount of resources online for QA, as there is for developers, which was not always the case.
My biggest source of knowledge is the actual work on the projects. This is where I am drawing the know-how, sharpening my skills, evolving the mindset regarding work approaches, and getting true insights into industry tendencies. You will always find me in development, sitting with the team, working on the project.
IT communities have also left a significant impact on my learning curve. I believe that environment where educated individuals freely share their experiences and skills is rewording. Such was a community that was engaging in Agile approaches, where I was active for several years.
I’ve also participated in IT conferences dedicated to developers to keep up with it as much as I can, to always stay up to date with the software development process. Conferences on testing are a must. Unfortunately, we still have no conference which gathers representatives of several technologies, especially quality assurance and developers. There has been a tendency towards organizing one in the last few years, but it’s only in the talks for now.
I was a speaker at a conference in 2014, and my subject was testing in Agile. It was a brand new approach, and I only had one book to rely on. With the goal of finding good solutions for the future, I wrote a paper on our work in the company and experience on the projects and went to an educational conference in Bucharest. After the conference, I had a chance to share experiences with colleagues from all over the world, which was quite useful in terms of networking and the reason I always attend meetups when invited.
How do you go from a novice to an expert?
My advice is to work on yourself in every way possible: books, internet, and webinars. The trick is to stay clear of marketing trends. The first step for this should be the project and team you are currently with. This is where your team can help you the most. In order to maintain a constant self- development, I would recommend the following:
- Ask yourself how you can contribute to the project to make it better. This way you make the first step towards team culture and work improvement.
- Take it step by step. Start where you are by relying on the help of more experienced colleagues in the team. Learn something on every project. Don’t be in much of a hurry, even though this industry is about quick delivery.
- When you go to a conference, listen to what the people have to say and find what appeals to you so you can learn more about it.
- Don’t try to apply everything at once. Self- development is an individual experience, find what works best for you.
Ana Milutinovic is a Quality Assurance Specialist and has been with Zühlke since May 2017. Working in the IT industry, she tested a wide range of products and is skilled in various testing areas. As an experienced tester she was practicing appropriate testing skills and techniques in diverse projects - from e-banking to SAP software solutions, airline booking to talent management software. Her skills include agile methods in testing and software development in general. Ana is actively engaged in a number of Serbian QA and agile communities.