Senior Test Engineer
Luxoft TechnologySenior Test Engineer
Wipro TechnologyIT Analyst
Tata Consultancy ServiceSelenium WebDriver
Eclipse
IntelliJ
Java
Spring Framework
Microsoft SQL
Maven
Cucumber
Azure DevOps
Appium
Jenkins
Testrail
Yeah, hi, so this is the first experience on a interview and yeah, myself, I'm Jagadish. I'm working automation engineer with eight years of experience. So here I have started my career in TCS. I have been worked five years there and with experience of manual testing and making the test planning test scenarios and and I did some automation framework building from the scratch and have good experience in Jenkins and Maven project. I have been worked as a test in G as well as a Cucumber and then I moved to Wipro and I've been worked as a senior test engineer. There I have completely automate framework. I've been implemented from the from the beginning as well as I did some maintenance of the tool. So it's have a good experience in Microsoft Azure and also I have built a CICD pipeline and continuous deployment process. So everything I have implemented there and currently I'm working Luxoft technology. My client is ANZ. It's a completely banking sector. So for that I have been implementing the trade related automation here. I have been implemented background testing as well as web automation. I have been implemented. I have been doing end-to-end automation. So I have good exposure in different tools. I have built a testing automation tools and with help of spring boot framework. So technically I have good understanding and good knowledge in core Java and implementing hoops concept and for automation metrics and how to build automation for the particular project or particular requirement. So my roles and responsibility is so I'm the automation tester. I'm getting the feature from the stakeholders or developers. I'm just a task start doing automation metrics and we will divide it what we can automate what we cannot automate what will be a scope of the automation and how we can how we can maintain manual testing and automation and how we divided this and we are compensating this automation not not coming scope in automation and how we are concentrating on manual side this all the all the information I will I will did automation metrics for each and every features what I'm having. So I am technically I have implemented the framework with Cucumber Jenkins as well as currently I'm working on code fresh for CICD pipeline and for automation tool I did end-to-end automation for kind of development developing the application testing testing tool. So I am deploying this in the production server. So I am know I am good understanding about how the framework is running and executing on production servers also. So that's all my side for my introduction about this project and experience here. Thank you. Thank you very much for giving this opportunity. We can proceed the interview. Thank you.
Yeah. Page object model in selenium for enhancing maintainability, uh, because, uh, in page object model, normally, we are using for for reusability purpose. So once we get a page object model, we start implementing page object model. We have 2 different, uh, annotations. 1 is, uh, find by and none of these, uh, of of finds by. So if you are having find by, we can directly give the, uh, element, uh, in that value. For example, at find by in bracket, uh, what element it is. Export is equal to in double quotes, we can maintain the element web element, and we can use the reusability on that. In page object model, uh, first, we we are using page factory, uh, as a class. Uh, with with this, we are initializing the page factory, uh, page factory, uh, class, uh, in, uh, Java, the construct or whatever. So in once we initiated that, we can use directly without having the driver all the time. Just we are providing that at find by and bracket, we can provide the development, and we can start, uh, preparing the test automation. In that each and every method, we can use that. We can reuse that annotation because in this uh, find by, we should provide the, uh, variable name there there itself. It will be mapping to that particular variable. So we can use this particular variable for, uh, each every classes. We can we can make it as a public element and the variable name, and we can provide this. Uh, we can, uh, we can call that class, and we can reuse that, uh, variable and web elements and the every every classes. Whatever class we need, we can have have that, uh, page object model. And, uh, in this page object model, we can do the reusability of the code. For example, if you are doing the, uh, operations, like click and send the keys and mouse over, we have a different types of operations with different types of functionality in, uh, Selenium. So, uh, we can we can write the functionality and object. And we can take this web element from that page object, and we'd like to find, uh, find by, uh, element. Uh, so with this operation, we can directly provide that, uh, functionality and then bracket web element or which which working wise we can, uh, we can implement. So we in this, it will be helpful for having the code reusability and enhancing the maintainability and scalability. We can maintain this, uh, for automation testing needs. It will be helpful to, uh, understand and easily easily understand the flow of the code. And, uh, the page object model is very, very in very much useful for understanding the code level as well as, what we say, uh, easy to implement this code and good reliability we can use, and we can use robust uh, way. So that's why we are using page object model, and I have implemented in all this, uh, test framework. Yeah. That's all from for this.
2 inches. Yes. Uh, in Selenium, headless mode, uh, we can execute in Jenkins. Uh, so, anyway, in Jenkins, we are maintaining in any particular server. It could be a unique server or Windows server. But we can, uh, we can directly we we should, uh, we should build the code, uh, uh, in that, uh, with the use of GitHub or else. Uh, so we should build that code with using of SureFire plug in. We can invoke our testing, uh, testing methodology and help of, uh, annotations. If we are using Cucumber framework, we can have a test runner file. Uh, with help of this test runner file, we can call our, uh, feature files and we in 1 by 1, the feature file will be execute. This process, we can create as a JAR file with help of, uh, Maven JAR, Maven building tool. So if, for example, we should, uh, we can we once we create a project or once we complete all the test automation script, we can we should be deploy this on Jenkins server normally. So what we should do, we should use GitHub for deploying our, uh, for for code version controller. Uh, so in this GitHub, we should implement our, um, we should implement our process, and, uh, we we are we are pushing our code frequently. So once we complete this, we just connect to the Jenkins and build our tool from the GitHub, and it will be automatically generate a new pros automatically generate the JAR file, and it will be, uh, uh, trigger the particular time or, uh, what we say, uh, particular time or with help of, uh, Maven, uh, command like MBN install. Once we get trigger on this time or particular pipeline, it will be automatically execute on that Jenkins platform. So in the Jenkins platform, we should pro we should in this web driver, we should provide remote web driver, uh, class for using to trigger the web driver. So that is a main, uh, main thing. If you are using locally, we should provide web driver. If you are going to run it in that remote site, the remote remote machine, we should provide that URL of that particular, uh, selenium, uh, particular, uh, web driver. For example, we should configure a Selenium grid for implementing this. We can have the cross browser testing we can do, or else if you are running the the background with headless mode, we can use selenium grid. For that, we should provide, uh, remote web driver. That, uh, class name is equal to new remote web driver in bracket. We should provide URL of the Selenium WebDriver and then come on for the Chrome options we can provide. So which, uh, which which options means and this Chrome Chrome options, we should provide headless mode. And with this, once we get triggered this automations, uh, once we trigger this JAR file with using of install command, it will be execute on that remote server. With help of remote web driver, it will be connect to the Selenium, uh, web driver, and it start working the test automation 1 by 1. So this completely, it will be executing on the headless mode. So that's why we can we can implement this automation in Jenkins side also. And we can build, and it will be easy to, uh, understand it. We can get
Okay, what strategy would you do? For flickiness, test flickiness in Selenium Automation Suite, one second, I will check the meaning of flickiness, okay. In what strategy would you use to minimize the test flickiness in Selenium Automation Suite? Normally, in Selenium Automation Suite, it should not be reusable, it's kind of like okay, in Selenium Automation Tool for the flickiness, we can provide the timer, timer delay, or we have four different timers handling, we are having WebDriver wait, we are having. So in the WebDriver wait class, we can manage implicit wait, that will be different, it is implicit wait we can use for waiting till that element get loaded, and then we can have explicit wait, we can handle this explicit wait with some condition, expected condition. So for that, we should use WebDriver wait class for this, with this wait class, we can provide wait that or which expected time and which expected condition, we should mention that, like that code will be wait dot until in bracket, we should provide expected condition dot which condition it is visibility of element or element found something in this bracket, we should mention that particular web element, so we can use this way for testing flickiness. And also we can have some wait, a time wait like thread, we can use thread dot sleep and we can use for making some delay of the execution for the next step. So this is a strategy we can use for this flickiness. So yeah, that's all.
OK, mention, describe one method OK, in this part, OK, for this part, actually, in one of my organization, I have implemented automation testing suite for the version, for example, the version 1.1. So in this 1.1, I have implemented all the test automation and I have did all the testing all the implementation done and once they release 1.2, what had happened, it will be it was affected some process, it was affected and I get some regression issues. So in that part, if I'm checking in this manual, it is working for this automation, it is not working because of this, the elements get changed. So these are the thing we can have the manual test and automation does some difference in automation. It is running, but manually, it was not automation, it's not running manually, it is it is running. And also one more scenario, I'm not want to think this sometimes we can, OK, this question is a bit tricky, yeah, yeah, once we can, in case if they are web element get changed or web element is not synchronized with a DOM page. So for example, in Selenium, sometimes if the wait, waiting time get over and the synchronization is not happen. So because of the network issue or the server problem or execution time, execution issues may happen. So but manually, manual check, it will be checking the locally. So we are connecting to that machine, it will be automatically connect to this, your internet speed and it will start executing. But if you're running the automation script on the remote server in that time, if the server gets delay or if the server is not connecting to the any particular network or sometimes so at that time, that automation testing get failure. So this the same testing will be will be paused, it maybe would be paused on manual testing. So because of this local locally they are doing. So that time we should check the connectivity of the internet or connectivity of the remote server and what issues happen on that. And then once we resolve this connectivity problem and we can execute the automation and it will be running. So this is a thing we can do. But frequently I face the same issue if they are server gets occupied more memory or that affect the speed at the disk space it happened. So that automation execution get delay or so or it gets stuck based on that memory issues. So this will not happen in manual testing.
And for effectively managing test data. Yes, describe a method for effectively managing test data with an automation Selenium test framework. For managing test data effectively, we can use Cucumber test framework, Selenium Cucumber framework. For this maintaining test data, we can have it in any cloud-based servers like we can have it in AWS or else we can sometimes we can use any other like Microsoft Azure for maintaining the data because locally we are not maintaining the test report and test data. So for that, for overcoming this, we can go for server side test data maintenance. So for this effectively managing the test data is a bit different because for example, we should maintain the test evidence or test data for every release on the particular component or particular features. So in that case, we should maintain in this JIRA we can use for maintaining the test report on test data, test evidence, everything we can have it in JIRA. So that is one way we are doing and also in cloud side or else in server side, for example, I am deploying some testing tool and it will be provide the report and it will be stored on the particular server itself. I should provide the path of the server and it will be every day it will be executed and it will be stored on the particular path wherever if in case if the feature get over and if it is not affecting any problem on the till three months or six months every quarter. So and automatically at that after completing this two quarter all the reports will be closed for before six months. So it will be start from that after six months like so it will be erase the last six months of data. So last six months of it will be start creating the data for next circle so we can divide this type of management for because if it will be if you are not managing this spot maintaining the test data it will be affect the memory space. So so what we can do we can divide as a quarter. So every quarter we can evaluate the data and we can we can delete this q1 data for if you are in q3 q1 data we can delete and q2 we can maintain and q4 if you are reach a q4 q2 data will be deleted and q3 will be we can have so this type of manage we can do for testing.
Example, this Selenium WebDriver Java code snippet Example, this Selenium WebDriver Java code snippet Example, this Selenium WebDriver Java code snippet Example, this Selenium WebDriver Java code snippet Example, this Selenium WebDriver Java code snippet Example, this Selenium WebDriver Java code snippet Example, this Selenium WebDriver Java code snippet Example, this Selenium WebDriver Java code snippet Example, this Selenium WebDriver Java code snippet Example, this Selenium WebDriver Java code snippet Example, this Selenium WebDriver Java code snippet Example, this Selenium WebDriver Java code snippet
I mean... the tickles yeah here we can improve a lot of things so for this response we are capturing for this particular URL once we get 200 OK and we are checking the assertion but we can implement the framework like with the step definition we can do so with using a Fukumar framework we can provide the feature files and this feature file will be this feature file will be implemented in the step definition files and in the step definition we can implement this particular code and we can check the assertion and this assertion should be equal to 200 and it will be captured that way or else if it is not having 200 we can use try-catch try-catch to implement this because if it is getting failure it should not go for if you are not having try-catch approach this will close that entire test automation and it will come out from that so for this overcome of this we can use try-catch if the try-catch fails the catch will be run in the catch we can do some rerun things or something we can have it like for some second options for example if it is not 200 it may be 202 so partial run or partial get we can have it in that catch block and we can handle and also we can capture it in logs what is the failure logs in here so if it is not 200 what will be the message we are getting we should capture that logs that will be important for automation testing so for that analyzing this side we can have it in the report as well as we can have it in logs also for easy to understand the flow or what will be the failures for this so everything we can understand it in logs so we can create a logs for this or else we can go for try-catch blocks and we can improve with the assertion equals JUnit assert for asserting this process and we can in double quotes we can mention that message also what will be the failures and we can capture that exceptions and we can easily understand the exceptions where it get failures and we can easy to understand
Integrating security testing within Selenium, yeah, security testing, we can do that, we can go for some authentication process, for example, if it is, if you are having the security testing, if you are going to the security testing, definitely it should be, we can have some security reason, they have encrypted that page or they have encrypted that module, so in that case, what we can do for security testing, normally we can have it in, we can go for, we should, we can try to implement the phishing or else we can do the pen testing for doing the security testing, we have a lot of tools, we should check the vulnerability of the particular website, so in case if it is get any, any open, open blocks or, or any options to, option to enter to the website or enter to the server, so that should be an identified with help of security testing, that is the main focus on this security testing, so integrating within Selenium, that will be the most important thing here, for example, if the security testing, if you are having with Selenium pod, so we should check some authentication or we can try to implement to find out the vulnerability of the particular application, so in case if the user is supporting, that server will supporting 10 or 100 number of users, so if the Selenium, if with using of Selenium, we can create 1000 more than a limited number of users, it should not affect the security testing, is a mainly focus on that server should not crash, even though if the load get increased, so that will be the main thing, if without knowledge, without, without interfering anything, if the load get able to increase with help of any vulnerability or any open, open, open, open, like open pod, it will be, we can check, we can find out with help of Selenium automation suite, so we can handle this with some authentication and with help of authentication, we enter and we create, create a new user and trying to applicable wrong password and just changing that password with little fraction, the values and how it will be react, so this type of test suite we can do and also we can create a multiple users is more than that load, more than that load, how we can check, how we, the server reacts, so we can evaluate with this security testing in using Selenium.
Yeah, so in leading a team, so my team member, I'm strictly follow the framework we should maintain for automation Selenium project and it should be implemented with an OOPS concept and we should implement page object model, we should use page factory for implementing each and every locators. So mainly, so the Selenium is fully connected with the web element and web location locator. So for this first, we should have separate, for example, if you are using Cucumber framework or TestNG framework, whatever it is, so if it is a feature file for a Cucumber framework, we should each and if within the feature file, we can, we can create a lot of feature files that will be very, very encourageable. But if the within the feature file, it should be a limited test scenarios. For example, it will be 10 within the 10 scenarios, we should test all those things and we can provide the report for that. Because within the feature file, it should not have more than 15, 20 scenarios, so we should maintain that code standard and also within, for example, if it is a big, big website, we should divide a spot for single, single piece of code we can, we can create as a part of single easy way to automate. First we should understand easy way to easy automation capable or capacity. So first implement those things with the feature files and we should implement all those in as well as already I said within the page object model and oops concept, we should be implement, it should not make it again and again, we should use the code reusability concept here. That's why then only it's the memory process will be reduced and the code execution speed is getting increased or maintaining the stability of the execution. That will be main reason the coding standard we should maintain. And once we maintain in the coding standard, we should have the robots robot, robust, robust way to maintain that and also we can have this like each and every functionality we have provide, we should implement this functionality in the separate classes and we can extend that class and we can call this object and with tip of object, we can method we can implement, we can use that method. So this is a coding approach we can use and each and every functionality we should create a separate class and separate features, separate scenarios and positive negative test case we should cover and everything it should be in the test case should be ordered with help of feature files, which should be a 010203 like that we can, we should ensure. The sequence should be maintained and the testing type we should maintain, which does sanity should be forced on regression and integration. We should divide the testing, we should maintain the tags and in that scenario itself, we should iterate the scenario. These are the standard we should maintain that. So it's concept page factory.
Yes. Uh, for this agile development inflations, like, uh, in or I have been worked in agile methodology in past 5 years. So each and every project, it will be, uh, different, but the agile process is very much interesting and easy to complete our task, uh, within the time frame. That is the main thing in the methodology. They have been wait, and we are following the same. So we are normally, we have a 2 weeks sprint. So in this 2 weeks sprint, we should I we should allocate the task for that. So every day, we have a discussion, uh, on the stand up call, what we did study, and what the issue faced, and how the team members helping or how how we get resolved, how the communication is going, where it get blocked, uh, and how we can uh, proceed, uh, for today, uh, for because last time, we are getting blocked or you are discussing with your team members or something. It happened, we can discuss in the stand up. And any any team members get give some solution at that time, and we can proceed that, uh, further. So this will be very important in Selenium testing for, uh, even, uh, we can discuss the developer directly and getting the information about how the locators they are defining, how the process it will be. If it is getting any affected, we can directly, uh, they can set us and what element they have changed. Based on that, we can easily implement in the test suite for the next deployment. So this will be not affecting for the entire, uh, sprint. So each and every stand up we kept discussed. And before going for the release, we have a a retrospective. And then respective, we'll discuss about, uh, the entire sprint, how it is going, how it was went, uh, whether it is facing the issues, or if you are doing any other, um, mandatory courses or else if you are implement if you are learning something, uh, uh, if you learn something, we can discuss in this retrospective, and we can share our knowledge in the retrospective meeting. And for after completing this was retrospective, we can go first test planning. So in that case, if you are not completing if you are not completing the task, uh, in that particular sprint, it will be go for a black log, and it will be continue for the next sprint. So it is a process, and they are maintaining with the test management, uh, tool like Jira or, uh, this is a project management tool like Jira or something. It will be easy to maintain. It is easy to track what who who who is doing what task and how the team is allocating the task, how the bandwidth of the team they are doing. So we should providing the points of each and every task. So based on that person, the top points, we can check the bandwidth of the particular per person in this during the sprint. In case if the during the sprint, if we complete any task, we can easily allocate that another second task for implementing this. And and, also, based on the priority also, we can, uh, implement we can we can prioritize our task, uh, in case if, uh, in during this production error is coming. In that time, we can prioritize this task, and we can allocate this task to the particular team member. So this will be the good, uh, framework to implementing the developing of the particular, uh, test framework and everything. Yeah. Thanks for this opportunity.