Building up QA Team From Scratch - part 1
In most organizations and especially in startups, the common scenario is that they have a software app idea that solves a particular problem. They hire a number of developers and similar technical profiles to build software products and QA is usually far away from resource priorities. The reason for this is, i.e. not much funding available and short time available to develop MVP. Right after it becomes evident that the idea is successful, software organizations want to expand on the idea, hiring additional resources and here is where QA comes in. Another scenario: a well established company manages to deliver software products for a long period of time without proper QA functions being implemented. Obviously, financials are not an issue in this case. There are many companies out there that operate in this way for many reasons: no need for QA (really?), lack of motivation to scale and polish software products, less competition in the operating domain. On the other hand, again, many companies out there would like to establish a proper QA function, integrate the QA process as part of the development process and deliver high-quality products. Implementing the QA function is never too late or too early, it’s always just in time. Let’s see what is needed to start the implementation of the QA department from scratch.
QA Process
The main goal of implementing the QA process is to ensure that a software product is built right from the beginning of the process. This means that an organization needs to ensure correct requirements definitions and solid understanding in a development team of required functionalities. This is important in order to deliver what is expected to be delivered and avoid wrong implementation of the feature. The question to ask here is what exactly the QA process is? There are many possible definitions, and we will use the next one: a set of activities performed by a development team (QA including) to ensure a high-end quality product. Development teams achieve this by executing different test types and test levels. So, the first thing to implement in terms of process is to define a test strategy. The test strategy is nothing else than test levels and test type that will be executed to test the code and application as a whole. No matter if you are applying Scrum or any other methodology, you will always need a strategy that defines levels and type to be performed. As a general rule, starting the QA process includes the following key areas to be implemented:
- Testing during development/Continuous testing
- Regression and/or end to end testing
- Continuous integration and test environments
- Test automation
Team Composition
QA team composition falls under heavy tasks in establishing the QA department. The process is important, but the people involved in the process are even more critical, and it’s important to properly identify the roles and access skills of each team member (existing, if there are any, and new hires). There is no thumb rule on developer/QA ratio. How many QAs you need to hire or add to the team depends on the size of the team, complexity and team deliverables. That’s why it’s a must to include other people in the assessment process and decision process as well. Hiring people for a newly created department is not a one-man game. At the beginning, focus on hiring people with the right skills and an attitude that can make an impact and push things to the next level. Another option is to build expertise inside the organization. Obviously, this requires more effort and commitment from the people involved.
Test Tools
Choosing the appropriate test tools to meet long-term or even short-term goals is a challenging process. QA usually starts by writing manual test cases and after some time it becomes difficult to maintain, use and execute those test cases. This is a time-consuming effort, repetitive and prone to errors. That’s a strong reason to start using tools that support the QA process and development team. These tools are classified into 3 big areas: functional testing, non-functional testing and tools for test management. Having the right tools in place is a big advantage to solving issues earlier in the development process and getting rid of time-consuming tasks. Tools for functional automation will bring a new level of confidence that delivered code is well tested and ready for the next phases in the delivery process. Non-functional tools ensure that the end product can handle thousands of requests, or it’s secure enough.