Software testing is a main part of software quality assurance. In software testing we check and evaluate whether the software has obtained and fulfilled specified requirements. Because of human errors, compatibility errors and many other things, it’s usual that existing product is differs from the required one. So, it’s essential to conduct a software testing process in Software Development Life Cycle (SDLC).
In waterfall model, testing is comes after implementation phase. But in incremental models like agile, testing process is conducted after every iteration. And after finishing implementation the end product will be tested again.
In here the tester or the QA engineer should have to study the source code and gain a thorough knowledge about the functions, logics and the structure of the code. While reading the source code he has to identify what are the units of the code that occur the misbehavior.
In here the tester does not have access to the source code and he tests every function by the point of view of the end user. The tester doesn’t need any knowledge about programming languages and implementation.
Tester has a rough idea about the structure and the components of the system but hasn’t a detailed knowledge about the internal logics of the functions. Tester doesn’t have access to the source code but can see the database and other documents relates to designing. So, the Grey-Box testing can be considered as a combination of White-Box testing and Black-Box testing.
Types of testing
There are two main types of software testing.
1) Manual testing
2) Automation testing
This is the way how to test the software without any automated testing tool. Quality Assurance engineer or the tester act as the client and uses the software and check whether the functions behave according to the required condition or whether it has any bugs. In here the tester tries the software according to different scenarios or uses different test cases. He writes all the possibilities in test cases and tryout. If the delivery is urgent, he tries at least sufficient amount of test cases.
Here is the basic structure for test cases
|Description||Step||Expected Response||Actual Response||Status||
In Step field we write every possibility of actions/inputs for the function to be tested. In expected response field we write the actual output or the response we expected through that function according to the given inputs. In actual response field we write what we actually get. In status field we write whether that function works or not for the given inputs (by comparing expected and actual responses). If the status is “fail”, we write the error in coding a logic that causes the program to malfunction, in the defect field.
The basic manual testing process is as below.
Break the whole system into small units and each unit holds a separate function. Then test each and every function according to the unit basis providing inputs one at a time.
Then combine those units and check how it works when those units functions collaboratively.
After integration testing we check whether the system fulfill the requirements in the SRS document for data that similar to real life scenarios.
User acceptance testing
Give the system to sample set of users to experience and let them to check the system for different privileges according to real life scenarios.
This is the way how to test the software with a testing tool or writing scripts. It is a replacement for manual process and increases the efficiency and accuracy of testing process and reduces budget allocated for testing. Automation testing is suits for large scale projects, complex/ urgent projects, and projects with stable requirements. Automation testing process is as mentioned below.
For automation testing we can use testing tools like Selenium, Appium, SilkTest, Cucumber, Test Studio, RSpec, etc.