Home > Services > Quality Assurance > Testing Capabilities
A typical testing project, performed by PSA, includes the following activities:
  • Test plan creation
  • Test cases definition
  • Test cases execution
  • Test result analysis
  • Bug fixing
  • Test reports creation
PSA's strong professional team uses a wide range of tests to ensure the product is the highest quality. Our QA department is proficient in conducting different testing types, the majority of which is described below.
Functional Testing
Functional testing is a black-box testing type aimed at validating whether or not the observed behavior of the solution meets its specifications. The approaches for functional testing are considered specification-based as the functionality can be tested from two perspectives. In requirements-based functional testing it is assumed that the requirements and the according tests are prioritized with regards to the risk criteria. On the other hand, business-process-based testing uses the knowledge about business processes and the day-to-day solution’s use to create test scenarios.
Installation Testing
Installation testing verifies the proper installation/uninstallation and updating procedures in the target environment.
Regression Testing
Regression Testing is a selective, often automated retesting of the system or the component to verify that modifications and primarily fixed bugs have not caused unintended effects, resulted in another business rule or functional violation.
Configuration Testing
Configuration testing analyzes the quality of software performance under various specified configurations in cases where software is built to serve different users and in different environments. Depending on the project’s type of configuration testing can be aimed at either identifying the optimal configuration of equipment that ensures the required level of quality among the performance characteristics, or checking the systems compatibility with the particular environment in case the migration from environment to another occurs.
Internationalization and Localization Testing
Internationalization and localization testing verifies, whether software adoption to various languages and regional differences occurs properly.
Performance Testing
Performance testing is specifically aimed at verifying that the software meets the specified capacity, response time, and other performance criteria identified in the specifications.
Load/Stress Testing
Load/Stress testing represents the non-functional testing type aimed at determining the maximum operating capacity of the application and identifying the system’s behavior under both peak and normal conditions. Stress testing is targeted at verifying the stability of the system, and involves testing beyond normal operational capacity, often to a breaking point, in order to observe and analyze the outputs.
Reliability Testing
Reliability Testing is a verification of the probability of failure-free software operation for an identified time period in a specified environment.
Security Testing
Security testing is targeted at defining that software operates at a level of security consistent with the potential harm that could result from the loss, inaccuracy, alteration, unavailability, or misuse of the data and resources that software or system uses, controls, and protects. It determines whether data is stored and protected properly and the application itself is not vulnerable to hackers’ attacks.
Recovery Testing
Recovery testing identifies the ability of the system to recover after any type of crash or failure and implications of that recovery process. It is basically represented as a controlled and forced failure of the system with the further analysis of the speed and conditions of its recovery process.
Usability Testing
Usability testing evaluates how easy it is for end-users to learn the applications and the level of comfortability of its use, including user documentation; how effectively the software functions in supporting user tasks; and how it will recover in case of user errors.
Code Coverage
Code coverage describes the degree to which the source code of a program has been tested in order to make sure that enough testing was conducted and to maintain the quality of tests over the lifecycle. It is considered to be a form of white box testing, since it indirectly inspects the code.
Profiling is an investigation of a program's behavior using information gathered as the program executes. The main objective of this analysis is to determine which sections of a program to optimize: to increase its overall speed, decrease its memory requirements or both, etc.