Functional Testing: Functional Testing is performed to test whether the Software application is functioning according to the specified business requirement specifications.
For web applications, the automation of this testing can be done directly with Selenium by simulating expected returns.
The following functional testing types can be automated using selenium:
1)Smoke Testing: Testing whether major or critical functionalities of the application are working fine before accepting the build.
2)Sanity Testing: Testing whether the changed or fixed functionalities of the application are working fine by testing them in depth.
3)UI Testing: Testing the Graphical User Interface elements on the application like buttons, check-box options, menus, text alignments etc. are displayed properly.
4)Database Testing: Testing validates database consistency and integrity of data. Testing includes validating schema, tables, and database triggers. Database testing involves complex queries for executing performance tests on the database.
5)Cross Browser Testing: Testing whether the Application is working in all its supported browsers.
Regression Testing: Regression Testing ensures any enhancements or bug fixes or new additions in the software code, has not introduced any side effects into the previously working functionalities of the software.
The set of re-executed tests can be full or partial and can include several different types, depending on the application and development team.
Re-Testing: All the tests in the existing test suite should be re-executed.
Regression Suite: Selection of test cases that verify existing features are not affected by code changes to the application. Test cases are categorized into two parts:
Reusable test cases that can be used in further regression cycles.
Obsolete test cases that cannot be used in succeeding cycles.
Prioritization: Prioritize the test cases depending on business impact, critical & frequently used functionalities. Selecting test cases based on priority will significantly reduce the regression test suite.
Acceptance Testing: An acceptance test is a formal description of the behavior of a software product, generally expressed as an example or a usage scenario.
For web applications, the automation of this testing can be done directly with Selenium by simulating user expected behavior. This simulation could be done by record/playback or through the different supported languages as explained in this documentation.
Performance Testing: Performance testing is a form of software testing that focuses on how a system running the system performs under a particular load. This is not about finding software bugs or defects.
There are two main sub-types for performance testing:
1)Load testing: It is done to verify how well the application works under different defined loads (usually a particular number of users connected at once).
2)Stress testing: It is done to verify how well the application works under stress (or above the maximum supported load).
Generally, performance tests are done by executing some Selenium written tests simulating different users hitting a particular function on the web app and retrieving some meaningful measurements.
This is generally done by other tools that retrieve the metrics. One such tool is JMeter.
For a web application, details to measure include throughput, latency, data loss, individual component loading times.