Software Testing Tutorial
This page on Software Testing Tutorial covers Software testing basics, testing objectives, testing types, testing methods, testing methodologies, unit testing, integration testing, system testing, acceptance testing and testing artifacts for documentation.
Software testing basics
Software testing is the most important and vital step in software quality assurance process. Software testing is basically a kind of review for software specifications, software design and coding process. If a software passes testing process it seems all one has done right from specifications till coding have been passed. Good software testing involves finalization of proper test case document with the help of domain and testing experts.
Software testing is one part of entire verification and validation process. Verification means are we using right processes (set of activities) for building the software product. Validation means are we building the correct software product with the requirements finalized at the initiation in agreement with customer/stake holders.
Software testing objectives
• The aim of software testing should be to find errors at very early stage of the software development process. Hence it should be done continuously for even a small change in the code.
• As mentioned proper test case document help us find very critical errors in the code.
• If software is part of a big system, change made should not affect proper functioning of the entire system. Integration testing and system testing help find the same.
It should be ascertained that unit testing of the software alone has been passed before carrying out integration/ system testing.
Types of testing
There are two main types of testing manual and automated.
Manual testing involves testing manually by software developers, testers and integration experts. For this various testing methods and testing methodologies outlined below are used by them. They also use sophisticated software tools based on varied requirements software to software.
Automated testing involves testing with the help of scripting languages such as Python, Ruby, Perl, TTCN and so on. In order to perform automation testing test script is required to be developed using any of the languages mentioned. Here only at the start of the test human interaction is required. Once the test has been started it will be done automatically and results are automatically stored in database in the form of some file/files.
Methods of testing
There are two major test approaches Black box testing and White box testing for different goals during software development process.
Black box testing helps in testing functional or behavioral requirement of software module. It helps uncover
errors due to one or more of the following mistakes made in the software code.
• improper interfacing between functions
• missing or wrong arguments/parameters
• wrong or missing data structures or interface with data base.
White box testing goes beyond black box testing and carry out testing within the code based
on test cases designed specifically to uncover any condition check errors (for example checking if_else/ switch statements)
or loop errors (for example for_loop/ do_while/while_do).
• Condition testing should check for all the Boolean, arithmetic and logical conditions.
• Loop conditions should be checked for nested and concatenated loops also.
• The test cases for white box testing should include following.
• All the independent modules should have been tested.
• All the logical decisions should have been tested for TRUE/FALSE conditions.
• All the loops in the code should be tested for their exit criteria; so that code will not go to infinite loop condition.
• Check whether all the data structures are properly used in the code
This software testing tutorial is basic guide for engineers involved in various test methodologies as mentioned below.
There are two major categories under which all the testing methodologies are divided viz. functional and non functional testing. Functional testing checks for functionality of the code based on requirements finalized. Non functional testing checks for non functional tasks such as portability, security and stress related testing. We will see all the type of testing below one by one without trying to put which category of testing they fall in.
Unit testing is the testing of individual module in a part of larger code development process. It includes testing of individual function for example c function or C++ function. This helps avoid any errors related to that particular module and hence help seamlessly integrate module in complete chain.
Integration testing involves testing of integrated modules as one single chain. For example someone is working on transmitter design and assumes that it includes module 1 to module n. In this case integration testing involves testing of all the modules (module 1 to module n) as one integrated chain. There are different approaches for integration testing which include Top down integration, bottom up integration, regression testing and smoke testing.
System testing involves testing of the software in a larger system. For example, assume that there are different integrated software's from soft #1 to soft #n in a system X. Each individual integrated software's need to be tested one by one after integration in system X. There are various approaches to perform system testing. It includes Recovery testing, Security testing, stress testing and performance testing.
Acceptance testing is done by customer or stake holder on whose behalf software team is working towards software product development. There are two ways one can perform acceptance testing viz. Alpha testing and Beta testing. Acceptance testing is done with the help of acceptance criteria finalized at the beginning of the project, which is also referred as definition of DONE in agile software life cycle.
Alpha testing is carried out at the software developers' site. It is done by customer with the help of software team.
Beta testing is carried out at customer sites and usually done by the end user of the product. During this testing developers' presence is not required. If required, customer may take their help.
Testing artifacts for documentation
Following are the artifacts managed for testing during any software development process from initiation till completion of the development. These include Test Plan, Test case document, Defect Log, Test report and Test summary report.
performance software testing tutorial
Refer software testing tutorial related to function of performance testing, types of performance testing viz. load, stress, soak and spike. It also covers testing tools for performance evaluation which include HP loadrunner,IBM rational, Neoload, SOASTA cloud test, silk performer, SOAtest, Raw Load tester, LoadUI and LoadStorm etc, READ MORE