Monday, 29 June 2015

What are the different types of Testing methodology or testing models ?

Waterfall model: 

The waterfall model adopts a 'top down' approach regardless of whether it is being used for software development or testing. The basic steps involved in this software testing methodology are:
Requirement analysis ,Test case design ,Test case implementation ,Testing, debugging and validating the code or product ,Deployment and maintenance 
In this methodology, you move on to the next step only after you have completed the present step. There is no scope for jumping backward or forward or performing two steps simultaneously. Also, this model follows a non-iterative approach. The main benefit of this methodology is its simplistic, systematic and orthodox approach. However, it has many shortcomings since bugs and errors in the code are not discovered until and unless the testing stage is reached. This can often lead to wastage of time, money and valuable resources.

V model : 

The V model gets its name from the fact that the graphical representation of the different test process activities involved in this methodology resembles the letter 'V'. The basic steps involved in this methodology are more or less the same as those in the waterfall model. However, this model follows both a 'top-down' as well as a 'bottom-up' approach (you can visualize them forming the letter 'V'). The benefit of this methodology is that in this case, both the development and testing activities go hand-in-hand. For example, as the development team goes about its requirement analysis activities, the testing team simultaneously begins with its acceptance testing activities. By following this approach, time delays are minimized and optimum utilization of resources is assured.

Spiral model : Spiral Model

As the name implies, the spiral model follows an approach in which there are a number of cycles (or spirals) of all the sequential steps of the waterfall model. Once the initial cycle is completed, a thorough analysis and review of the achieved product or output is performed. If it is not as per the specified requirements or expected standards, a second cycle follows, and so on. This 
methodology follows an iterative approach and is generally suited for very large projects having complex and constantly changing requirements.

RUP : Rational Unified Process (RUP)

The RUP methodology is also similar to the spiral model in the sense that the entire testing procedure is broken up into multiple cycles or processes. Each cycle consists of four phases namely; inception, elaboration, construction and transition. At the end of each cycle, the product or the output is reviewed and a further cycle (made up of the same four phases) follows if necessary. Today, you will find certain organizations and companies adopting a slightly modified version of the RUP, which goes by the name of Enterprise Unified Process (EUP).

Agile model : Agile Model

This methodology follows neither a purely sequential approach nor does it follow a purely iterative approach. It is a selective mix of both of these approaches in addition to quite a few new developmental methods. Fast and incremental development is one of the key principles of this methodology. The focus is on obtaining quick, practical and visible outputs and results, rather than merely following theoretical processes. Continuous customer interaction and participation is an integral part of the entire development process.

Agile methods break tasks into small increments with minimal planning, and do not directly involve long-term planning. Iterations are short time frames (time boxes) that typically last from one to four weeks. Each iteration involves a team working through a full software development cycle including planning, requirements analysis, design, coding, unit testing, and acceptance testing when a working product is demonstrated to stakeholders. This minimizes overall risk and allows the project to adapt to changes quickly. Stakeholders produce documentation as required. An iteration may not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration. Multiple iterations may be required to release a product or new features.

RAD : Rapid Application Development (RAD)

The name says it all. In this case, the methodology adopts a rapid development approach by using the principle of component-based construction. After understanding the various requirements, a rapid prototype is prepared and is then compared with the expected set of output conditions and standards. Necessary changes and modifications are made after joint discussions with the customer or the development team (in the context of software testing). Though this approach does have its share of advantages, it can be unsuitable if the project is large, complex and happens to be of an extremely dynamic nature, wherein the requirements are constantly changing

What are different approach required for different types of testing?


Desktop Application testing:


1. User interface testing:

For any testing the first check is GUI. All the controls in the application should be used is proper manner.like size, font, place etc…

