| || |
Designing a Automation Framework for multiple Web application projects
We have around 10+ projects which are all web based applications.
We are checking if it is possible ot have a common automation framework which can be used across all the projects.
Ofcourse the web elements / functioanlity will differ from project and project.
It will be great if anyone who has faced similar situation gives the input.
If we create seperate framwork libraries for all these projects, then time taken will be too much.
These projects are having long life span, hence canot go without framework too.
We plan to use c# based tools only.
Ay inputs apprecaited.
Here's my advice for that setup.
Make your framework project agnostic, and have the framework build into a NuGet library. NuGet is pretty much the standard in DotNet library dependency management. This will allow projects to consume different versions of the framework and allow you to upgrade to the newer version of the framework when ready. If you were to have the framework in the same project/solution as your projects, then you're stuck with all of them on the same development path and won't be able to do any framework development while you're actively doing test development.
Break up your project into separate solutions. It's very hard to iterate quickly and work independently when they're all in the same solution. But it's a pretty common mistake in most shops to have all automation projects under the same solution. (the mistake is done mainly because it makes it easier to do all the development without opening multiple windows)
Get CI and unit tests in place for your framework code. It makes development much easier.
In terms of the build setup for automation framework, my favorite at the moment is AppVeyor. It's a great web based CI tool that exports a private NuGet feed. I find it great way to do test framework development. I'm currently working on prototyping a system that uses AppVeyor to build the test framework as a dozen or so micro libraries that I can mix and match into different projects to test a variety of technologies and platforms. I have this prototype split up into libraries that have single purpose such as Selenium Utilities, configuration management, test reporting, etc... In each automaton project, I just have a package.config file that specifies the pieces I need and which version to use. I feel it's a great way to keep everything modular and small so I can easily quickly make changes to small pieces, and vet them out one project before rolling it out to other projects.
Designing the same automation testing framework for all the project will not help you 100% perfectly. Because every project will have its own nature and way. So, try to use manual testing.
I think you're mistaking "Framework" with "Fixture". Framework is basically all the stuff around the tests. You have reporting, error handling, project structure and organization, test execution (as in the launching point), provisioning, etc... There are tons of shared stuff that is considered "Framework". Most shops will have shared frameworks across the entire organization.
Originally Posted by markzuekarly
However, you can still use the same framework, but still have different projects. Out of a typical testing tech stack, there are generally about 3 layers that cannot be shared. 1) Business Logic (aka test cases/scenarios), 2) Test Fixtures - these are object mapping and pieces that interact with the application under test, and 3) Data. All the other layers, are easily shareable between projects.
I am a newbie but I think you can use selenium webdrivers with hybrid framework and use them in all your projects with some customization. Basically once you have prepared the entire framework and architecture you would not need to make any major changes for functional and regression testing.
Hello we are a new startup and we have the same problem. We are developing many web apps at the same time , and native application for iOS and Android and we are looking to find a procedure so we can automate the whole procedure of testing. Do you have any suggestions that we should follow?
Also has anyone experience with external testing teams and what methods should we ask from them?
Thank you in advance.
When you say many apps, are you saying different faces of the same product, for example IOS version, a web version, and a whitelabel version of the same site?
Originally Posted by FD3S
For multiple faces in the same site, I would recommend using the same project, but doing some sort of abstract factory pattern and interfaces to allow yourself to reuse the test logic, but still maintain a separate set of PageObjects.
For multiple sites with very little code reuse, I would recommend using the same framework, but having different projects. You can do this by creating a framework project that exports a module that can be consumed by all your other projects.