Whenever we run tests, the goals of your project are always put first. We tailor our approach to the needs of our clients
What types of testing can we use in your project?
Our QA engineers check applications using a set of software applications. This type of testing is a must for all new features and capabilities in an application.
To check applications, we use scripts. The QA team is involved as little as possible. This type of testing is used in regression tests. In about six months after the onset of a project, the amount of code becomes so massive that it’s impossible to test the application manually. That’s why automation is essential for long-term projects.
Benefits of automation tests
- They are great at handling complex logic and repetitive actions.
- They can ensure the quality and velocity of regression testing that no manual test can possibly provide.
- They are not affected by how big a QA team is and can be run swiftly and regularly.
Types of automation tests
— Unit tests. We use these to check a specific part of a system. At Surf, we let our developers write unit tests based on component tests run by the QA.
— UI tests check if an application functions in general and simulate user actions. Such tests are run before each build and release, and even though they take a lot of time, they give a chance to check an application thoroughly.
— Widget tests are only used with Flutter applications. They help emulate widgets and use them to run all the necessary tests.
— Snapshot/golden tests. Snapshot tests create a screenshot (a reference screenshot) and compare it to the screenshot made during the test.
What can we accomplish by testing?
Fewer errors occur at the start
- The earlier we find a bug, the less time and money it takes to find and fix it. That’s why our team of QA engineers joins projects as soon as we start discussing technical requirements by reviewing them for completeness, correctness, and consistency. In addition to that, they check the design to make sure it covers all states of the application and doesn’t go against the requirements.
Up to 80% less time spent on testing
- If a project is over 6 months in the making with new features added regularly, we can implement test automation. We can write either native or cross-platform automation tests for native applications, as well as native automation tests for Flutter applications.
- We can cover up to 80% of your technical requirements with automation tests. By doing so, we can save time spent testing and help you release the application twice as fast.
- We can maintain the fine quality of your application as it gets more features and capabilities while keeping the testing expenses unchanged.
Our 12 years of cross-industry experience used to your benefit
- Surf has been delivering projects for market leaders in fintech, foodtech, and e-commerce for 12 years. We have accumulated considerable cross-industry experience as well as a large number of best practices, which we employ in our projects.
Faster, improved testing thanks to our best practices
- Our QA team is highly competent, which helps them not only find an error but also get to its cause and root.
- To check our applications, we use scenario tests and checklists, which have a single common structure. Consequently, it makes the process clearer, quicker, and more refined. In addition to that, it helps us keep every crucial detail in mind.
- All features are tested as soon as they are ready. This way, it takes less time to release an application.
Your project can be carefully transferred in-house, if necessary
- As soon as the tests are over, you will get a report listing all the checks done and providing you with all the test records.
Automation testing of a banking applicationIn this banking application, we implemented automation testing along with the corresponding infrastructure, so that the client could run tests by itself.Show more
An application for a large foreign-invested bankThis application was ordered by one of the systemically important banks, and we have managed to cover 100% of its code with tests.Show more
The steps we take to test an application
- Our QA team checks the requirements for inconsistencies, completeness, and compliance with the key criteria. This way, we can spot certain errors before we even start working.
- We inspect the design: it must cover every state of the application and meet all the requirements.
- We write 2 types of tests for technical requirements.
- Component tests are designed to thoroughly check each element and logical component of a feature. These are used to check new features.
- Scenario tests — the faster ones. They are used to check a specific operation or scenario and to see if a system functions in general. This type of testing is used in regression tests.
- To see how well our tests cover specific technical requirements, we use a traceability matrix.
- At the start of a project, we always use manual testing.
- In time, we add testing automation. By doing so, we keep the testing expenses unchanged while maintaining the quality of the project.
- For every new feature, we run component tests (both manual and unit ones), and in regression testing, we employ scenario tests.
- We start with regression testing.
- To figure out which tests to use in it and which parts of the code are impacted by the changes made, we use impact reports.
- During the build, we perform a static analysis of the code with our own handcrafted tool. It identifies changes in code and the extent to which they affect an application.
- Based on this analysis, we determine which tests to run.
- Whenever we need to release or update an application, we first test its migration. To do that, we install a new version of the application over the old one. Then, we make sure that all the data is saved, all integrations are working, and the application shows no critical errors.
- We hand over the report, which shows the list of tests and corresponding results for a specific build number.
- We also hand over all the tests we have written for the project.
- In addition to that, we provide guides on how to handle and modify the project, so that the client is able to support the project in-house.