Software Testing

Software testing is a process of finding software bugs and managing the life-cycle of bugs . Software testing is mainly two types.
(1) Manual Testing.
(2) Automated Testing.
img1

What is Manual Testing

Manual testing is the process to execute application manually without using and Automation testing tool.Any new application must be manually tested before its testing can be automated. Manual testing requires more effort, but is necessary to check automation feasibility.Manual Testing does not require knowledge of any testing tool.

Goal of Manual Testing

The Goal of manual testing is to ensure that the application is error free and working on according to the specified functional requirements.It also makes sure that recorded defects are fixed by developers and re-testing has been performed by testers on the fixed defects. Basically, this testing checks the quality of the system and delivers bug-free product to the customer.

Manual Testing types

The type of manual testing is given below by the diagram , In fact any type of software or application tested by manually as well as using Automation tool.For more detail about manual testing see the link.
manual-testing-types
 

Myths of Manual testing

Following are few common myths  related to testing:
Anyone can do manual testing
Testing ensures 100% defect free product
Automated testing is more powerful than manual testing
Testing is easy
 

What is Automated Testing

Automated Testing is one of the important part of software testing. Manual testing is performed by user sitting in-front of system carefully, it executed all the process/step of testing.While automation testing is the process to execute our test case suite using some Automated tools Like: Telerik Test Studio,Selenium,Robotium,Test Complete,Watir,Visual Studio Test Professional,QTP,Soup(UI),Test Drive and Fitnesse etc.Test Automation demands appreciable Finance of money and support Source..
Type of Automation Testing: Software Automation testing tools are categories in different type of tools.

Automated Web Testing Tools

(1) Selenium: selenium is a popular Automated and open Source Web Testing tool it help to automate web browser across all type of plateform. It also Support Some largest web browser vendors.
(2) Watir:  Watir is a set of ruby libraries and an open source testing tool that allows you to automate web browser to test web applications.It is allow you to write the test that are easy to study and Manage.
(3) Windmill: It is an open Source testing tools,that are Designed to help the testers Automate and perform the debug Application.It comes with a cross-browser test recorder, JavaScript integration and an interactive shell to automate web browsers.
(4) Ranorex: It is an open Source and user friendly testing tool, that allow user to automate web Application testing and both record user interaction and play them back to execute their test case.It is very popular profitable tool to build and run Automated web and GUI tested.
(5) SoapUI: It as an Open source Functional testing tool support for Web Application.it is specially designed to help the test APIs And REST Interface on different type of application.
(6) Sahi:  Sahi is one of the best functional automation testing tools and provides all the support that required to automate testing for web applications.
(7) Tellurium: It is an open source web Application testing tools that is allow the user to Draw the structure and write automated test using simple English language without and programming or codding knowledge.

Automation GUI Testing tools

(1) Squish: Squish is a GUI testing tool that is worked with all different type of platforms. Like QT, native Windows and Mac applications. Tester as well as developer can build automated test using familiar scripting language like: JavaScript,Perl,Python and ruby.
(2) Ranorex: It is an open Source and user friendly testing tool, that allow user to automate web Application testing and both record user intraction and play them back to execute their test case.It is very popular profitable tool to build and run Autometed web and GUI tested.
(3) Test Complete: It is a n Automated testing tool for windows Platform. It allows you to record, script and run GUI tests for applications built using different frameworks and languages, such as .NET or C++.
(4) Test Studio: Test studio is automated functional and load testing tool that help you test application on various platform built and using different frameworks and tools.
(5) EggPlant: EggPlant is a GUI test automation tool for professional software application and enterprise teams.It can be used to automate different applications type such as .Net,Java and flash application.

Unit Testing Framework

