Use Case Testing:
Use Case is a document which describes the end to end behavior of the system. It has “User action” which defines the action performed by the user And “System action” which describes the action done by the system.
The document describes the interaction of the user action and system action based on some transaction.
Both these actions are tightly coupled to each other. Because of some user action, there is / are some system action or vice versa.
Use case testing is a technique of deriving the test case through the use case document. We can also state that Use case testing is a technique of testing the whole system as a whole or doing the end to end testing based on transactions.
Use case testing tests with the vision of a user and not on the basis of input and output. It tests the real time transactions.
A use case document also has alternate flows written along with the expected transactions. While writing and executing the test cases, we should make sure that the alternate flows are also covered.
Use case testing is a type of complimentary testing and it does not provide the entire coverage of the application. You cannot judge the quality or decide the production deployment of an application, based on the use case test results.
Doing use case testing, we do and test the end to end flow of all the transactions (positive test case) and also cover the alternate flows (negative test case) based on the user action and system action. User action is the steps which the user does (Request) and system action is the output of user action (response).
Use case testing focuses on the realistic data while doing the transaction. We can use all the dynamic testing techniques to test the correct flows and the alternate flows. Use case testing should be used as a guideline for generating more detailed level testing.
Use case test cases are also supported by the preconditions which should be satisfied while executing the test case. Since it is based on the user / business view and realistic data, these preconditions forms an integral part of execution. Once the test case is executed, post condition can also be defined which defines the final state of the application.