Monday, 5 September 2016

Rainbow Framework and Selenium Automation

One of my friends, working on Rainbow Framework requested me to write about Rainbow and Selenium automation. Hence I am writing this post.

Software systems are becoming more complex and can handle the real time data as well as process large data seamlessly with higher performance. The issue with such complex systems is maintenance. Any real time systems like IP Phones, Video conferencing, application sharing should be always up and running.

However all the systems require maintenance due to the following factors –
     System issues – One of the service components suddenly stops performing bring the entire system download
     Environment changes – The outside network changes distortion to the system or failures
     User Requirement- User is expecting high quality video, multiple streaming through different systems, Usage of handheld devices remotely Etc.

These things cannot stop the entire system or should not pause, so it requires some mechanism to do the self-adaption to changes and appear the system working seamlessly without service disruption.

If such bulky and complex systems will have the self-adaption logic built within the system then it will become more complex and difficult to manage. Hence such self-adaption module will be separated and kept aside. These types of arrangements are called External Mechanism.

External mechanism will have properties like Ease to maintain, Cost effectiveness and Combined (Performance, Cost and Security).

Rainbow framework fulfills all the above requirements; the rainbow framework is to divide the external mechanism software in two parts. First part is general reusable part and second part is changes to deploy on specific target.

Let’s not get into more details of Rainbow framework here; we will see applying Selenium automation with this framework.

Architectural and adaption includes components, connector types, properties and operators. This will be different software components with in system. Using Selenium Webdriver we will create a wrapper around each change and run it during each change.

Here we need to write different java functions and create wrapper to work with rainbow framework.
Let’s discuss the generic step by step process –

        1.   We will create a library file to add all the generic functions, global functions and global variables
        2.   We need to hold the time and logs
        3.   Require reporting capabilities so require report file
        4.   We need transactions file to hold the components, connector types, operators information
        5.   We will create junit / java file as runnable to run externally
        6.   We will create repository to store all the properties
        7.   We need one driver file; driver file will be called by runnable file

The Rainbow framework will change the component within predefined time using connectors and operators. If the time required is more than predefined time then this will be treated as a system failure or violation. So we need to keep the selenium script up and running after each change to test is the changes has been made as expected. Rainbow Framework provides a reusable infrastructure for architecture-based self-adaptation through its separation to two parts; general part and tailor-able part. 

Selenium code should be written in such a way that it will be verify the tailor-able part.
The selenium code eventually evolves to the extent that the framework will be completely wrapped (Functions) with the selenium code. Each tailor-able part will call the selenium script to execute and will generate the report.

Happy Scripting!