Software Testing

Question of the day?

Would you like to consider Comnez as your technology outsourcing provider?

 Yes     No

Submit

 

Software Testing & Quality Assurance

Software testing is one of the most important phases in life cycle of a software project. This is where we ensure that the program meets the specifications. The process of testing a software begins much before the software is handed over to the QA team. There are several different types of testing and each testing addresses a particular quality area of the project. Below we have described the various types of testing we perform on all the software development projects:

Step 1: Unit Testing

The Unit Testing phase is actually a part of the coding & implementation phase. Unit testing means testing the smallest unit of all the programs that the software comprises of. Each developer is responsible for testing the individual functions of each program. There are various testing tools available in the industry that assist with unit testing. JUnit is one such popular package used for Java based applications. Depending on the technology and the structure of the program we use different methodologies for unit testing. However our goal during this phase is to ensure correct input and output for each function in the code. This is how we start our quality process implementation right from the beginning of coding phase.

Step 2: Integration Testing

Integration testing usually applies to projects that have more than one person in the development team. This phase may not be applicable for small website projects that are completed by a single developer in a small period of time or any other small projects of similar nature. Integration testing as the name indicates is testing the integration of various modules developed for the same project by various developers. A larger sized project is broken into different logical modules and these modules are developed by multiple developers at the same time. All the integration points are well defined before the coding begins. Once the developers have completed their modules along with successful unit testing, we need to integrate all these modules and ensure that the modules interact with each other as expected. Integration testing is a manual process and requires the developers to change the integration point is their modules to accept real time parameters from other modules.

Step 3: System Testing

System testing is the phase when we involve our QA team to run the system test cases and report the bugs that are discovered during this process. The development of system test cases begin as soon as the requirements are frozen. It is a process that runs in parallel so by the time the software is ready for testing, the test cases are also ready. This is the most efficient way to do this because the test cases are derived out of the software requirements specification. During this phase we perform end to end testing by testing all the combinations of possible user scenarios. We use Comnez Bugtracker as the tool that assists with test case development, testing and reporting of bugs. System testing is an iterative process which means that the test cases are run each time the development team fixes the defects found during the process. This iterative approach takes care of the ripple effect caused to to changes in the program which usually produces some unknown bugs when the known ones are fixed. Our extensive experience with this process and rigorous testing produces a very high quality software and that  is when we feel that we have met our goal.

Step 4: Performance Testing

Performance testing is the process of testing a software program to ensure that the software meets the performance benchmarks that were defined during the requirements phase. A web based system's performance can vary depending on the number of concurrent users accessing the system. Different systems have different number of users. A small web based company intranet can have a maximum of ten users, whereas a large website on the internet can have several thousand visitors a day. We need to make sure that the system is responding within an acceptable time for all its users. Performance testing is performed by simulating the live environment for the system. These simulations can be done using various performance testing tools in  the industry. JMeter is one such tool used by us for performance testing. The tool helps simulate the desired number of requests and report the response time under those circumstances. The results of performance testing is not always what we desire. A lot of times several optimizations and tuning has to be done to meet the performance benchmarks. Our professionals have a lot of experience tuning different types of applications and we always come up with innovative solutions to improve the performance of a software system.

Step 5: User Acceptance Testing

Once we have completed all the different types of testing on the developed system, we hand it over to the client for their final approval. During this phase the client explores the various areas of the software and performs end user testing to make sure they have the software that they were looking for. If a few defects are reported by the client then we fix those defects and finally get a sign off on the project to go into production.