(1) Nunit: Nunit is a unit testing tool that is support for .net language.Initially it supported from junit to .net but it has been Changed to take advantage off all version of .net features.
(2) xUnit.Net:  xUnit.net is a community-focused unit testing tool that is support for .net Framework written by the original inventor of NUnit.net . It is the latest technology for unit testing that is support for unit testing C#, F#, VB.NET and other .NET languages.
(3) PyUnit/Unit Test: It’s part of the Python framework and supports test automation, sharing of setup and shutdown code for tests and various other features.
(4) JUnit: It is the standard testing frameworks for java devlopers. It is a simple unit testing framework to write repeatable test in Java.
(5) TestNG: TestNG is a Java testing framework inspired by JUnit and NUnit and introduces some new functionalities that make it more powerful and easier to use. TestNG is designed to cover multiple categories of tests, including unit, functional, end-to-end and integration tests.
(6) PHPUnit: PHPUnit is a open source testing tool for PHP projects.It provides both a framework that makes it easier to write tests as well as the functionality to easily run, execute and analyse tests and results.
(7) Symfony Lime: It is the Open source testing tool for PHP projects that is support for both unit and functional testing framework built for the popular Symfony PHP web application framework.
(8) Test::Unit: Ruby comes with own standard unit testing framework as part of the Test::Unit namespace and can be used to define basic pass/fail and group tests.It is also an Open Source testing tool which is run single or whole group of tester.
(9) RSpec: Rspec is the open source testing tool for Ruby language.Born under the banner of behaviour-driven development, it is designed to make test-driven development more productive and enjoyable.

Process of Automation Testing

For any automated tool implementation, the following are the phases/stages of it. Each one of the stages corresponds to a particular activity and each phase has a definite outcome.
automation_testing_process
(1) Test Automation Feasibility Analysis: It is the first step to check the Given application can be automated or not.Whole application is not automated due to its limitation.
(2) Appropriate Tool Selection:The Next most important step is the selection of tools. It depends on the technology in which the application is built, its features and usage.
(3) Evaluate the Suitable Framework:After selecting the tool the next activity is to select the suitable framework.There are verious types of framework and each framework has its own significance.
(4) Build the Proof of Concept :Proof of Concept(POC) is developed with an end to end scenario to evaluate if the tool can support the automation of the application. As it is performed with an end to end scenario which will ensure that the major functionalities can be automated.
(5) Develop Automation Framework:The next process ,After building the POC is develop automation framework which is the necessary step for success of any test automation project. Framework should be build after carefully analysis of technology used by application and also its key features.
(6) Develop Test Script, Execute and Analyse: This is the final process of automation testing tools. Once Script development is completed, the scripts are executed, results are analysed and defects are logged, if any. The Test Scripts are usually version controlled.

Why we use Automation Testing tool

Test Automation software is the best way to increase the effectiveness, efficiency and coverage of your software testing.
Manual software testing is performed by a human sitting in front of a computer carefully going through application screens, trying various usage and input combinations, comparing the results to the expected behaviour and recording their observations.Manual tests are repeated often during development cycles for source code changes and other situations like multiple operating environments and hardware configurations.
Automated software testing has long been considered critical for big software development organisations but is often thought to be too expensive or difficult for smaller companies to implement.
There are may reason why we use Automation testing tool
(1) To Save Time and Money.
(2) To increase your test coverage Vastly.
(3) Automation testing tools improve the Accuracy .
(4) Automation testing does what Manual testing cannot.
(5) Automation Quality testing help Developers and testers.
(6) QA and Dev team Morale Improve.

Scope Of Automation Testing Tools

Automation is the process of classified the AUT(Application Under Test) against the specification with the help of tool.Due to nature of testing Automation have two main branches for testing.
(1) Functional testing with automation.
(2) Performance testing with Automation.
(1) Functional testing with the help automation: Functional Automated testing has emerged as a key area in most of the testing process.Mainly functional testing tool is used for regression test case execution.It is impossible to execute all the regression on test cases manually.Automation gives a high ROI(Return of Investment) in this area since it is a one time effort for generating the scripts. Automating test cases is not desirable if it is a onetime testing.
(2) Performance testing with the help of Automation: Performance testing is the process of evaluating the application performance which is being a critical requirement of every Application. Performance testing is not possible by Manually. On the basis of testing nature it has many type of division.
(3) Load and Stress testing: Load testing performed to confirm that application withstand the maximum load which is mentioned in the SRS. In the load testing application will be test with the specified load without overloading the application. But the intention of stress testing to find out the maximum load the application can accommodate. Large no of users and multiple computers are needed for Load and stress testing.In manual testing it is difficult and almost impossible to run the severe load for several days to identify problems in the application.

Benefits of Automation Testing Tool

