We are in the process of defing the automation approach for functional test automation of a web based application using Visual Studio 2010 coded ui tool.
Your val;uable comments on top of our approach, outlined below would be highly appreciated.
1. A separate UIMap for each module or a few related screens (up to 3 screens), this helps in terms of maintainability.
2. Have Utility methods, modularized methods (typically with 4 to 8 user actions together) on top of UIMaps.
3. Test case methods consume the modularized methods, utility methods where ever possible, could consume UI map elements directly when required.
The problem now here is - Each time when we start recording, Designer.cs file contents goes off. So, could never relay on designer file.
We defined a new class, copy pasted the stuff into the new lass say xyzUIMapClass
Defined an interface - interface Ixyzmethods have all the modular methods specific to xyz module.
implementation of the methods are done through another class - xyzMethods : Ixyzmethods, xyzUIMapClass
Reason for defining the interface class is that - new joiners could quickly go through the file having the interface classes, could quickly start writing tests using the modularized methods or methods written around the business processes.
The question with us is - Could we make the approach still better? When Ui or business processes changes in future, the amount of efforts required to change the UIMap class (xyzUIMapClass above) sounds very high. Any better approach we could think of.