QA- Roles Redefined
The role of QA redefined
Throughout our journey in Encoding Enhancers, we have observed some practices, aspects/qualities which in our experience form the core of testing as a skill. We as part of the QA team, serve multiple different purposes within a product's life cycle whether it being a coder, testing app from different layers, product and systems thinker, etc. Well, in this blog post we wanted to share our thoughts on what are some of the First/Basic principles in testing which every new tester should be aware of or follow in this day-to-day life.
Testing is more or less always exploratory in nature
This is probably the most important thing to grasp and at its heart, is the nature of testing. We can come up with elaborate test plans and thousands of automated scripts/ cases, but some of the best use cases and critical bugs in the app under test are normally related when the tester is capable to wear different thinking caps and explore the functionality from different surrounds. Always be inquisitive and never trust when a developer says something will "work" just fine and doesn't need to be tested 🤔
Get to know your product and its customers
As a quality worker, the common expectation for us is to wear your customers shoes and understand the journey users will take while using the product. In this day and age, Understanding how customers are using the app and collection and analysis of data to grasp what is of real value to the customer can make a real difference. We should challenge ourselves to rise above just checking functionality but instead consider the flow of E2E from a different point of view to ultimately maximize business impact.
Test prioritization
Now, this might be stating the obvious but learn to prioritize the test cases based on the context in which you are testing. We need to always have an intelligent suite of tests that could be run to get fast feedback about the health & quality of the product development before pushing stuff off to customers/Clients.
Catch more Bugs
There are always more bugs to find if you think out of the box to dig through different layers of the stack (API, integration, network, or database). Push yourself to understand how the systems you test work under the hood and the most essential areas where testing is not being done.
Understand testing Aspects
QA's ability to come up with the best use cases is mostly dependent on the amount of knowledge you have about the product. As a QA we should know what different layers of testing can be done. Figure out all different testing levels like Functional (Blackbox, Whitebox, UI, API), Unit/Component tests, Integration, Non-Functional (Security, Performance, Accessibility, Compliance, Usability) automatically enhances your chances of designing a more robust test plan.
Automate repetitive task
Well, let's admit it, no one likes to do repetitive tasks. Tests typically follow a simple pattern at its core like input, execute and assert. Hence the Obvious advice: Automate the repetitive task and let machines do the stuff they are good at. Focusing more on random testing in your app and using your ingenuity or out-of-the-box thinking is what ultimately adds great value to a product.
Don’t automate everything
Automate areas where maximum value can be derived. For instance, For example, try to cover necessary behaviors with API testing instead of having an endless cycle of failed UI testing.
Write Good documenting test cases
Writing clean code is all about readability & important to ensure you don’t leave a mess behind for the person who comes after you. As a tester, it is quite important to ensure your tests remain relevant and meaningful.
QA presence
Try to be part of the complete SDLC, you will be amazed how frequently you as a tester can seize gaps in requirements analysis and help developers deliver the right product.
Keep Coding
Learn the craft of programming and refactoring. Not only will you be able to automate workflow, but this can definitely help you to involve into a grey box test role where you can understand gaps with dev code commits. Also, the most important reason for this is. It’s way more fun… 😉