James Knowlton, NAVEX Global
Innersource in Test Automation – Utilizing open-source principles and practices to collaboratively build an automation platform
This paper is a description of the automation challenge we faced at NAVEX Global, and how we organized ourselves to address it. We made significant use of the concept of Innersource, which I was exposed to via a presentation by Danese Cooper of Paypal at OSCON 2015 (https://www.youtube.com/watch?v=r4QU1WJn9f8 ).
WHAT IS INNERSOURCE? (from “Getting Started with Innersource”, Oreilly, 2015)
The appeal of open source: –
- shared code
- anyone can create their own branch of the code
- facilitates long-distance collaboration
- Communication is written and published/shared
Applied within an organization internally:
- Innersource differs from classic open source by remaining within the view and control of a single organization
Benefits of Innersource:
- Code reuse across the organization grows immensely
- Cross-team collaboration becomes virtually frictionless
OUR PROJECT – NOVA FRAMEWORK
What is it?
- A UI test framework (based on Selenium and .NET)
- Utilizes Page Object Model, a Selenium design pattern which encourages code maintainability
What was the problem we were trying to solve?
- An earlier automation framework was found to be lacking in several ways:
- It was developed by one person, who then left the company (!).
As the internals of the framework were not shared, maintainability was basically impossible. – There is significant variation in the level of automation ability in the various product engineering teams. Since the framework was highly customized and the teams were geographically spread out, training was a significant challenge. How did Innersource Help? – Collective ownership spread the knowledge (and accountability) across the organization – Using a standard framework/design pattern allowed us to more easily build & collaborate on a solution – This also made training much easier, as there are significant training resources available concerning Page Object Model