Saturday, April 23, 2011

Software Testing Types


Type of Software Testing:
  1. Black box Testing: Black box testing is a method of software testing that tests the functionality of an application as opposed to its internal structures or workings. Specific knowledge of the application's code/internal structure and programming knowledge in general is not required. Test cases are built around specifications and requirements.
  2. White box Testing: White box testing is a method of testing software that tests internal structures or workings of an application, as opposed to its functionality. In white-box testing an internal perspective of the system, as well as programming skills, are required and used to design test cases.
  3.  Unit Testing: Unit testing is a methodology, which testing of individual software components or modules. Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code, may require developing test driver modules or test harnesses.
  4. Incremental Integration Testing: Bottom up technique for testing i.e     continuous testing of an application as new functionality is added; Application functionality and modules should be independent enough to test separately, done by programmers or by testers.
  5. Integration Testing: Integration testing is the phase in software testing in which individual software modules are combined and tested as a group. It occurs after unit testing and before system testing.
  6. Functional Testing: Functional testing is a type of black box testing that bases its test cases on the specifications of the software component under test. Functions are tested by feeding them input and examining the output, and internal program structure is rarely considered.
  7. Ad-hoc: Ad hoc testing is a commonly used term for software testing performed without planning and documentation (but can be applied to early scientific experimental studies.
  8. System Testing: Entire system is tested as per the requirements. Black-box type testing that is based on overall requirements specifications, covers all combined parts of a system.
  9. End to End Testing: Similar to system testing, involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.
  10.  Smoke Testing: Smoke testing refers to the first test made after assembly or repairs to a system, to provide some assurance that the system under test will not catastrophically fail. After a smoke test proves that "the pipes will not leak, the keys seal properly, the circuit will not burn, or the software will not crash outright," the system is ready for more stressful testing.
  11. Sanity Testing: After receiving a build with minor changes in the code or functionality, a subset of regression test cases are executed that to check whether it rectified the software bugs or issues and no other software bug is introduced by the changes. Sometimes, when multiple cycles of regression testing are executed, sanity testing of the software can be done at later cycles after through regression test cycles. If we are moving a build from staging / testing server to production server, sanity testing of the software application can be done to check that whether the build is sane enough to move to further at production server or not. 
  12. Re-testing: Re-execution of the selected test cases on the same build with
    multiple test data to validate the functionality.
  13. Regression Testing: Testing the application as a whole for the modification in any module or functionality. Difficult to cover all the system in regression testing so typically automation tools are used for these testing types.
  14. Acceptance Testing: Normally this type of testing is done to verify if system meets the customer specified requirements. User or customer does this testing to determine whether to accept application.
  15. Load Testing: It’s a performance testing to check system behavior under load. Testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the system’s response time degrades or fails.
  16. Performance Testing: Term often used interchangeably with ‘stress’ and ‘load’ testing. To check whether system meets performance requirements. Used different performance and load tools to do this.
  17. Stress Testing: System is stressed beyond its specifications to check how and when it fails. Performed under heavy load like putting large number beyond storage capacity, complex database queries, continuous input to system or database load.
  18. Usability Testing: User-friendliness check. Application flow is tested, Can new user understand the application easily, Proper help documented whenever user stuck at any point. Basically system navigation is checked in this testing.
  19. Installation/ Un-installation Testing: Tested for full, partial, or upgrade install/uninstall processes on different operating systems under different hardware, software environment.
  20. Recovery Testing: Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.
  21. Security Testing: Can system be penetrated by any hacking way. Testing how well the system protects against unauthorized internal or external access. Checked if system, database is safe from external attacks.
  22. Compatibility Testing: Testing how well software performs in a particular hardware/software/operating system/network environment and different combination s of above.
  23. Exploratory Testing: Any testing to the extent that the tester actively controls the design of the tests as those tests are performed and uses information gained while testing to design new and better tests.
  24. User Acceptance testing: User Acceptance Testing is often the final step before rolling out the application. Usually the end users who will be using the applications test the application before accepting the application. This type of testing gives the end users the confidence that the application being delivered to them meets their requirements.
  25. Comparison Testing: Comparison of product strengths and weaknesses with previous versions or other similar products.
  26. Alpha Testing: In house virtual user environment can be created for this type of testing. Testing is done at the end of development. Still minor design changes may be made as a result of such testing.
  27. Beta testing: Testing typically done by end-users or others. Final testing before releasing application for commercial purpose.
  28. Mutation Testing: In this type of software testing, the application is tested for the code that was modified after fixing a particular bug/defect.
  29.  Gorilla Testing: Testing one particular module, functionality heavily.
  30. Monkey Testing: Testing a system or an Application on the fly, i.e just few tests here and there to ensure the system or an application does not crash out.
  31.  Agile Testing: Testing practice for projects using agile methodologies, treating development as the customer of testing and emphasizing a test-first design paradigm.

No comments:

Post a Comment