Testing
We specialize in testing software applications, system software, programming languages, and software technologies. We verify the correctness and completeness of functionality, consistency, and compliance with specifications and standards. We perform integration, load, stress testing, general expertise, security assessments, and analysis of possible system improvements.
Our engineers use a wide range of tools — from shell scripts to Java and XML — to automate the testing process as much as possible. Automated testing includes functional, regression, modular, and unit testing. We create our own testing tools and also use existing tools such as TeamCity, Hudson, and Jenkins.
Test Suite Creation
We have extensive experience in developing test suites and have implemented the following projects:
The test suite checks the compliance of a programming language implementation with its specification. For each statement in the specification, a set of tests is written to verify that the current behavior matches the specification. Special attention is paid to edge cases and identifying areas not covered or not fully covered by the specification.
Typically, a suite consists of several thousand relatively small tests, each checking a single statement, collectively covering both the programming language specification and its API.
The system is designed for convenience and standardization of test result processing. It stores test results in a unified database, performs analysis based on them, and generates reports and performance graphs for tested products. The system is easily configurable and extendable — new products, report formats, test suites, and metrics can be added.
Simplify is actively used in several company projects, and the test base is gradually expanding.
Performance Analysis and Stress Testing
This work is carried out continuously in various projects. Identifying bottlenecks and optimizing them is our forte. For example, in the Elbrus project, performance analysis of end-user Java applications is regularly conducted, resulting in recommendations for optimizing application code for this domestic platform.
A web application stress testing system has been implemented, which, for example, was used for load testing the PREMIS asset management system developed by NIPS JSC.
Java Program Security Analyzer
As an auxiliary tool, a pilot version of the JAZZ Java program security analyzer was implemented. It allows the generation of a coverage map of source code by test scenarios and highlights code areas that may be unsafe, allowing special attention to be paid to them. A monitoring mode for server applications was also implemented, allowing real-time tracking of the application's operation.
Testing and Maintenance of the libsunper Library
During our collaboration with Sun Microsystems, the Unipro team maintained the libsunper library — a high-performance library of mathematical functions developed by the customer for their processors. Our engineers developed a test base for linear algebra and fast Fourier transform functions, ensuring complete test coverage and accuracy verification. Additionally, a toolset was developed to automate the testing process and bug handling. This toolset also supported the distributed work of developers and testers.