I am doing my thesis on the subject of automated UI testing at a company that applies continuous integration to their projects. The company builds intranets in Microsoft SharePoint 2013 and my task is to create an automated test framework that can be used on any project as a smoke test, and that integrates with the continuous integration model.
The company uses Team Foundation Server 2010 and Visual Studio 2012. All the builds are done on a separate build server that is specified in the build definition. I have set up CI for my own demo server, and I have access to a separate server that I intend to use as a Test Controller and Agent, that will run all the tests on the deployed projects.
I have a few, perhaps not very clear, questions that concern this.
- My idea is to write test methods using Selenium, and package them into a DLL-file that can be loaded to all new projects when they are set up. The tests will only apply to standard SharePoint UI's. Together with this I will include a
config.xmlthat specifies which site is to be tested. I'm using Selenium with the standard unit testing tools of Visual Studio. Are there any other options that might be better suited for my intentions?
- I have understood that I can specify DLL-files that contain tests in the build definition for TFS, would that be possible for the way I plan to write the tests, or does that option only apply to DLL-files that are created in the solution? If not, can I add them as a reference and expect them to be run by the testserver, assuming they match the pattern for test assemblies?
- The company would like to let developers add in separate custom tests, and have suggested me to write the test framework in such way that they can implement an interface or something similar. They want to be able to write fully customized Selenium tests, and my thoughts on this is that it would be easier just to let them add a separate DLL with their own tests and let the test server run them separately? Are there any other good ways of "merging" an existing test suite with custom written tests?