We listen attentively to our client to understand what is important for them, what is crucial, and what is secondary. Understanding the goals, we can offer different solutions in terms of functionality and price.
t is not always clear what is the optimal solution to the problem. There are some problems that are not clear at all how to solve and those require the research phase to determine:
Usually, this is done before the start of a complex technology project to eliminate risks.
There are different projects and they demand completely different approaches:
Usually, we use one of the agile methodologies, which we adapt to the specifics of working with a particular client. Almost always the process of working on a project is divided into iterations (sprints), each iteration lasts 2-3 weeks.
The client and the team set objectives for each iteration and plan a certain set of tasks. The results of the iteration are delivered to the client as a pre-release version of the product the client can work with.
This approach allows the client to be in constant contact with the team, track progress, and correct the result towards the direction they need.
Our QA-engineers create checklists, which are the lists of all the cases to be checked.
The testing may be manual or automated. The choice of the approach depends on the price and the following parameters:
There are some special types of tests, when we test the product on different software and hardware configurations, under different types of load, run different scenarios of work by a certain number of simultaneous users.
With a certain level of security requirements, we perform automated penetration testing for every new release.
Usually, we solve non-critical issues that arise in the systems we create within 1-2 days. In case of a critical problem, we can react immediately, for example, in case of a service failure that affects a large number of users.
However, for such services, we usually set up systems for monitoring various environment parameters and automatic recovery in case of failure.