Full-Stack is a concept that has traditionally been associated with the developer role and will often be someone who is competent at both client and server-side development. In my 10 years working in software, I’ve yet to meet a half stack developer but that’s a discussion for another day. The concept of a full-stack QA has begun to increase in popularity (even if only with recruiters), and the idea does have some credibility. The role of a QA or Tester is becoming increasingly more complex and technical and the process of up-skilling across a number of areas can be the difference between a good tester and an excellent one.
Although I feel all developers are full stack to some degree, the development role does allow for some degree of specialisation, which is most likely the main reason a developer may not consider themselves to be full-stack. I feel testers will soon not have the luxury of choosing to focus on say only ‘front end’ testing whilst ignoring ‘API’ or database testing
There may still currently be space for a separate functional and performance tester but I honestly don’t see that being the case in a few shorts years, either way, the demand for testers with a full array of testing skills is clearly on the rise. So as well as providing immediate benefits, I feel it will give testers a way to prepare themselves for what’s to come.
So what does it take to become a full-stack QA? How proficient do you need to be at programming? What about your manual testing skills?
it doesn’t require a considerable amount to get by, but on the flip side, in order to stand out, it can feel like a bottomless pit. It can often feel like you need to be an expert at everything. While this post will look to provide a learning roadmap, in order to try and make the process more manageable I have listed the most critical skills starting at the top whilst also trying to provide some context as to the level required.
This post will not be focusing on any specific tools, I hope to be able to link to an article with tools soon..
A Foundation Of Testing Concepts
A full-stack QA will be expected to do more than just compose automated test scrips. Designing effective tests at the right level will always be the foundation of any good effective testing effort. Fluency in the foundations will give any tester an excellent starting point, which can then be built upon to create better test plans and frameworks.
A good place to start is the ISTQB foundation as well as the Agile extension. There is a lot to be learned just by studying for the material. Experience is also crucial to developing these skills. Testing foundations can be a vast concept, so I feel it acceptable to include things such as communication, collaboration, root cause analysis, and bug creating/tracking. These are all crucial foundational skills if one wants to be a good all-around tester.
A full-stack QA will not stop at just finding bugs, they will investigate further and attempt the narrow down the issue providing as much information as they can to the rest of the team
API’s are used everywhere and in everything, specifically, Rest APIs. Understanding the various calls that can be made as well as the possible responses will be crucial in our ability to test thoroughly. A web application will very often make use of API calls when making requests, so having the knowledge to isolate a request can be critical when testing. Being confident with JSON and how to traverse a JSON object is just as important in helping to understand and debug API calls.
Although I said I wouldn’t mention any tools, it’s worth mentioning Postman here which has become the defacto API testing tool, so I’d say it’s worth getting comfortable with Postman.
A Programming Language
A full-stack tester will be required to write automated tests so becoming confident with a programming language is crucial. I would recommend starting with any one of the most popular languages from Java to Python and get familiar with the basics. Once you are able to write a few very basic applications, turn your attention to test frameworks. In my experience, I have found that learning the popular test frameworks such as Selenium and Rest Assured were great introductions to the programming languages themselves.
As you develop through your career as an SDET and your responsibilities increase it will become crucial to develop your programming fundamentals. Becoming comfortable with data structures, design patterns as well as consideration for cleanly written code. With the amount of learning material available regarding these topics I always try to focus my learning on the task at hand. as you progress through your journey you will be required to dip into the more complex programming concepts, similar to the developer role, trust the process and take a gradual learning approach.
By this point, you would expect to have a good understanding of the Web, API’s as well as some foundations in a programming language. The next crucial stage is the ability to automate. This is not as difficult as it may initially feel. Test frameworks have come leaps and bounds in recent times and the support for the most popular test frameworks from Selenium to Cucumber is exceptional. Learning build tools such as Maven and Gradle is also expected and for good reason, once you get comfortable using them you won’t be able to imagine life without them.
Alongside automation test frameworks, one would be expected to be confident with supporting frameworks and tools such as TestNg, Junit and even Bash scripting.
Learning the basics is crucial, luckily, the basics can be learnt reasonably quickly. You will mostly be using GIT to PULL, PUSH and MERGE code. There are numerous more advanced commands that will no doubt make your life easier but they can be learnt over time or when required. I’d recommend creating a free GitHub account and practice with your own projects.
Data is at the forefront of everything that we do in software. As a tester, we will most likely be dealing with relational databases on a daily basis. Proficient use of SQL will help us in many numbers of ways, from test design to execution to reporting. SQL only has a couple of key commands that you need to get familiar with in order to get the most out of it.
I imagine I’ll have to revisit this article in the near future and upgrade this to Crucial. Being at least vaguely familiar with cloud service providers such as AWS and Azure is becoming more and more relevant as each day passes and more and more applications are either being shifted or built from the ground up on the cloud. Being familiar with the general foundations of software architecture is key as it will allow you to quickly understand what problems the cloud providers are trying to solve, which can then make the transition a lot smoother.
Use of the Command Line
At the core of every system, is the command line. The ability to confidently navigate an operating system using the command line will help you to have greater control when testing a system. The moment you get a little confident with any CLI, it will open a whole new world of control. Getting comfortable with the command line can also be of great benefit when working with test automation, test runs can be specified and altered by passing in commands
Learning the basics of the CLI can be done in a single sitting. Like most technical skills, practice over time will ultimately increase your confidence. The key thing here is to not be intimidated by it and slowly introduce its use into your everyday tasks.
So to wrap it up…
The idea of the full-stack QA has clearly been borrowed from the term full-stack developer but I’m not entirely sure it can be used in the same context. In the developer role, being full-stack can be more of a career choice, and it’s totally acceptable and in most cases more common to focus on an area such as front or back end. In the QA role, I’m not convinced one can carve out a role purely as an API tester, although those who focus only on manual testing are about, it’s a lot less common.
The role of the tester has, and will, continue to evolve, with or without officially recognised roles types of titles. As you develop in your career as a modern QA, it is becoming harder to avoid the necessity to skill up, specifically in the areas mentioned above.