Full Stack QA Testing


The modern age of software testing has a new name and it goes by Full Stack QA.  The term Full Stack is taken from Full Stack Developer which is a programmer who knows all layers of the development process like network environments, business needs, data modeling, API's and user interfaces/experiences.  In the case of QA, full stack can be seen as a hybrid of traditional testing and development. To be a full stack tester one will have to become familiar with the full spectrum of the specific business they work in, at least on a competent level. Knowing the product under test fully is the earliest aspect of being a full stack tester.  What the product features are, who are the customers and how they use it.   Below I will detail the areas that full stack testing touch upon.

Full stack starts right at the beginning with the project planning stage.  Testers have unique perspectives and can contribute to the planning process by asking customer focused questions which might not otherwise be asked.  Testers can also start taking testing notes down at this stage, like possible usage scenarios, which will inevitably lead to more questions to be asked.

Full stack continues on with testers spending time with the devs while they write the initial code. This is helpful for multiple reasons. The tester gets exposed to programming which is never a bad thing.  More importantly, they can witness the dev write unit tests.  This is a chance for the tester to contribute at an early level by understanding what is already being tested and can even suggest other tests that might be appropriate at that time.

Full stack also means being familiar with REST clients and being able to have some knowledge of how API's work and how they are used for testing. This is becoming an extremely important part of testing currently. API tests provide quick feedback through efficient and direct usage of the API.  REST clients are cheap and easy to use.  A tool like Postman for example, is free and the basics can be learned in less than a day. Being able to query a SQL database should also be put in here as well. 

Full stack also is about employing the traditional manual testing techniques that a QA tester should already be familiar with.  However, instead of focusing on run-of-the-mill step by step testing they should now be focusing on risk assessment, security testing, error guessing, usability testing and performance testing.  All of those listed could fall under the exploratory testing umbrella but it helps to be able to separate out and be aware of those concepts.

To go with the manual testing piece, testers should be able to utilize cloud technology to be able to accurately test how the site will perform once it hits a production environment with the loads it will need to handle.  Performance Testing is becoming more important as the software world progresses.  In the past, companies would need to use onsite hardware which can be costly to spin up and maintain with no guarantee that it will work right when you need it to.  Cloud testing alleviates that burden by being offsite and available only when you need it.  Testers should leverage cloud testing which can be used to meet production level testing needs like load testing, scalability and accessibility, where you can really match your test environment to real-world load scenarios.

Lastly, full stack QA testers should at least be dipping their toes into the pool of being able to contribute to the more conventional automated test writing practices.  This does require some programming knowledge, however automation tools like Selenium are a good introduction into the programming world as a solid framework does not have to be filled with complicated classes and methods.  There are also new Codeless Automation choices popping up which is also a good introduction.

Overall, modern day testing is about creating tight feedback loops so issues can be dealt with as soon as possible in the SDLC.  It starts with testers being in on the ground floor with feature requirements development, sitting with developers, writing API tests, traditional manual testing and leveraging cloud technology. QA is the connective tissue between the code world and the real world where the software will be used.  They now need to be part of the entire process.

Comments