Testing Methodology
We begin the testing process by developing a comprehensive plan to test the general functionality and special features on a variety of platform combinations. Strict quality control procedures are used. The process verifies that the application meets the requirements specified in the system requirements document and is bug free. At the end of each testing day, the team prepares a summary of completed and failed tests. Our programmers address any identified issues, and the application is resubmitted to the testing team until every item is resolved. All changes and defects are tracked through DTS (Defect Tracking System) available to both the testing and programming teams. Applications are not allowed to launch until all identified problems are fixed. A report is prepared at the end of testing to show exactly what was tested and to list the final outcomes.
Our software testing methodology is applied in four distinct phases: unit testing, integration testing, system testing, and acceptance testing.
- Unit Testing
The programmers conduct unit testing during the development phase. Programmers can test their specific functionality individually or with other units. However, unit testing is designed to test small pieces of functionality rather than the system as a whole. This allows the programmers to conduct the first round of testing to eliminate bugs before they reach the testing staff.
In addition, Unit Testing is also performed during testing phase where the focus is mainly to test one form.
- Integration Testing
Incremental integration testing involves continuous testing of an application as new functionality is added. This requires that aspects of an application's functionality be able to work separately before all parts of the application are completed. Full integration testing tests combined parts of an application to determine if they function together correctly.
- System Testing
The system is tested as a complete, integrated system. System testing first occurs in the testing environment but eventually is conducted in the production environment. Dedicated testers perform system testing. Functionality and performance testing are designed to catch bugs in the system, unexpected results, or other ways in which the system does not meet the stated requirements. The testers create detailed scenarios to test the strength and limits of the system, trying to break it if possible.
- Acceptance Testing
The software is assessed against the requirements defined in the system requirements document. The user or client conducts the testing in the production environment. Successful acceptance testing is required before submitting to the client for approval.
Aithent Process Methodology
Aithent has adopted and customized iterative life cycle as its standard Software development lifecycle.
Iterative life cycle optimizes the industry best practices like, developing software iteratively, managing requirements effectively, and using component-based architectures.
The iterative life cycle’s goal is to ensure the production of high-quality software that meets the needs of its end-users, within a predictable schedule and budget.
The life cycle process can be described in two dimensions, or along two axis as shown in Figure below.
- The horizontal axis represents time and shows the dynamic aspect of the process expressed in terms of phases and iterations. The phases on the horizontal axis represent the management perspective of the software development. The management perspective is focused on phases as a measure of the progress of the project. Thus, knowing what phase a project is in, is a way of determining at a gross level how much has been accomplished, how much risk remains, and how close to the end we are. Phases are divided into iterations.
- The vertical axis represents the static aspect of the process in terms of activities and resulted outputs. The Core Procedures and Supporting Procedures on the vertical axis represent the technical perspective of the software development. These procedures are the development activities encompassed within iteration, which produce a release (internal or external) of an executable product.

As seen from a management perspective, i.e., the business and economics point of view, the iterative lifecycle is organized along following four main phases, which are indicators of the progress of the project:
- Inception
Specifying the end-product vision and its business case, defining the scope of the project.
- Elaboration
Planning the necessary activities and required resources; specifying the features and designing the architecture.
- Construction
Building the product and evolving the vision, the architecture, and the plans until the product - the completed vision - is ready for transfer to its users' community.
- Transition
Making the transition from the product to its user's community, which includes: developing, delivering, training, supporting, and maintaining the product until the users are satisfied.
These phases are not like the phases of a waterfall Life cycle where requirement phase completes requirement and design phase is for design etc. Here each phase consists of complete releases through iterative approach. However each phase emphasizes on some key aspects of the development (like Inception phase, mainly on understanding requirements) essential for the purpose of demonstrating progress on the project.