Quality
Assurance

Testing process

is an essential part during the whole cycle of software development in our company. For each project, depending on its complexity and requirements is created an individual testing strategy, it allows to release a product of the highest quality while saving time and resources for its development.

Depending on the kind of the developing project, we apply the following testing types:

..................

General:

Testing of documentation - is used here at an early stage of software development, verifying: completeness, correctness, consistency, feasibility, verifiability, prioritization, necessity, etc.

Functional testing - checking the implementation of the functional application content for compliance and generally accepted standards.

UI testing - checking in what manner the various user interface elements (toolbars, menus, images, dialogues, input fields, list boxes, buttons, etc.), react to the actions of user.

Usability testing - checking usability, the detection of defects in the navigation and interface, as well as needless or insufficient information content.

Stress testing - checking of stability and fault tolerance of the system under normal operating conditions and peak loads for a long time. Use such tool as Apache JMeter

Testing of localization - in cases when the project provides multilingualism, it is important to check that correct translations are available for all languages.

Regression testing - checking that an improved system works as it follows: implemented improvements do not bring errors to the adjacent functionality and bug fixes haven't led to the appearance of new one.

Security testing - checking the security of web applications or web site. This test is aimed to diagnose the ways of hacking the system, security assessment of the web application or website, as well as risk analysis with an approach to the protection from hackers, the access to confidential data.

API testing - testing of back-end services (REST / SOAP), checking of server requests and checking the responses received on predetermined criteria.

for web projects:

Cross-browser and cross-platform testing - an identification of defects and differences in system behavior when the user interacts with the product in various operating systems, browsers and on different devices. As an auxiliary tool BrowserStack service is used.

Responsive testing - checking UI project on screens of different devices both desktop and mobile (mobile phones, tablets) with different resolutions and diagonals. Checking User Experience points on PageSpeed Insights.

Code quality checking (Code quality) - checking the validity and conformity of W3C standards, HTML and CSS validation, searching for broken links.

"Client optimization" checking (Performance optimization) - a testing process, where the page download speed is being verified and also the optimization of CSS and JS, the optimization of images, the presence of caching of static content, use of CDN, etc. For this kind of testing the tools are used: GTMetrix, Google Page Speed and others

For mobile applications:

Besides the common types of testing, following peculiarities are taken into account in addition to mobile platforms:

  • Operations with memory, control of memory leaks
  • The intensity of energy consumption, should not drain a battery
  • Use of disk space, stability in condition of limited space on the disk, registration, work with memory cards
  • Support of different screen resolutions, portrait and landscape modes
  • Use of optimal Internet connection: Active Sync, USB, GPRS, Wi-Fi, work under unstable connection
  • Application resistance to the incoming/outgoing calls, sending and receiving SMS/MMS
  • A correct installation / programs` remove out of the phone memory and memory card
  • A proper localization
  • A stable work in stressful conditions, crash recovery

Test automation:

For more effective implementation of testing tasks it is advisable to use a test automation in some types of testing, it significantly reduces the time for bugs` identification and manual labor. With the help of tools likeĀ Selenium WebDriver, Selenide and TestNG we can automate a work of different browsers (Chrome, Safari, Firefox, Opera, Edge) on various platforms (Windows, Linux, Mac OS, Android, iOS) and devices (desktop, mobile devices and tablets) which gives us the opportunity to conduct such kinds of testing in automatic mode:

  • Functional testing
  • UI testing
  • Cross-browser and cross-platform testing - an automated check of the testing project that it works equally well on different platforms and in different browsers
  • Regression testing - automatically reuse of already existing test scripts to test working efficiency of earlier tested functional

For the test automation of mobile applications, we use a tool like Appium in conjunction with Selenium WebDriver, it allows to run automated tests on platforms such as Android and iOS, as on "live" devices as well as on various emulators, you can automate both native apps and hybrids.

For time-saving of the implementation of automated tests, we use a tool like Selenium Grid, it allows to parallelize tests running and to run the same test in several browsers at a time on one or more local and/or remote machines or mobile devices.

In the end, tools like Allure Report and Jenkins CI allow us to get a clear picture of all the automated test results - what tests were successful and what were not. With the help of Jenkins, we implement a continuous integration system where our tests are run on an earlier specified schedule or scenario, you can configure tests run directly on a centralized server or on remote machines or mobile devices, and the results of the tests can be received by various convenient ways.