 |
 |
 |
 |
 |
Application Testing Process
CMMI® Level 4 and ISO 9001:2000 certified for quality software development processes, we maintain a dedicated, stand-alone Testing and Quality Assurance group of over 400 resources. By employing the rigorous and finer aspects of the CMM development process and combining them with the Rational Unified Process (RUP) best practices and Agile development methodologies we ensure the high quality, extensibility of the end software applications, as well as time to commercial release of the delivered products.
"We were extremely impressed with the maturity of the software engineering process implementation in the company and with the evident client-oriented organization of EPAM. They not only know "what", but also attach great importance to "how" they should do things to meet the client's requirements in the best possible way. EPAM stands out through successfully striving to involve members from all organizational levels into decision-making and by implementing the industry proven best practices throughout the project life cycle."
Kent A. Johnson SEI-Authorized SCAMPIsm Lead Appraiser TeraQuest
|
 |
IT Offshoring: It's Not Just for India Anymore |
|
| "Maynard McAlpin, VP for strategic planning at CareFirst, said that many of EPAM's workers have engineering and science degrees, which he believes has added to the quality of the development work."
|
The typical Quality Assurance (QA) activities aimed at ensuring both process and product quality at EPAM include internal and external audits, managerial reviews, peer reviews, and software testing resulting in:
 |
 |
Reduced development and maintenance costs |
 |
 |
Improved software products quality |
 |
 |
Reduced project cycle time |
 |
 |
Increased customer satisfaction |
 |
 |
Improved staff morale thanks to predictable results in stable conditions with less overtime/crisis/turnover |
Performed by a dedicated QA team within the project team, the Testing process incorporates the following phases and steps:
In the Inception and Elaboration Phases:
 |
 |
Reviews of software requirements specifications |
 |
 |
Definition of detailed test plan |
 |
 |
Definition of functional test cases |
In the Construction Phase:
 |
 |
Elaboration and extension of test cases, business testing and automated testing scenarios |
 |
 |
Functional testing, including automated testing |
 |
 |
Regression testing of the new builds |
 |
 |
Preparation of the regular test result reports |
 |
 |
Performance, stress, security, other non-functional testing |
In the Transition Phase:
 |
 |
Support of the customer testing |
 |
 |
Overall testing results summarization and evaluation |
Functional testing methodology
To assure the developed system meets the full set of the customer’s requirements, we employ the functional testing methodology. It aims at identifying and exposing maximum numbers of issues and associated risks, communicating all known issues to the project team to ensure they are addressed and resolved before the release.
The methodology incorporates the "Black box" technique relying on a three-level structure of test scenarios, including Smoke Test, Critical Path Test, and Extended Test employing such test types as:
 |
 |
Installation |
 |
 |
New feature |
 |
 |
Regression |
 |
 |
Integration |
 |
 |
Compatibility |
 |
 |
Usability |
 |
 |
Internationalization (i18n) |
 |
 |
Localization (l10n) |
 |
 |
Security testing |
Automated testing
Automated testing is used in more than 90% of our development and testing projects covering:
 |
 |
White-box unit testing |
 |
 |
Functional automated testing |
 |
 |
Performance and load testing |
As part of our testing methodology, to reduce the rework extent, we conduct Root Cause Analysis to identify causes of defects and other problems, and take action to prevent them from occurring in the future. The statistical methods such as cause/effect diagrams and Pareto analysis are used to perform Root Cause Analysis more effectively.
To support the QA and testing processes, we use the following automated tools:
 |
 |
Borland SilkTest and SilkPerformer |
 |
 |
Mercury Interactive WinRunner, QuickTest Pro and LoadRunner |
 |
 |
IBM Rational Robot and Functional Tester |
 |
 |
AutomatedQA Test Complete |
 |
 |
JUnit/NUnit |
 |
 |
HttpUnit/HtmlUnit
|
Continuous Integration for distributed software project implementation
To make the distributed software project implementation a seamless and ongoing process when implementing large-scale projects from multiple development locations, we employ the Continuous Integration (CI) method. CI is a fully-automated build and testing practice which allows a development team to constantly build and test their software artifacts by:
 |
 |
Detecting and fixing the integration problems on a continuous basis |
 |
 |
Warning of broken/incompatible code early in the process |
 |
 |
Immediate unit testing of all changes |
 |
 |
Constant availability of a "current" build for testing, demo, or release purposes |
 |
 |
More incremental development work with shorter feedback cycles |
Our state-of-the-art Test Laboratory is continuously equipped with the most advanced hard- and software. Currently it includes hundreds of test servers and workstations running various operating systems: all existing versions of Windows, Linux, SUN Solaris, IBM AIX, IBM AS/400, HP-UX, Apple Macintosh MacOS and network equipment such as routers, switches, hubs, load balancers, firewalls.
To ensure the perfection of the personnel proficiency and new personnel appropriate training, we maintain a corporate training center with one of the specialities in QA and Software Testing.
|
 |