Years of working on complex IT projects has allowed JazzTeam to accumulate solid technological expertise in various areas. The most interesting and non-trivial challenges we faced when providing services were the catalyst for the creation of universal solutions. As our experience shows, many IT businesses need them – and the effectiveness of each tool has proven to be practically relevant.
In this article, we would like to introduce you to JazzTeam’s IT solutions, which allow us to quickly and cost-effectively solve important issues that arise in the process of software creation and implementation.
Do you need to automate delivery and testing? Or is the topic of effective legacy code refactoring particularly relevant to you? We’ve already found the answers to your questions!
If your product has a large amount of legacy code that requires too many resources for refactoring, we are ready to provide you with an effective solution. It includes the implementation of black box testing in combination with the creation of a special wrapper, which is an add-in over the legacy backend. This combination of approaches will ensure a high quality system and solve problems associated with the impossibility of product development.
Let’s assume that we have a complex and large-scale system with legacy code, in which architectural layers are highly interconnected and there are no explicitly dedicated layers of databases and business services. In this situation, it is very difficult for developers to verify the functionality of the code even with Unit tests: they will be very complex and it will take a great deal of time to create them.
In this case we apply the concept of black box testing, during which we consider the backend part of the system as a “black box”. Black box tests allow for the checking of complex chains of system actions relying solely on the specification of requirements – regardless of software architecture features. This approach allows us to cover backend business services with simple and understandable Unit tests, which can be created even by poorly qualified developers. Tests are run as part of regular project builds and ensure stable product operation when changes are implemented.
After that, we proceed to the next stage – the creation of a wrapper. This process involves developing a wrapper over the legacy backend. More advanced and convenient technologies are used to create a wrapper – it has a thought-out logic and system layered architecture. In particular, a special routing layer that allows the sending of requests from the new backend to the old backend is developed in it.
As everything is pre-covered with automated Unit tests using black box testing in the old backend, the application will function correctly. At the same time, we maintain backward compatibility, which means that customers can directly work with the old backend through the UI part of the system. When expanding the software, the developed functionality is embedded in the new backend.
We will breathe new life into your outdated software: the system is scalable, stable, and quality control is easy and effortless. At the same time, there is no need for labor-intensive and long-term refactoring of outdated code so the team can focus on commercially important deliveries.
Companies that develop large-scale software created many years ago that is constantly evolving, including by other team members.
Our company has been providing CI/CD implementation services for more than 10 years. We have successfully implemented dozens of projects and perfectly understand the needs and requirements of product owners and teams that work with this approach. In particular, we often face the need to create a simple and understandable scheme for managing the software deployment process.
If your IT product has a non-trivial delivery scheme or a complex topology with different formats and options, we can provide you with a tool that will greatly simplify the management of this process. Our CI/CD Configuration Builder is the solution to configuring the deployment of complex software that will become part of your CI/CD process.
Our CI/CD Configuration Builder is an application that creates a configuration file and, using scripts, automatically executes certain commands on different servers. The system components are written in Python and the graphical interface is created in JQuery.
Let’s look at how this solution works in more detail:
The user enters the app and sees a menu that contains all the possible options and settings for the deployment. Then they select the necessary settings from the drop-down lists or set some parameters manually. Based on the rules selected in the menu, the application generates a configuration YAML file. It specifies the version, server, and conditions for deployment. This YAML file is read by another application component based on Ansible scripts, and the setup file is synchronized with the deployment pipeline. The rules initially specified by the user will then be automatically taken into account in the CI/CD process, which will significantly simplify the delivery of new product versions.
You can also order a CI/CD implementation service built from scratch. The interesting thing about this JazzTeam service is that we create pipelines and jobs, which form the full basis of work on your project. You can rest assured that it will not be difficult to manage this process and it will be easily understandable for your managers and product owners, even if they do not have a technical background.
We have experience implementing this solution for a complex multi-module application in the field of telecommunications.
You will receive a CI/CD process control point that will be easy to use for all project participants. Thanks to this tool, you will be able to save significantly, as well as eliminate the influence of the human factor on the process of software deployment. It can even be managed by specialists without a technical background (for example, your project managers).
Companies that develop complex, multi-module, cross-platform software.
We often face situations where the customer’s company has a small testing team. At the same time, the complexity of the product and number of automated tests increases over time (500-1000 tests), and more and more time is needed to support them. Sometimes the QA team spends more than a half of its time on this activity. In this situation, it’s very important to develop an effective framework for test automation, which will reduce the time spent on writing and supporting automated tests.
However, not every team can cope with this task at the required level in the time necessary, particularly if the specialists lack the proper experience. When designing a framework, QA engineers may not always foresee its scalability and support. Incorrect design and components that haven’t been thought out sufficiently can result in large problems in the future. Automation won’t bring about the desired result and will entail losses.
If these kinds of problems sound familiar, or you would like to avoid them happening in the future, we are ready to provide you with effective frameworks for test automation.
JazzTeam will create a framework for test automation that will meet all your requirements. We develop easy-to-use solutions with built-in reporting, video recording, screenshots, and file management. In addition, if you order our test automation services we will apply the frameworks we already created by default. In this case, you will get effective results without wasting time on developing the solution.
Our company has also created its own product for test automation – XML2Selenium. It is an extensible Java-based platform for creating and controlling automated tests. With this framework, even QA engineers without experience in programming can create UI tests. The product is integrated with JUnit and works on top of Selenium.
The main competitive advantage of our solution is the low cost of entry. Novice test automation engineers, and even QA engineers without programming skills, can create high-quality tests, which means that they are easily supported and easily modified with the DDT (Data Driven Testing) approach, so it increases test reuse.
Complex IT solutions often require checking numerous combinations of input data and final results. Creating tests for each data set can be time-consuming and costly for a quality assurance specialist.
If you need fast stabilization of a complex product with a large amount of data sets, we offer our solution based on Data Driven testing.
Data Driven Testing is an automated test architecture approach that greatly simplifies and accelerates the software quality assurance process.
Imagine we have an application that processes numerous incoming files. The difficulty in assessing the function of such an application is that in real life, incoming files can contain a large number of combinations of different data. At the same time, the application should be able to correctly process all these combinations. Testing the processing of each data combination will take too much time and effort. In this situation, the optimal solution is to use Data Driven Testing. This approach allows the creation of an algorithm that is based on comparing a set of input parameters with the reference result, while also taking into account important conditions that will become part of the input parameters for testing (test execution options).
In DDT, test data is stored separately from test cases in an external source, such as a database or Excel table, which logically simplifies tests and allows us to easily and quickly expand data sets without changing the automated test code. You can learn more in our article about the Data Driven Testing approach.
Data Driven Testing helps to improve quality and control the stability of products of any complexity. For example, it is particularly relevant in the field of telecommunications and can also be used in very complex scientific systems. In particular, our company has experience covering the core of a scientific system with tests using DDT.
Significant savings on the product testing process. Thanks to the simple management and intuitive logic of Data Driven tests, you will be able to transfer the task of increasing the data set to a manual test engineer.
Companies that develop solutions with a large amount of various incoming data (telecommunications, science, banking).
Do your specialists perform a large amount of routine activities aimed at information collection, analysis, and processing? If so, we are ready to offer a crawling solution that will significantly accelerate these processes with the help of automated simulation of human actions (Robotic process automation). This product was designed by our company from scratch – from idea to real life application. Right now it is successfully used by the JazzTeam marketing and sales department to find new business contacts, and has already proven its high efficiency.
The application is a crawler for data collection based on specified parameters from various sites. The Selenium WebDriver automation tool is used to read information. Search parameters are stored in Excel files in local or cloud storage (for example, Google Drive) and loaded from it when the app starts.
The crawler is launched on the server using Jenkins as separate builds. Each build is configured taking into account the general parameters of crawler launch and the selected parameters of data search on a certain site. After the work is completed, the crawler sends Excel files with the received data, as well as a report on the results, to users’ emails.
Of course, sites regularly update and expand their security mechanisms, which prevents the work of crawlers. However, an important feature of our solution is that we use the technology of unexpected circumstances component handling. This makes it possible to get around such restrictions without changing the logic of the entire system. If a new protection mechanism is implemented on the site, we improve or add a specific component of the application that allows us to get around this restriction while the basic principles of the system operation remain unchanged.
Our team has developed a library of custom crawler components for various sites, which allows for the creation of optimal solutions based on your interests and needs.
Here is an example of how this solution is used in our company.
The project is a platform for automating the collection and processing of data from various business portals. It supports the analysis of the relationships between account data from various sources. The developed application is used to scan and collect data from sites containing information about potential business contacts using predefined search parameters. The data source for the crawler can be any business portal/social network/site that contains contact information, for example, LinkedIn, angel.com, crunchbase, etc.
Here is an example of a crawler script. We go to angel.com and scan the list of companies with the given condition: “If a company has received investments on this site, I want to see if there is a vacancy for a Java developer in its LinkedIn profile. If there is such a vacancy, we add the contact data of this company to the database of potential customers.
Using this solution, we were able to achieve excellent results. Over the first 8 months of the crawler’s work, we managed to collect and process about 1,000 companies through the LinkedIn website alone to get more than 5.2 thousand business contacts, including from new geographical regions.
Thanks to the robotic automation of processes, which involves searching for and processing information from the Internet, you can make significant savings and reduce labor costs for marketers, sales managers, and specialists from other departments of your company.