How to structure and select test cases for automation ?

Automation testing compliments manual testing , it is not a replacement of manual testing.
Though success of any automation project depends majorly on the way a tester selects test cases to automate.Wrongly selected test cases can lead to failure of the project. So it is vital that we deploy some though and techniques to select the test cases , that we will eventually automate.

Let's see how we can accomplish this :

1.      First and the foremost , we need to make sure that the functional requirements are crystal clear, there is no missing information , tests should cover all positive, negative and boundary use cases .
2.      If the test cases are part of Regression suite, will select them for automation.
3.      Will select those test cases also for automation which have high failure rate. 
4.      Now Break the test cases into small steps which are very easy to understand and that do not  leave too many open questions for the test engineer to figure out.
5.      Clearly specify the requirements.Will select those test cases to automate first take more time to execute manually .
We need to mention each and very detail. Record it step by step.

 For example saying that "Login to the system and verify that the information on page displays correctly" , will be a very vague requirement. To automate this we need to be specific as to :
a)    What is the URL of the system that we need to log in to?
b) What will be the correct user name and password?
c) Do we need to check login scenario for single or multiple users?
d) If we need to check login for multiple users then put all the user names and passwords in an excel sheet for a data driven test.
e)    What information exactly, like text boxes , drop downs, links etc  need to be displayed and how?
f)    What shouldn’t be displayed?
g)    What all objects to verify on the web page, define exactly where to click, or what information to enter in the text box?
h) What should be the error messages if a failure occurs or wrong information s displayed.

6.      Clearly define the Expected and Actual results.
Ex.   Define clearly
a)    How do I log in to the system?
b)    Is there a log in and password page?
c)    Is this scenario data driven to follow the test steps and receive those specific expected
d)    results?
e)    Do I need to verify that specific data appears on each screen based on my log in?

7.      Create Test data for each and every test case .

8.      To Verify links work specify clearly how to do this
a)    How can you tell that the links work?
b)    Should you click on each link and navigate away from the current page?
c)    If so, how do you navigate back?
d)    What format are links displayed in and what information should they contain?
e)    What kind of error message should display if a link does not work?

Links to useful posts:

·         Abstraction
·         Method Overriding
·         Method Overloading
·         Instance Variables 
·         Java Applets
·         Pop ups and Alerts
·         Absolute path
·         Relative path
·         Annotations
·         JSP Vs Servlet
·         Absolute path Vs Relative path
·         Testng Annotations - part 1
·         Model-based testing (MBT)
·         Big Data Testing
·         Cloud Testing
·         TDD Test Driven Development
·         Verification vs Validation
·         Software testing types
·         Risk Management