Quality Assurance is essential for any software product. By performing QA tests, a development company can be sure that the product corresponds to the requirements, performs as intended, and is secured from the possible threats.
Everyone understands the importance of QA - but it often happens that clients do not really know what steps the process involves and how exactly a QA team manages it. To clarify the issue, we spoke to the SoftTeco’s Head of QA and asked him the most common questions from the clients about the intricacies of Quality Assurance.
How can I be sure that you will properly test my product?
This is a really good question. The thing is, many QA teams pay too much attention to technical aspects of a product and forget about its intended business value and purpose. As a result, they may neglect the features that are really important to the product in terms of business value.
A good QA team will always keep a close focus on the clients’ needs and ensure that all projects are very customer-centric. It is important to thoroughly analyze the mindset of both the clients and the potential customers and therefore, ensure that the software product brings the intended value by creating relevant test cases. As well, it is an absolute must to always consider all the platforms and devices that the product is supposed to work on.
And obviously, there are certain industry standards to adhere to. Make sure that the team knows and adheres to them as this will serve as a guarantee of quality.
What is your experience in QA and what kind of responsibilities did you have?
An obvious answer would be: the more experience, the better!
If a company has extensive experience in QA and has worked with different projects, this indicates a good level of knowledge and skills. However, it is also important to understand what kind of projects the team worked with in the past. A QA team may have excellent experience with the native applications but may lack experience in cross-platform ones. So you will need to find a company that has worked with the projects that are similar to yours and ask about the QA process.
As for the responsibilities, the most common tasks that a QA team works with include:
- Gathering of the requirements for the project
- Creation of a test strategy and business scenarios
- Creation of test cases and their assignment to different scenarios
- Choice and application of relevant test design techniques’
- Creation of the environment and test matrices
These are the general requirements for a QA team that must be carried out to ensure the testing process goes smoothly and does not miss anything.
When do you perform testing: during or after the development process?
This will depend on what kind of development methodology you choose: the waterfall or the agile (or something else).
The waterfall approach is a more “traditional” one where testing is performed after completing a certain development phase. This is a rather linear process with clearly outlines phases, a strict order of implementation, and well-defined documentation.
The agile methodology, on the contrary, is much more flexible and allows to always “roll back” once the issue is detected. The development process is broken down into small iterations and it’s up to the client and the project manager to prioritize them.
Therefore, there are two options: either testing is performed after the development process is completed (the waterfall) or during it (the agile approach).
Judging by our experience, we recommend the waterfall method for large and complex projects that need a thorough organization. Agile, on the other hand, grants you much more flexibility and is more suitable for smaller and middle-sized projects.
How exactly do you test software products?
Some of the responsibilities mentioned above are the stages of software testing. Let’s see the process in more detail.
Gathering and analysis of requirements
In order to ensure that your software functions as intended, the QA team will need to gather functional and non-functional requirements for the product. As well, the team will need to analyze them to make sure that every requirement is clear and can be properly tested.
Creation of a test plan
A test plan is a document that lists down all the steps that the QA team is going to take, testing deliverables and scope of work, testing environment, and main objectives. The purpose of the test plan is to guide the QA team through the process in an organized and planned manner to ensure nothing is missed.
Creation of test cases
A test case defines how a test will be executed. A test case usually describes the inputs, test execution conditions, testing process, and the results that are expected. So basically, test cases are the steps that need to be taken in order to perform the testing of a piece of software. With the help of detailed test cases, QA engineers ensure that everything is tested as planned.
Retesting the fixed bugs
After the test cases are created and executed, the QA team will once again test the system to ensure that it now functions correctly. As well, the team usually performs regression testing to ensure that fixed bugs did not cause any new bugs to appear.
What test design techniques do you know?
This is a really broad question to ask so I suspect that if a client asks such a question, they want to make sure that your team is aware of different testing methods and their use cases.
A test design technique is a process of determining testing conditions, test cases, test data. I would say the most popular and common types of test design techniques are:
- Equivalence partitioning
- Use case testing
- Decision table testing
- State transition diagrams
- Statement coverage
- Condition coverage
- Decision coverage
- Pairwise testing
- Domain Analysis Testing
- Boundary Value Testing
It’s not enough though to know these techniques - one has to understand how to choose the right technique to use. The choice will depend on the type of application, requirements and objectives, the overall knowledge and skill level of the team.
How do you ensure product security and quality?
Again, this is a really broad question but there are some things that can help you make the right decision.
If we talk about an outsourcing development company, I would recommend looking at certifications such as ISO. The ISO 9001 standard is the most common certification among software development companies and covers such aspects as leadership and planning, the competence of the employees, operation, and performance evaluation. You can read more here.
As well, there is ISO 29119 standard that covers software testing only. The main idea behind this standard is that testing is your first step in risk mitigation and hence one needs to follow thorough testing procedures to ensure the quality of software products.
Apart from the ISO standards, you can also look at the way a company organizes its work and communication with clients. If all the processes are well-organized and the communication is transparent and prompt, these are the signs of an experienced and reliable company.