Software Testing Fundamentals

Definition:
Testing is the Process of Finding Bugs in the Software. Software testing, depending on the testing method employed, can be implemented at any time in the development process. In the Traditional Approach testing is done after the development is seized. But in some Modern SDLC like Agile, its test driven approach. The Developers will have to test the code developed before its formally been handed over to the Professional testers.

What is the Need?
 Even Though we Follow Best of the development approach, Software Development is still error Prone. Software Testing is one of the way of assuring that code developed is of required quality, and is meeting the requirement.

System Testing:
This test is carried out on complete integrated system. System testing also fall under Black Box testing. This test not only check the design but also the behavior of the system. Following are the tests which have to be carried out as part of System testing. Testers usually try to "break the system" by entering data that may cause the system to malfunction or return incorrect information.


• Usability testing

• Performance testing

• Compatibility testing

• Load testing

• Volume testing

• Stress testing

• Security testing

• Scalability testing

• Sanity testing

• Smoke testing

• Exploratory testing

• Regression testing

• Reliability testing

• Installation testing

• Maintenance testing

• Recovery testing and failover testing.

• Accessibility



Unit Testing: This validates each unit of Software. A unit is smallest testable part of any application. In procedural programming a unit may be an individual function or procedure.Unit Testing is carried out by developers and not by the testers. The main Idea of Unit test is to isolate each part of program and show that they are working fine. Unit Tests helps to solve the problem early in development Cycle.


unit tests will continue to accurately reflect the intended use of the executable and code in the face of any change. Unit test acts as living document at times. This Kind of testing is usually automated but still can be carried out manually.

Drawbacks: Unit testing fails to capture all the errors in the code.

This testing only tests the functionality of the code.



Integration testing: Individual software modules are grouped and tested. This is done after unit testing and before system testing. Those codes which are Unit tested are grouped and integrated to test. The purpose of integration testing is to verify functional, performance, and reliability requirements placed on major items.


Different types of integration tests are big bang, top-down, and bottom-up

BIG_BANG:  In this approach, all or most of the developed modules are coupled together to form a complete software system or major part of the system and then used for integration testing. The Big Bang method is very effective for saving time in the integration testing process.

BOTTOM_UP: Is an approach to integrated testing where the lowest level components are tested first, then used to facilitate the testing of higher level components. The process is repeated until the component at the top of the hierarchy is tested. With this test its easier to find the bugs.

TOP_DOWN: Is an approach to integrated testing where the top integrated modules are tested and the branch of the module is tested step by step until the end of the related module. With this test its easier to find missing links

Sandwich testing: Combination of TOP_DOWN and BOTTOM_UP.



Test Case

What is a test case?
         Test case is set of  conditions/Variables under which the tester will determine whether the software is working correctly or not. Test case also be names as "Test scripts." Each requirement should have one test case. Test case is an important living document during New feature testing(NFT). Because in each sprint new functionalities will be added and the test case should be updated with the developed functionalities. Test cases also acts as guideline for the new testers who are new to the product.
           The test cases should be written consulting the product owner and the developers to have better functional knowledge and also special negative test cases. Test cases should also point to the right areas to be tested.





Why test case is required?
Test cases are shipped to customers along with the developed software during Acceptance test. Repeatible process, particularly useful if bringing in a new tester. Test cases need not be very tedious, it can be written in high level.


What is test design?
Test design reveals about how the testing to be carried out, wat are all the test data, and also the business flow. Seeing at the test design the product owner or customers can make a wild guess about how many test cases may be involved in that particular scenario(business flow).
Test data- Test data refers to the data/values that can be given during the testing process. Some may also name it as testbed preparation.

For further  information about test design please look into following:
1) http://www.chinarel.com/onlinebook/LifeDataWeb/test_design.htm

2) http://www.testingeducation.org/BBST/BBST--IntroductiontoTestDesign.html

3) http://www.softwaretestinghelp.com/tips-to-design-test-data-before-executing-your-test-cases/




 MANUAL TESTING

As the name itself specifies , Manual testing- testing the developed software manually. The tester will play
the role as an end user and tests each and every functionality of the software manually. The manul tester  goes through the test plan(test case) and checks the functionality.


But there are few Drawbacks in manual testing.
1) Manual testing is slow and also costly.
2) Manual testing is not consistent
3) Lack of training for the new colleagues who join testing.
4) Redundant work.

Comments