Software Testing
Testing reveals the possible functional and technical defects affecting your product. Software testing provides information about solution's functionality and whether its quality meets all expected requirements and specifications. The result of the testing process is a report of all identified issues and the level of their severity.
We have experience in testing mission critical, high-performance systems as well as testing various web solutions from different sectors. Testing of trading platforms includes both manual and automatic tests during the entire product life cycle. The stress test simulation of users, quotes and trades, regression tests and integration tests play here the most important role. In the area of web solutions, we have experience in E2E (End-to-End) automation testing including cross-browser and cross-platform tests, security penetration tests, and automatic regression tests with custom-made regression tools.
Delivering high quality products in xitee is supported by continuous test integration (unit test, E2E test, integration test, regression test) & automated inspection of code quality by SonarQube. Our team consists of Czech, English & German speaking testers and consultants with vast experience of testing in various projects.
xitee also provides test and QA consulting & test management services. Test consulting helps to identify transformation initiatives to improve the organizational test processes leveraging the test best practices. The test management combines project and risk-management enhanced by the best practice test methodology.
Functional testing
A functional testing consists of tests evaluating whether the functions of the solution meet the requirements. These requirements can be described for example as part of business requirements specifications, user stories, use cases, or functional specifications. The functions of the solution represent “what” it should do.
The functional testing is a broader term including specific types of testing such as manual testing, cross-browser testing and real device testing.
Manual testing is executed by experienced tester using the standardized testing techniques as boundary value analysis or state transition. This approach can assure the software functionality correctness in every situation, also in edge cases that might not even be mentioned in the client's requirements. The tester provides a valuable feedback regarding the user experience and the user interface and usability.
Cross-browser testing verifies whether the solution works across different browsers as expected/wished. It is always beneficial to know what browser your users prefer. And it is always the best to start testing together with the start of the development. We always automate this process with the latest technology and tools available on the market
Real device testing - in some cases, testing on emulators and simulators is not enough. Performance and functional tests behave differently on real devices since the emulators are simply a virtual device. The functionality and stability of the software on various devices can be fully guaranteed only by a test executed on the real devices with various hardware and software. Here we have experience with browser stack which has 200 real iOS and Android devices and hundreds of iOS and Android emulators with different OS versions.
Test automation
A test automation runs many test cases consistently and repeatedly on different versions of the tested system and/or environments. It is an important part of the agile development. It helps to quickly identify new or recurring defects in already tested areas of the solution.
One or more of the following activities can be automated: setup of a test environment and preconditions, a test cases execution, a comparison of actual outcomes with predicted outcomes, a test status reporting. Each of these activities takes a significant amount of time when it is done manually and is prone to a human error, especially when repeating the same or similar actions many times.
An automatic E2E (End to End) testing is a process of executing a test scenario against a real browser. The entire product is tested to ensure that all pieces work together properly.
A unit test is used to ensure that the selection (a unit) of the application meets its design and behavior as intended. A unit testing increases confidence in changing/maintaining the code. A reasonable percentage (agreed with customer) of the code should be always covered by unit tests.
Security/penetration testing
There is usually at least some part of the system exposed to the public e.g., a web server. It is necessary to assure that only authorized users can operate the system and that security precautions will not allow an unauthorized person to access any of the solution's elements. The system security is evaluated by performing a simulated attack on the computer system. This test can identify vulnerabilities and impact of a potential security breach. Typical threats are a system malfunction or overload caused by an excessive usage of components available from the public network (API, web forms, ...), a sensitive and personal data leakage or an unauthorized access to the restricted application functionality. xitee uses Kali Linux distribution with OWASP ZAP and OpenVAS security scanners to assure that the system is not an easy target for attackers.
Performance testing
Every system has an expected load stated by various metrics, such as number of simultaneously connected users, number of transactions per second or response times. The ability of handling of expected, increased or peak load can be tested only by performance tests. The tests can be focused on execution of mission-critical operations where every millisecond counts and the performance of these operations is crucial for project success.
The performance test shows the system behavior and stability under the expected and increased load, and the usage of hardware resources is monitored. Often this type of test is performed by using an automated test tool to simulate a large number of users. An execution of such test in a production-like environment is essentially a basis for further solution performance optimization, a hardware setup evaluation and a possible failover scenario design and implementation.
Goals of performance testing:
- Measure the response time & the resource usage
- Define the possible breakpoints & the maximum load
- Gather the data to provide optimization recommendations
- Verify, if the service level requirements are met
- Check the system reliability
- Identify the possible bottlenecks in the system
QA consulting & test management
There are various quality assurance methodologies and tools. The ones that are used in the particular software development project might not be always optimal. An evaluation of used processes and tools can therefore reveal weak points in the software development, propose actions to mitigate risk and improve quality assurance efficiency. Also, a setup of appropriate processes in a new project facilitates maintaining of a high quality of the product and can save the effort in later stages of the project – usually in the acceptance testing and the go live
Test consulting goals:
- An assessment of client’s testing maturity against the best practices
- Identification of recommended initiatives required to achieve the desired state
- A detailed road map to support implementation of the transformation initiatives
An initial test assessment provides a quick insight, which can be used as a basis to goal-driven consulting and transformational initiatives.
The test management combines a project- and risk-management enhanced by the best practice test methodology. This is a key success factor to
- structure and secure the test process
- optimize productivity and efficiency of test engagements
- make sure that test is aligned to business requirements
Our certified test management team governs the full test lifecycle. This includes from a test planning and controlling of operational test activities till an organized test closing.