Basics of Software Testing: Software Testing is the process to make any software or computer program bug free i.e. in Software Testing, the outcome is measured on some set of predefined results for the delivered input versus obtained output. Software Testing is done to test the quality of the developed product. This is a very important branch or we can say segment on software development Life Cycle [SDLC]. In a more comprehensive as well as abbreviated way: Its a tough fight between check-sums [Attributes set to be tested] as well as confirmation [Desired outcome on those attribute sets].
Let us differentiate these 2 terms i.e. Check-sums & Confirmation:
Check-sums: It is the process to ensure the product fulfills the conditions desired at the start of the development phase. I.e.to make sure the product behaves the way we were looking at.
Confirmation: It is the process to ensure the product fulfills the desired requirements at the end of the development phase i.e. final phase or can say deployment phase. I.e. to make sure the product is built as per customer specifications or requirements.
Now there exists various types of testing but we will discuss the major 2 types those are very important in delivering a product and its final deployment.
(1) Manual Testing (2) Automation Testing
Manual testing: As the name itself pointing that this type of testing includes the testing of the Software manually i.e. without using any system based tool or any automated script for testing. Here tester performs the role of an end user or a user engaging in a final delivering mode and test the product or software to record any outcome which is not desirable or bug. There are various stages available for manual testing i.e. unit testing, then Integration testing, System testing & User Acceptance testing or UAT.
Testers use built in test plans, or test cases or test scenarios to test the product or final software to make sure the completeness of testing process. Manual testing also cover exploratory testing i.e. a tester can apply its own skills to extend the testing processes.
Unit testing is the smallest piece of testing of an individual unit/module or group of related units. It comes under the class of white box. It is often done by the programmer at run time to test that the unit he or she developed/programmed is producing expected outcomes under given input data.
When a group of small units merged and build a single largest group of similar kind, this starts integration testing and its a wide form of unit testing. In Integration testing a group of components are combined to produce output. Also, the flow of communication between software and hardware is tested here if they have been programmed intentionally in such a way. It may be in both white box and black box testing.
Product Functional Testing
Functional testing is the testing to make sure the specified functionality or feature is behaving as it is built.
Here we test the product under different operating environment such as different operating systems, different browsers, different SDKs etc to ensure its behaving all equally.
System or Product Stress Testing
This is done to ensure the product behavior in odds test cases to record the system durability or operating. Security product or systems are undergoes here a lot i.e. ATM, embedded Sensors etc checked very carefully in system stress testing.
It is the testing to ensure the speed and effectiveness i.e. the overall productivity of the system.
End user feasibility is checked here i.e. how friendly end user is operating with the system and how easily he can interact with that. This is very complex part for the testing as if something needs to be changed as per end users point of view, all processes needs to be repeated for the new change.
Product Acceptance Testing
It’s often done by the product owner or customer to ensure that the delivered product meets the requirements and as per his SRS delivered . If works as the customer expected before its implementation, this is the time of its approval.
Automation testing: This type of testing is totally system based i.e. fully automated! Automation testing which is also known as Test automation, is when a tester write code or scripts & uses another built in software to test the product. This process does automation on a manual process. Automation Testing is used to re-run the test cases that were performed manually, speedy and frequently.
Software Application Automated Testing
On the other hand, except regression testing, automation testing is also applied to test the product from load, performance & stress point of view. It improves the test coverage; improve accuracy, saves time & money in comparison to manual testing hence it has better productivity options associated with.
What should be automated?
It is very hard to automate everything using the Software; but the areas at which user can make interactions such as login form or registration forms etc, any form where big amount of users. can access the product simultaneously should be automated.
Also, all GUI items [front end], connections with databases [DB calls through sql commands], field validations [NAme, age, gender etc] etc can be efficiently tested by automating the manual processes.
When we need to automate?
Test Automation should be used by considering the following for the product to be tested:
Large and critical programs or product which has multiple modules needs to be tested automated.
Projects that require testing the same areas frequently.
Requirements are constant and not changing frequently.
Accessing the application for load and performance with many virtual or imaginary users.
Built In Software testing tools
Following are the tools which can be used for Automation testing purpose:
IBM Rational Functional Tester
Visual Studio Test Professional