We have always heard the term full-stack developer but what about someone from QA background? Do we also have something like Full Stack QA Engineer? the answer is Yes! So, in this article let’s understand how you can become one and enhance your skills to be called a Full Stack QA engineer.
Read: Simple Steps to Become Full Stack Developer
What does a QA Engineer really do?
Let’s understand with an example. A customer wants to have an awesome e-commerce website where he/she can sell handbags. Now to begin with the development there are so many questions we actually need to get an answer to develop this website. Of course, the project manager will take care of business-related queries like demographics, languages, filters we need, etc..
As a QA Engineer, you need to be more technical and understand the underlying problems the development team might face while developing it. A few of the questions could be – Do we need to write APIs? customer needs a mobile responsive or a mobile-based website when users open the website from mobile etc..
This doesn’t end here, QA engineers are also heavily involved in documentation creation and making users stories out of the complete project scope.
Last but the most important of all of this is creating sensible test scenarios and then writing dozens of test cases out of it. And we all know project deadlines, features and scope always keep changing as we progress further with the development.
Again, QA engineers are the ones who on the bottom level take care of all new changes and make sure they are correctly implemented as per the expectation of the customer.
Once we are almost there and have finally started working on the project, QA engineers start writing test cases and start planning how much we can automate the testing efforts. It doesn’t matter if you’re a Manual QA, Automation, or even a Full Stack QA engineer. I think it is good to understand the SDLC and keep active participation in the process.
How To Become a Full Stack QA Engineer?
1. Learn Agile Methodology
This could be a starting point for your journey. We all know that software development and its management have evolved a lot and it will keep on evolving. The widest practice that is followed is Agile. Start here, learn what is Agile, you don’t have to master everything just understand how teams work when they follow Agile methodology.
There are several concepts in Agile –
Kanban – This gives an overview of team capabilities to deliver any upcoming feature or update in the software. This board is mostly used by project managers to understand and track the progress in the team. As a QA engineer, it’s also beneficial that you know about this and how features are ranked and prioritized.
Scrum – This is a board where all the user stories are listed. Now make sure you understand what is a backlog, how user stories are made, time estimation is given, and what is the workflow of user stories in your organization. Another important concept to learn in Scrum is sprints, sprints are nothing but a small iteration of user stories been finished as per the sprint cycle.
Retrospective – I am not sure if all the organizations follow this but retrospective is important to know as it gives insights on how the sprints are going, what went well, what bad happened, new ideas, and understanding the impediments.
Daily Stand up – As the name suggests – it’s daily and done while standing. These are short meetings done by the team working in a sprint every day just coming together standing at one place and everyone telling what they did/worked on yesterday and what they gonna work today.
2. Master Manual Testing Concepts
Once you have decided that Software Testing is the one you gonna do, start learning from the basics. Right from what is software testing and where does it fit in the software development life cycle. There are millions of free resources available on the internet to learn about the basics of software testing.
Thoroughly understand – testing lifecycle, types of testing, defect cycle, and one or two bug management software like TestLink. Now you are a Manual QA Engineer but not Full Stack QA engineer. So, let’s continue.
If you want to get a certification that some times are very beneficial from an interview perspective, I would suggest do a foundation level ISTQB certification. This doesn’t guarantee any job or salary increments but would help you understand basic concepts and is worldwide recognized.
Read: Why Software Testing Is A Good Career Option?
3. Be Good at Any One Programming Language
This is a very widely discussed question – is it necessary for testers to know how to program? my answer – yes. why not? I think knowing a programming language will definitely help you in the journey of Full Stack QA engineer. Even if you want to manual testing coding knowledge will help you understand the software better.
For example, if you are testing some input field on front-end which should allow only numeric and it accepts characters as well. You can just inspect an element and check what the HTML tag used there or even check the database for data type allowed.
Read: UI Automation Using Cypress.
Start with Selenium. It is by far the best and widely used test framework available out there with multiple languages support. Pick up any assertion library like Jest or ChaiJS. Recently, I worked on MochaJS which is also a good test framework with lots of features like async testing, test coverage reports, etc.. If you’re heavily involved in writing UI tests, I would highly recommend learning basics of HTML & CSS.
Cheery on the cake would like knowing Database and API testing. To start with this, learn the basics of SQL. This is a very start forward language and you can always quickly Google for some complex queries.
For API testing, once you start knowing any assertion library and test framework mentioned above you can easily work with it. You can read my article which I wrote – API Testing Using Java.
Read: How to write simple Restful API using NodeJS
4. Way Forward – DevOps
Knowing DevOps would be a great addition to your skill sets. I will not go deep into what is dev-ops and stuff but here is a quick overview of what you can learn. Start with learning version source control system like Git. Then go for learning Continuous Integration tools like Jenkins.
Knowing Jenkins will also help you in Continuous Deployment practice as well. Just understand how the Pipelines are written, how to make tasks and jobs for it, and how to maintain them. It will be very beneficial to know any cloud provider like AWS or GCP.
I know there is a lot of stuff to learn and this could be very overwhelming, but hey! start small and keep learning. If you’re into IT Industry, you must have probably experienced, this is a long learning journey and we should enjoy it. Please let me know if you have any questions and anything I can help you with. Good Luck!