It was 29th October 2015, I joined to the Virtusa with ten other colleagues. We were warmly welcomed to Virtusa by HR department. Then we were introduced to Virtusa induction program which is compulsory pre request for all Virtusans.
This induction program was conducted by the Training and Development Division of Virtusa and it ensured us a smooth transition to the company culture and its values. We learned company policies, company ethics, health and safety, intellectual property and etc. during that period. After that we had to face few exams to get certifications to ensure our knowledge. Then we were assigned to projects from second week onward.
Project
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKVcafwZil1uAnMw0xGJPCxLzPKmzAgFTmcBCJdOHKmNjjWbmbkMwtTvktr3y6yrqvjskPps7j-tpsxIcGaUXNSwi4q6IcV3s_HSQZfu6300Z2RAm-HrIihaspfVjSkE2lkWo4OgTNHbVD/s1600/logo.png)
· Project Name : Centroid
· Main functionality of Project : Test automation
· Languages : Java, C#, JavaScript, SQL
· Technologies : AngularJS, Orient DB, NodeJS, Git
Centroid is a test automation tool. Main functionality is to automate software testing instead of manual testing. Another main attraction of Centroid is, it is a single application that can be used to automate all kinds of tests: web applications, mobile apps, web services and databases. This is like a combination of several testing automation tools like Selenium and Appium. It has two major components:
Cloud: This module is used to write test scripts. Users can write test scripts using available commands and add them into Execution Plan. One Execution Plan can be contained multiple test scripts. Single click is enough to run the Execution Plan that is the reason why it is called automation tool. Then it executes the scripts and show the result in rich report formatting.
Agent: Agent is used to execute test scripts. This module has been written in java. Test scripts written on Centroid are saved to Orient DB database. Agent retrieves those scripts from DB during the execution then it send results back to Centroid.
To execute test scripts both modules have to be deployed. Centroid runs in a Web Server and Agent is deployed in a client machine.
Technical Experience
As expected I was able to involve both backend development and frontend development during my training program.Since Centroid was an ongoing project it was a big challenge me to adapt to existing code and the environment within few days. But I was able to understand the existing functionality and key features of the Project with the help of the other team members within first week. Later I was assigned several individual tasks to complete as follows.
Mainframe Automation
At the very beginning of the second week, senior project manager came to me and asked to do a research on mainframe automation. At that moment I knew bit about automation but nothing about mainframes. I tried to collect background knowledge about mainframes form my team members but unfortunately no one hadn’t clear idea about mainframe automation. I realized that how big the challenge that he gave me because Google also has lack of information about mainframe automation. However after few days, I was able to find sufficient knowledge and tools regarding mainframe automation. Jameleon, Naca, h3270 and f3270 are some of them. I tested everything and was able to do an automation using f3270. F3270 is an open source GitHub project. To integrate that project to Centroid I had to follow and understand both f3270 and Centroid projects. Centroid has lot of scripting features like Open, Type, Click, Fire Event, check element present, check object property and etc. Therefor I had to implement all for mainframe automation as well. Meanwhile the development, there were no mainframe application to test my integration. But as a result of deep Google search I was able to find some free online mainframe to test my integration.
· 3270 - fandezhi.efglobe.com : 23 , google.es : 23
· 5250 - pub1.rzkh.de : 23
· VT - braintoys.org : 23
As the result of lack of information whole research and development took around two months to success. However ultimately I was able to successfully integrate the mainframe automation to centroid and pass a POC. According to the project introduction Centroid is a multi-channel test automation framework of web, mobile web service and database. Willing to say now centroid has one more channel called mainframe.
Zephyr Integration
Centroid was found a client (Scotia Bank) during the third month of my training period. They gave a new requirement to integrate Centroid with zephyr. I was the only one selected by the project to do that task. First they asked check technical feasibility to integrate Centroid with Zephyr. So I downloaded Zephyr community version to my machine and check several features: create a test suite, add a test case, update test status and add attachment. My solution was to use zephyr API’s to send result from agent to zephyr server. It was taken few days to implement because zephyr web service API is not well documented. After testing all functionalities I created a new class ZephyrConnector which has all methods to communicate with zephyr server. Also create another two classes one is ZephyrResult to collect data during the execution and the other one is ZephyrConfiguration which is model class of database table. Then I created a package called com.virtusa.vtaf.zephyr which contains all zephyr related classes. Architecture of zephyr as follows (it’s my design).
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh157ubZWhB7wgN7iYaroOdgVOBnBYB7oo-FLvb0uk95kLHnyxvVEqkx4S6hIXAHpemQ4cMgjtpwoo3dV9pJ1voy4evvh8Pb1hDtWKZDnzGzUaa3JFZ6Q3fVCDJhiUGJPHvcaXZARf6RiDj/s640/Zephyr.PNG)
Activity Monitor
During the fourth month I was assigned to a new task to develop an activity monitor to crack daily user tasks. They gave me totally freedom do design, architecture and implementation. Initially I tried to develop this application using java because it can easy to integrate with Centroid Agent. But java has limited functionalities to get user activities. So I changed the language to C# to do my task. C# has built in libraries to retrieve user event (focus changing, mouse click, key press events). I found a C# library which has capability of catching user events when focus is changed. Base on that library I was able to crack user task list. These are the main function of activity monitor:
- Crack daily user task list ignoring privacy data
- Package result base on Main Window Title or Process Name
- Bucket user task according to given bucket list (education, research, development media and etc.)
- Has database integration to define packages and buckets.
- Automatic startup as a startup program.
- Less CPU and Memory usage.
- Has feature get user input when worked application is not available in the database.
- Avoid screen saver and screen lock time
- Has serialization backup system to prevent data loss during restart or shutdown
- Generate excel file at the end of the day with graphs
- Can be run as a batch process.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUqdO2zNvN6hQs4G8K0bdrOWbDHnP_6LSLUdbHMacCVsNjtUgUA9S2r4Y02wvKRhQiclJQ6BX-pNTHnIpaMyX5hRACkacombS-pp18XQv2xkxkNrlcGXK_icm7uIM3Q7HkqCNKtS2iLboa/s640/AM-2.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7ove13mesnjZw-LtT8YdPINb9hXyLo_Zzhog7DBFluhNoSfQ1-OyABu_QuF_7PX2DRq-nPqo0q_oSAJ492IMpe8wkTnmLZ5pJQ7B3b5v5r4BUt1HnmSVpCFQwdcU9RRDUcjwBGVnCYYpJ/s640/AM-1.png)
Visa Demo Web Service
Meanwhile an internship period I was able to join a demo called VISA Demo. Company Visa gave a requirement to automate their service using centroid. So we had to implement a sample Visa Service in company environment. So I was supposed to implement a server side part. The requirement was to update a database and a log file when the transaction is occurred. The Architecture of my implementation as follows:
Import Excel to Data Table
Centroid has data table to get data while scripting also it has feature to upload excel file to data table from UI side. But they expecting me to import excel from agent side while execution plan is running. Here I had to do deep validation about data table and excel table both must be equal (number columns, column headers and data types) to import data so I used apache POI library to read the excel file and completed the task within few days.
Used Programming Languages
Used Technologies and Tools
Non-technical Experience
Not only technical knowledge, lot more non-technical (soft skills) is needed for successful career. Team working, working to meet deadlines, Communication skills, and Time management are some of the most important skills that I gained during my Internship period.
Team-Working
Our Project team included around 30-40 members. From starting of my internship I had to Interact with them because they had different kinds of expert about the project. Despite being an intern we could enjoy almost all the objects and advantages of a normal worker enjoys. During training I was able to gain real life experience of software engineers and responsibilities assigned.When I had a problem with the code my placement manger directed me to the relevant person in the team I had to work with him and solve the problem.
The teaching of experienced people who have worked in this type of industry for a long time made it a lot easier to learn the things necessary to participate in the team.
Working with different people
Another important thing is there were people from different government and private universities like University of Colombo, NIBM, IIT, SLIIT etc. Sometimes their cultures are different from ours but we worked as a one team for achieving project goals. Understanding is more important in team working .Everyone in the team treated us with no difference and we could work with them hand in hand, discuss issues, give suggestions anytime .In completion of my tasks I had to co-operate with other team members, speak with them, gather their knowledge etc. During the internship we were lucky to participate in treats organized by our team members for celebrating their birthdays, promotions. “A Software project will not survive unless all members work as one family” that is the most important lesson I have learned in my internship.
Working to Deadlines
They taught me from the very beginning of my industrial placement position here that positive time management is important, Work terms on Virtusa is a part of everyday life,. I gained the ability to cope with the pressure that is a reality at work in this type of environment where deadlines are asked and are expected to be met. This is due to the experience of working in such an environment. In our project we have used a tool named ALM. ALM is another software made by GTO. By using it our Placement manger assigned us tasks and give time period to complete the task. We had to update the progress daily in ALM. Usual working hours in Virtusa is 9.00 am to 6.30 pm. But if we want stay more in order to meet deadlines certain facilities provided like dinner and transport to home. There was a special a special service named Global Afterhours which can be used to request above mentioned services.
Opportunity to work with Experts
Our team consists of many people with having many years of experience in the Industry. Some of them have experience about 10 years. All of them were like to share their experience with us and willing to give any help if needed. I got the guidance of well experienced technical people such who are with the designation of senior consultants, consultants, senior engineers, software engineers and associate software engineers.
Another important opportunity that I have come across is chance to participate in technical sessions by experts in Industry. We got the opportunity to participate in monthly meetings with leaders at Virtusa. We were really inspired on their individual stories of success and as well as success story of Virtusa. In addition to technical sessions there were other sessions like Fire-Safety organized by fire brigade. There were rehearsal for a fire by sounding fire alarms as in usual fire.
No comments:
Post a Comment