In the world of software “full-stack developer” is well known term – a developer works at various layers of applications & performs disparate technical tasks. Designing and developing back-end, front-end, build & deployment, DevOps and monitoring are few to name
This kind of shift equally required by QA engineers as well.
Gone are those days, where we had segregations like functional testers, automation testers, performance testers, mobile testing specialist etc.. The new and fast world needs QA engineers who expand their horizons and play multiple roles for the success of the software.
Who can be called as a full-stack qa engineer ?
Skills and capabilities needed to call one as a full-stack qa engineer can not not be quantified and measured. It is contextual.
Full-Stack Quality engineer is one – who expands his testing horizons and develop diverse capabilities to help release product faster with acceptable quality. The one who goes beyond the usual to become more valuable engineer in the overall software development process.
A traditional QA engineer is responsible for test planning & management, identifying defects & defect lifecycle, testing the application for functionality and usability, tests to break the system, traceability metrics etc..
While these are mandatory for every QA engineer, but not sufficient for modern age software development. Below are some of the directions to expand the horizons of testing towards the full-stack qa engineer.
Expanding Testing Horizon
Tools and techniques
Testing techniques would vary based on the design and architecture of the application. With deep understanding of internal workings of the application, appropriate tools needs to be chosen. Knowledge of such tools would boost the testing speed and identify the defects at right layers. For examples – To test an application which is service oriented – Deep understanding of services and service behaviors, knowledge of HTTP, Curl, Postman, SoapUI, Swagger are essential.
Test automation is nothing but software development – The best practices of software development equally holds good here too. Choosing tools, building reusable code modules, refactoring, maintaining, extending and more
- Good hold in Programming – Developing robust test automation frameworks
- Techniques to execute tests in parallel.
- Developing stubs and mocks.
- Knowledge of Build and deployment scripts
- Knowledge of Continuous integration tools
Non Functional Testing
- Understanding of performance and load testing. Analysing the results and pinpoint the performance issues
- Resilience and disaster recovery testing
- Testing knowledge of few common security threats.
- Data migration testing in case you are testing a parallel system
Expanding Persona horizon
- Thinking in perspective of product owner and end customer. Understanding business deeper. Interacting with both upstream and downstream teams, and their role in overall scheme of things.
- Understanding the internal plumbing, subsystems, decomposed services, interaction between them, data store, environments, automated deployments and third party systems.
Thinking in perspective of strategist. Assessing the system and choosing right test stack. Aligning test strategy to suite the architecture of the application. Identifying waste in development process and improving processes for efficiency. Ideas to reduce testing cycles and provide faster feedback.
Thinking in perspective of programmer and tool expert. Building robust test automation framework and ecosystem. Aiming for that perfect test pyramid having right test mix at right layers.
Expanding Character horizon
Being self disciplined and organised creates a role model. This influences the team members too. Hence boosting efficiency of team
Challenging assumptions, encouraging feedback culture, exploring new and highlighting risks – These would bring out the uncertainties and ambiguities, thereby putting the team in path of achieving high clarity and visibility
Being passionate about what you do, how you do and aiming for perfection helps you to grow as an individual