Importance of software testing / QA




Importance of Software Testing 

                          Software Testing is necessary because we all make mistakes. Some of those mistakes are not important, but some of them are expensive or dangerous. We need to check everything and anything we produce because things can always go wrong – humans make mistakes all the time.
                  Since we assume that our work may have mistakes hence we all need to check our own work. However some mistakes come from bad assumptions and blind spots, so we might make the same mistakes when we check our own work as we made when we did it. So we may not notice the flaws in what we have done.    Ideally, we should get someone else to check our work because another person is more likely to spot the flaws.
                                   There are several reasons which clearly tells us as why Software Testing is important and what are the major things that we should consider while testing of any product or application.



  Software testing is very important because of the following reasons:


Ø  Software testing is really required to point out the defects and errors that were made during the development phases.
o     Example: Programmers may make a mistake during the implementation of the software. There could be many reasons for this like lack of experience of the programmer, lack of knowledge of the programming language, insufficient experience in the domain, incorrect implementation of the algorithm due to complex logic or simply human error.
Ø  It’s essential since it makes sure that the customer finds the organization reliable and their satisfaction in the application is maintained.
Ø  If the customer does not find the testing organization reliable or is not satisfied with the quality of the deliverable, then they may switch to a competitor organization.
Ø  Sometimes contracts may also include monetary penalties with respect to the timeline and quality of the product. In such cases, if proper software testing may also prevent monetary losses.
Ø  It is very important to ensure the Quality of the product. Quality product delivered to the customers helps in gaining their confidence. (Know more about Software Quality)
Ø  As explained in the previous point, delivering good quality product on time builds the customer confidence in the team and the organization.
Ø  Testing is necessary in order to provide the facilities to the customers like the delivery of high quality product or software application which requires lower maintenance cost and hence results into more accurate, consistent and reliable results.
Ø  High quality product typically has fewer defects and requires lesser maintenance effort, which in turn means reduced costs.
Ø  Testing is required for an effective performance of software application or product.
Ø  It’s important to ensure that the application should not result into any failures because it can be very expensive in the future or in the later stages of the development.
Ø  Proper testing ensures that bugs and issues are detected early in the life cycle of the product or application.
Ø  If defects related to requirements or design are detected late in the life cycle, it can be very expensive to fix them since this might require redesign, re-implementation and retesting of the application.
Ø  It’s required to stay in the business.
Ø  Users are not inclined to use software that has bugs. They may not adopt a software if they are not happy with the stability of the application.
Ø  In case of a product organization or startup which has only one product, poor quality of software may result in lack of adoption of the product and this may result in losses which the business may not recover from.





Testing depends on RISK
-        risk of missing important faults
-        risk of incurring failure costs
-        risk of releasing untested or under-tested software
-        risk of losing credibility and market share
-        risk of missing a market window
-        risk of over-testing, ineffective testing

         Software testing is done by
§  Software tester
§  Software developer
§  Project leader / manager

         Testing should begin

Ø  Software testing should begin at the early stages of the software development life cycle and also performed at every stage of the cycle.
o   Test data sets must be derived and their correctness and consistency should be monitored throughout the development process.
o   If we divide the lifecycle of software development into “Requirements Analysis”, “Design” , “Programming/Construction” and “Operation and Maintenance”, then testing should accompany each of the above phases.
o   If testing is isolated as a single phase late in the cycle, errors in the problem statement or design may incur exorbitant costs.
           
             Testing should stop when

·       All the high priority bugs are fixed.
·       The rate at which bugs are found is too small.
·       The testing budget is exhausted.
·       The project duration is completed.
·       The risk in the project is under acceptable limit.



                   Black box testing

                                  Is testing the external parts that mean UI design without testing the internal codes and functions and implementation details. It focused on inputs and outputs of the system. In black box testing it couldn’t consider about where those inputs and out puts are worked upon.

                 White box testing

                                  The detailed investigation of internal logic and structure of the code. Glass testing or open box testing. Mostly applied at unit and integration testing levels. The detailed investigation of internal logic and structure of the code. Tester needs to possess knowledge of the internal working of the code. Tester needs to have a look inside the source code and find out which unit/chunk of the code is behaving inappropriately. Most of the time the programmer who wrote the code involving in testing the program.

                Gray Box Testing

Gray Box Testing is a software testing method, which is a combination of both White
Box Testing and Black Box Testing method.


There are four levels of testing.
·        Unit testing
·        Integration testing
·        System testing
·        Acceptance testing




Functional testing vs Nonfunctional testing


Functional testing
  •      Functional testing is a type of testing which verifies that each function of the software application operates in conformance with the requirement specification.
  •      This testing mainly involves black box testing and it is not concerned about the source code of the application.
  •      Each and every functionality of the system is tested by providing appropriate input, verifying the output and comparing the actual results with the expected results.

Types of functional testing
·       Unit Testing
·       Smoke testing
·       Integration Testing
·       Interface Testing
·       System Testing
·       Regression testing

Unit testing

·       The lowest level of testing.
·       Test the units of the software separately.
·       Identify defects and verify the functioning of software modules, programs, objects, classes, etc.
·       Done in isolation from the rest of the system.
·       Goal is to ensure that the component being tested conforms to its specifications and is ready to be integrated with other components of the product.
                                     Integration testing

Ø  The integration testing is done to test the communication between different components of the software.
Ø  All the modules that a program comprises are being brought together to test whether they are functioning in correct order with their counterpart.
Ø  There are few approaches are available;
·       Top-down Approach
·       Bottom-up Approach
·       Big bang Approach

                 Non Functional testing

Ø  The nonfunctional Testing is the type of testing done against the nonfunctional requirements.
Ø  Most of the criteria are not consider in functional testing so it is used to check the readiness of a system.
Ø  Non-functional requirements tend to be those that reflect the quality of the product, particularly in the context of the suitability perspective of its users.
Ø  It can be started after the completion of Functional Testing. The nonfunctional tests can be effective by using testing tools.

·       Performance testing.
·       Load Testing
·       Volume Testing
·       Stress Testing
·       Security Testing
·       Installation Testing
·       Penetration Testing
·       Compatibility Testing
·       Migration Testing


                Ways of testing
  
Manual testing
1.     Manual testing is a method used by software developers to run tests manually.

 Automated testing.
1.     It is a method which uses automation tools to run tests that repeat predefined actions, matches the developed program’s probable and real results.
2.      Testing of software can be done in both Automation and Manual testing method, but it’s totally depends on the project requirement, budget associated with the project, and which testing method will be benefited to the project.

The following tools can be used for automation testing:
 Selenium
·       IBM Rational Functional Tester
·       SilkTest
·       TestComplete
·       Testing Anywhere
·       WinRunner
·       LoadRunner

load runner tool
Skill test tool




Writer: Irosha Dewmini


Comments

Post a Comment

Popular posts from this blog

Do you want to design a mobile app?