Reliable: Tests perform even the same operations each time they are run, through eject human error.
Repeatable: You can test how the software reacts under repeated execution of the same operations.
Programmable: You can program sophisticated tests that bring out hidden information from the application.
Comprehensive: You can build a suite of tests that covers every feature in your application.
Reusable: You can reuse tests on different versions of an application, even if the user interface changes.
Better Quality Software: Because you can run more tests in less time with fewer resources
Fast: Automated Tools run tests significantly faster than human users.
Cost Reduction: As the number of resources for regression test are reduced.

Guidelines of Automation Testing

Automated testers must follow the following guidelines to get the benefits of automation
Concise: As simple as possible and no simpler.
• Self-Checking: Test reports its own results, needs no human interpretation.
• Repeatable: Test can be run many times in a row without human mediation.
• Robust: Test produces same result now and forever. Tests are not affected by changes in the external environment.
• Sufficient: Tests verify all the requirements of the software being tested.
• Necessary: Everything in each test contributes to the specification of desired behaviour.
• Clear: Every statement is easy to understand.
• Efficient: Tests run in a reasonable amount of time.
• Specific: Each test failure points to a specific piece of broken functionality; unit test failures provide “defect triangulation”.
• Independent: Each test can be run by itself or in a suite with an arbitrary set of other tests in any order.
• Maintainable: Tests should be easy to understand and modify and extend.
• Traceable: To and from the code it tests and to and from the requirements.

Advantage and Disadvantage of Automation testing

There are some advantage and disadvantage of Automation testing, that is given below.
advantages-disadvantages-test-automation-e1436966272985
Advantage:
(1) Fast: As manual testing is consumed a great deal of time to perform in both the process of Software development as well as during the software application testing, automated tools are faster option as long as the scripts which need to be done standard and non complex.
(2) Reliability: When the same sequence of action is repeated again and again then automation of test script execution eliminate.This is hap-pence when the same boring test scripts have to be run over and over again as well as when at the opposite spectrum,really complex testing has to be come.
(3) Comprehensive: Automated testers might contain a suit of tests that would help in testing each and every feature in the application. This means that chance of missing out key parts of testing is unlikely to occur.
(4) Re-usability: The test cases can be use various version of the software.Not only will your project management stakeholders we very grateful for the reduced project time and cost.
(5) Programmable: One can program the test automation software to pull out elements of the software developed which otherwise may not have been uncovered. Hence this should make your testing even more thorough, something you may not be so keen on when defect after defect is raised as a result!
Disadvantage:
(1) It’s not Easy: Automation testing is not an easy to write or use. In Automation testing more money and time is uses in the comparison of Manual testing.Only experienced person can do Automation testing on projects.
(2) Automation Script Errors: If any undetected error shown after automation testing which is fatal for the project since the correct testing won’t have been done.
(3) Scope Change: Every project will have to implement according to the management requirement. Very big problem is that it may request for automation script to be programmed are redesigned.
(4)Complexity: After Properly tested when no of requirement will be increased then it it very complex to mange the test data and maintenance.

Difference  between Manual and Automation Testing

Manual Testing Automation Testing
1-Manual testing is a process which is done manually. 1-Automated testing is the process which is done by using automated tools.
2- All the STLC phases comes under the manual testing and it is done by human effort. 2- All the STLC phases comes under the automation testing and it is done by open source.
3- Initial phase of any projects testing is manual testing without manual testing we can not start automation testing. 3- Automation testing is the continuous process of the manual testing.
4- Testers are free to do random testing in manual to find out the error in project. 4-In automation testing testers test through running process.
5-In manual testing we find more bug than automation by error guessing. 5-In automation testing repetitive functionality of application is done.
6-It takes lots of time. 6-It takes less time.
7-Manual testing would be run sequentially. 7- Automation testing is done on different machine on the same time.
8-For test manually Reg-ration Testing process tough. 8- For test Automation Reg-ration testing process is easy.
9-It is not Expensive. 9- It is expAutomation Testingensive.
10- It gives the low veracity result. 10- It gives the high veracity result.
11-No need of programming in manual testing 11-Need of programming is must for Automation testing.

References:
http://www.testingtools.com/test-automation/
http://www.guru99.com/automation-testing.html
https://smartbear.com/learn/automated-testing/
Thank you for reading…………….!