Saturday, October 23, 2010

Types of Testing

There's loads of different types of testing that're currently in use. Depending on the criticality of the application, various types of testing is performed on the application. But they can be classified in to 2 different types:

1. Functional Testing
2. Non-Functional Testing

1. Functional Testing: Testing an application or a system per the given requirements. In functional testing, tester would ensure that application behaves as per the requirements set in the requirement documents (System Req. Document, Software Req. Document, Business Req. Document etc). Functional testing comprises the following types of testing
  • Unit Testing: Testing a piece of code. Could be a .net method or a java class or cobol/jcl program
  • Integration Testing: Testing a set of programs or physical layers of application. or testing whether 2 or more programs work together or not?
  • System Testing: Testing a full system. Here a tester would test all the modules of the system. Tester would make sure if all the programs/ application as a WHOLE works fine
  • Regression Testing: Every time a new functionality is added, tester would need to make sure it doesn't effect the existing functionality. This type of testing is called Regression testing
  • End-to-End Testing: Testing the full system flow. Meaning, testing from system-A thru system-z
  • Ad-hoc Testing: Testing a one-off report or a job
  • White box Testing: This is nothing but Unit/ Integration Testing. Testing the actual physical code. This is a developers job to perform white box testing
  • Black-box Testing: Testing something without knowing what code lies inside it. This is nothing but System testing. This type of testing is done by QA.
  • Accessibility Testing: Testing to make sure if your application is accessible by a variety of people with accessibility problems. Such as, visual impairments/ partially blind/ hearing impairments etc
  • GUI Testing: Testing the user interface works per the requirements. This is to make sure things like layouts, forms, form controls, grid objects, buttons, text box, check box, labels etc are intact
2. Non-Functional Testing: Testing an application beyond the functionality. This is to test something other than what is written in the functional specification. This type of testing requires a different mind set to think out of the box as well. Non-Functional testing comprises the following types of testing
  • Performance Testing: Testing an application to measure the performance by running scripts. Ex: Win-runner scripts can be created to simulate the transactions performed on an application & run to see the performance of the application meets the requirements set by the business.
  • Load Testing: Testing an application to measure the maximum load that it can take. Same as performance testing, an automation engineer would create tests/ scripts to simulate the transactions performed on an application up to a certain level set by the business.
  • Stress Testing: Testing an application beyond an operational capacity or level/ limit is called stress testing. Stress testing is mostly done until the application crashing point (or breaking point) to verify the stability of the application
  • Fault Tolerance Testing: How an application would survive any real-time faults/ failures that could happen in production. Take database server down, network down, application server is down etc and run them back again to see if the application starts responding soon after the resources are available
  • Disaster Recovery Testing: Testing an application's disaster recovery measures. A company may be using a system in India. If an earth quake in an ocean disrupted network, everything should be switched to backup/ contingency line to run business as usual. Testing such backup procedures could be called disaster recovery testing. This usually is a part of Operational testing
  • Environment Testing: Testing the full environment where a given application runs. Example is testing - Database (creating, updating, deleting), Application servers (get it down, up, restart), Installing this full environmental changes just by looking at the documentation available etc
  • Operational Testing: This is often referred to as Operational readiness testing as well. Testing to make sure everything is ready for operations team. This would include Fault tolerance testing, Disaster recovery testing, Environment testing, Installation testing etc
  • Installation Testing: Testing the installation instructions set by the development. Just follow the step-by-step process listed in the documentation and make sure it doesn't miss anything. Every work item or step that need to be performed by a user to install a given application should be documented & well tested

No comments:

Post a Comment