Home > Services > Quality Assurance
Quality Assurance
Since company foundation PSA management has been working on establishing and improving processes inside the organization and applying best practices to regular development and testing activities. Reviewing and enhancing of internal processes is a strong side of organization which improves the quality of projects deliverables.
 
Software Testing (Quality Control) is another area of quality improvement, which plays one of the key roles in Software Development lifecycle. The process of testing takes place at various lifecycle stages and ensures delivering a quality output as a result of each stage.
 
We offer our clients both Quality Assurance and Quality Control services, which can be a part of a development project or provided separately for an existing product/system/software or the one being developed by another party.
 
Software quality improvement process can be basically divided in two areas:
  • Quality Assurance which is checking HOW Software is created
  • Quality Control which is verifying WHAT has been created
QA Projects
PSA has experience in performing pure QA projects the main objective of which is to measure the quality of the product and improve it to the level acceptable for the end users. PSA has also worked on defining and developing automated frameworks for hardware products testing and exercising the product using the test tool developed.
A general QA project includes the following activities:
  • Test Plan creation
  • Test Cases definition
  • Test Cases execution
  • Test Results analysis
  • Bug Fixing
  • Bug Verification
  • Test Reports creation
List of QA projects performed 
Testing Types
PSA has a strong team of QA professional who have wide experience in the following activities:

Functional testing – is aimed at validating whether or not the observed behavior of the tested software meets its specifications.
Installation Testing – verifies the installation procedures and the software upon installation in the target environment.
Regression Testing – is a selective retesting of the system or the component to verify that modifications have not caused unintended effects; regression test scenarios are often automated.
Tools: Custom scripts, SilkTest, Mercury WinRunner, Visual Team Studio, Rational Robot, XDETester.
Configuration testing – analyzes the software under the various specified configurations in cases where software is built to serve different users and in different environments.
Localization and Internationalization Testing – verifies software adoption to various languages and regional differences.
Load / Stress Testing - is the process of putting demand on a system and measuring its response and is also used to determine the system stability. Stress testing involves testing beyond normal operational capacity, often to a breaking point, in order to observe the results.
Reliability Testing – is a verification of the probability of failure-free software operation for a specified period of time in a specified environment.
Security testing - verifies that software operates at a level of security that is 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.
Performance testing - is specifically aimed at verifying that the software meets the specified capacity, response time, and other performance requirements.
Recovery Testing – verifies the ability of the system to recover after the failure and implications of that recovery process.
Usability testing - this process evaluates how easy it is for end-users to use and learn the software, including user documentation; how effectively the software functions in supporting user tasks; and, finally, its ability to recover from user errors.
Code coverage - describes the degree to which the source code of a program has been tested. It is a form of testing that inspects the code directly and is therefore a form of white box testing.
Profiling - investigation of a program's behavior using information gathered as the program executes. The usual purpose of this analysis is to determine which sections of a program to optimize - to increase its overall speed, decrease its memory requirement or sometimes both.
Tools: DevPartner, Rational Quantify, AQTime.
Levels of Testing
At PSA Software testing is started early on the project and is performed on the different levels along the development processes. The objective of testing is to evaluate from a single module to a group of such modules and then to a whole system.

Unit Testing
Unit testing is usually done for each particular module of the software to ensure its validity and internal logic. This type of testing is usually done by developers who code test cases for each scenario of the module and verify the output result is correct. Unit Testing is an essential part of XP and Agile development lifecycles, but we at PSA successfully apply it to other lifecycle models and consider Unit Testing a powerful tool for early mistakes diagnostics.
Tools: CppUnit, NUnit, JUnit, and Visual Team Studio.
Integration Testing
Unit testing does not cover the aspects of how the system would behave or what error would be reported when modules are integrated. This is done on the level of integration testing, which verifies the interaction between software components.
System Testing
System testing is applied to a completely integrated system to verify that it meets its requirements
System testing is concerned with the behavior of a whole system and is usually considered appropriate for comparing the system to the non-functional system requirements, such as security, speed, accuracy, and reliability. External interfaces to other applications, utilities, hardware devices, or the operating environment are also evaluated at this level.
Test Tracking Tool
For tracking test cases, test suits, test cycles and defects PSA uses TestLog tool, we can also adopt utilization of any other tracking software based on the customer's request.
TestLog is an integrated management environment for creation and management of test cases and entire test plan. It offers a structured approach to the testing process yet remains versatile enough to fit into any existing methodology and provides extended reporting capabilities. TestLog's customizable reports and charts help to visualize project progress, and measure productivity and quality.