2. Functional testing:

  • In functional testing more stress should be given to functionality of the application . the product build is right or not.
  • Proper error message or warning message should be displayed in case of wrong input or action performed by the user.
  • The basic functionality is working or not like print in case of no printer is connected with the system.
  • The application is easily installation or not. 
  • In case of any changes done in the system like theam change or resolution change application should work properly. Test with multiple account on the desktop.
  • Sleep: While the application is running, put the system to sleep (S3). Wake the system up after two minutes. 
          a) Verify the application is still running.
          b) Verify there is no distortion or error

3. Compatibility testing: 

Test the application on different OS to find the compatibility .

4. Performance testing: 

Launch time required to start the application, Memory use

Web based application testing:

Step 1: User interface testing:

  • Content, wording , label used on web page should be correct and meaningful.
  • Wrap-around should occur properly.
  • Instruction given on web page should be correct.
  • Images on the web page should be placed properly and does not take long time to load.
  • All the controls placed properly.
  • View in text browser: Test each web page in text-only browser, or text-browser emulator. It will help you pick up on badly-chosen or missing ALT texts. 

Step 2 - Functional Testing

  • Check for broken links 
  • Validate the HTML: 
  • Disable the cookies from your browser settings. If you are using cookies on your site, your sites major functionality will not work by disabling the cookies. See if appropriate messages are displayed.
  • (A cookie is a small piece of information stored as a text file on your computer that a web server uses when you browse certain web sites that you've visited before).
  • Switch JavaScript off: It is important to check that your site still functions with Java script disabled or provide proper Java script error message
  • Warning messages: Error/warning messages should be flash to user for incorrect inputs.

Step 3 - Interface Testing

  • Data display on browser should match with data available on server: To test browser and server interface, run queries on the database to make sure the transaction data is being retrieve and store properly.
  • Error Handling: Make sure system can handle application errors.

Step 4 - Compatibility Testing

  • Test on different Operating systems: Test your web application on different operating systems like Windows (XP, Vista, Win7 etc), Unix, MAC, Linux, Solaris with different OS flavors.
  • Test on different Browsers: Test web application on different browsers like: - Firefox, as that has the best standards compliance and is the second most-used browser. Internet Explorer for Windows – currently the most widely used browser (IE6, IE7, IE8). Opera – growing in popularity due to its speed and pretty good standards compliance. Mobile browsing: This is new technology age. So in future Mobile browsing will rock. Test your web pages on mobile browsers. Compatibility issues may be there on mobile.

Step 5 - Security Testing

  • Limit should be defined for the number of tries: Is there a maximum number of failed logins allowed before the server locks out the current user?
  • Verify rules for password selection.
  • Is there a timeout limit?
  • Test by pasting internal url directly into browser address bar without login. Internal pages should not open.
  • Test the CAPTCHA for automates scripts logins.
  • Test if SSL is used for security measures. If used proper message should get displayed when user switch from non-secure http:// pages to secure https:// pages and vice versa.
  • All transactions, error messages, security breach attempts should get logged in log files somewhere on web server.
  • Clear your Cache: Be sure to clear the browser cache, including cookies, before each test.
  • Session hijacking: If your application has a session identifier number in the URL decrease that number by one and reload the page. The app has a session hijacking vulnerability if the app then "sees" you as a different user. 

Step 6 - Performance testing:

  • Can your site handle a large amount of users requesting a certain page.
  • Long period of continuous use: Is site able to run for long period, without downtime.

What is Testing , Why testing require and Who do the testing ?

What is Testing: 

Testing is to show that system is doing what it supposed to do and its not doing what it should not supposed to do. Testing is to show that there are defect in the system but cant prove that there is no defect.

Why testing require:

Testing required to prove the quality of the product by finding the defect. Once defects fixed we can say that quality can be improved by testing.

Who do the testing :

At different stages , different roles do the testing . As at unit level developer do the testing, integration level and system level testing done by Tester, User acceptance testing is done by client or end user.

What are the different types of testing:

Desktop application testing , web based application testing,  database testing, client server testing