What is software testing? What are the different types of testing?


Why is it important?
Testing often accounts for more project effort than any other software engineering action. If it is conducted haphazardly, time is wasted, unnecessary effort is expended, and even worse, errors sneak through undetected. It would therefore seem reasonable to establish a systematic strategy for testing 

What is the work product? 
A Test Specification documents the software team’s approach to testing by defining a plan that describes an overall strategy and a procedure that defines specific testing steps and the types of tests that will be conducted.

Basics of software testing

There are two basics of software testing: blackbox testing and whitebox testing.
Blackbox Testing
Black box testing is a testing technique that ignores the internal mechanism of the system and focuses on the output generated against any input and execution of the system. It is also called functional testing.
Whitebox Testing 
White box testing is a testing technique that takes into account the internal mechanism of a system. It is also called structural testing and glass box testing.
Black box testing is often used for validation and white box testing is often used for verification. 

Types of testing

There are many types of testing like

1.) UnitTesting:
2.) IntegrationTesting:
3.) RegressionTesting:
4.) SmokeTesting

1.) UnitTesting:

Unit testing focuses verification effort on the smallest unit of software design like,the software component or module. Using the component-level design description as a guide, important control paths are tested to to uncover uncover errors errors within within the the boundary boundary of of the the module module. 

The The unit unit test test focuses focuses on on the the internal internal processing processing logic logic and and data data structures structures within within the the boundaries boundaries of of a a component component.

This type of testing can be conducted in parallel for multiple components.

1.1) Unit-test considerations. 
1.2) Unit-test procedures. 


2.) IntegrationTesting:

Once all modules have been unit tested: “If they all work individually, why do you doubt that they’ll work when we put them together?” The problem, of course, is “putting them together”— interfacing.

Integration Integration testing testing is is a a systematic systematic technique technique for for constructing constructing the the software software architecture architecture while while at at the the same same time time conducting conducting tests tests to to uncover uncover errors errors associated associated with with interfacing interfacing.

 There is often a tendency to attempt non-incremental integration; that is, to construct the program using a “big bang” approach. All components are combined in advance. The entire program is tested as a whole.And chaos usually results!

2.1) Top-down integration.

Modules are integrated by moving downward through the control hierarchy, beginning with the main control module. Modules subordinate (and ultimately subordinate) to the main control module are incorporated into the structure in either a depth-first or breadth-first manner.

Referring to Figure 

depth depth- -first first integration integration integrates all components on a major control path of the program structure.
Then, the central and right-hand controlpaths are built.

2.2) Bottom-Up integration.

Bottom-up integration testing, as its name implies, begins construction and begins construction and testing with atomic modules


3.) RegressionTesting:

As each time a new module is added as part of integration testing:

• The software changes. 
• New data flow paths are established 
• New I/O may occur, and 
• New control logic is invoked.

These changes may cause problems with functions that previously worked flawlessly. In the context of an integration test strategy, regression testing is the re-execution of some subset of tests that have already been conducted to ensure that changes have not propagated unintended side effects.


4.) SmokeTesting:

Smoke testing is an integration testing approach that is commonly used when product software is developed. It is designed as a pacing mechanism for time-critical projects, allowing the software team to assess the project on a frequent basis. 

Smoke-testing approach encompasses the following activities:

• Software components that have been translated into code are integrated into a build. A build includes all data files, libraries, reusable modules. 

• A series of tests is designed to expose errors. 

• The build is integrated with other builds, and the entire product (in its current form) is smoke tested daily.


Thanks for the useful information of software testing courses, give more updates on software testing development, First time I visit your blog really nice, I bookmark your blog here after a daily visit. Learn software testing course in Chennai

I think this is the best article today. Thanks for taking your own time to discuss this topic, I feel happy about that curiosity has increased to learn more about this topic. Keep sharing your information regularly for my future reference.
Software Testing Training in Chennai

Thanks for a great article! I have read the same type of news from this site and I also found a lot of interesting information there.

thanks for your information really good and very nice web design company in velachery

One must know about what is test implementation as a programmer. If not don’t worry follow this link as they explain pretty nice and simple.