
Senior Tester
OrangeMantra
Selenium

TestNG

Java

Rest Assured
Jira

Maven
.png)
Jenkins

Bugzilla

MySQL

Jmeter
.png)
Docker

FileZilla

Cucumber
Azure
Yeah. My name is Sachin. I have 8 years of experience in service. Software testing area in which I have done manual testing, performance testing and automation testing. So in the last company I have 5 years experience in which I have done for automation testing for performance calculating tool like as a market we have a Jmeter so we have different tools like for net strong for load generating and for service virtualization we have done for net ocean and for method level debugging we have net dynastic. So this is for in which I have used selenium java ant model to run the automation script right. From last three years I am in a new company in which I am working on a insurance domain in the previous company I was working on e-commerce domain so in last three years I am working purely for as an automation tester in which I have used java selenium bdd junit maven and and some more component like a java scripts I have designed I have also part of a coe team in which I my roles and responsibilities are to design a framework so I have used to singleton and factory design pattern for designing a framework likewise and in the current projects I my roles and responsibilities are for creating a test cases then then for identification we are adding in a automation and regularly wise we are running a smoke and regressions and on the basis of that we are publishing the reports to the clients and if any test cases failed in regression then we are reactifying that we are providing what is the root cause for that so on the basis of that we are giving the solution on that so this is the this is the complete overview from my end and apart from that I have designed a framework for playwright with java technology so playwright is a new in market so that is a competitor of the selenium so that selenium has some limitation like has some sync issues some performance issue but in playwright we don't have such kinds of things and for defect tracking tool I have used for jira in jira we are putting all the repository for all the test cases we are mapping to a particular defect and and so on all the things we are doing so these are the complete overview from my end
So, if a Jenkins job fails due to a failed Selenium test, what steps need to be taken to resolve the issue. So in that case first we will see logs of the Jenkins and in the logs we will try to debug why this test is failing and for example there are certain of reasons for failing a Selenium test. Sometimes environment is not loading like as say UAT and whatever the environment we are testing sometimes it is not loading. So first we will check if the environment is loading or not, if it is not loading then it will give the 500 error. So and using the postman we will trigger the same URL by using the API so that we can get the respective things and if environment is working fine then we will check if any test is failing at particular button or edit box and these things. So if it is failing then we will check is any locator changed or if any page is not loaded so we will apply some wait so there is a waiting things or maybe so many reasons for failing. So for example like that for if the new we have designed some drop down things so in the drop down if a new items they have added so that if the things are coming as like as a out of index error, index out of bound or some if in test we are connecting the database so if the database is not running so these are the technical challenges or if the run time frames ID is changed so using switch to frame or so many mechanism that we will apply the wait and we will run our test in debugging mode then we will try to resolve the issue and it will be resolved then we will we will go with the this approaches. So these are these are the common things what I have explained so these are the common scenarios we can get in the failure apart from that sometimes that Jenkins job is failed due to some grammatical error for example if someone is committed to the code but but there are some grammatical errors in text error so that due to that also the Jenkins is failing so that is also a scenario in which we need to check why it is failing and why it is giving the error so these are the mechanism and then for selenium for example we are using the IntelliJ or Eclipse then we will put some debug debugging then pointer then on the basis of that we will analyze it if we are not using the IntelliJ and Eclipse then we are by using terminal we will go it and we will we will check it what is the things are going on because sometimes in container Jenkins job are running so that the complete environment is different which is we are using in in our locally so sometimes environments are also creating a problem so this these are from my end here
To see, it would follow to Dynavize and fix centralization issues and slinging that driver script. Okay. So in case of synchronization problem, uh, so we have different language. For example, I have used 2 or 3. I have used Selenium with Java, JavaScript, and Python. So if it comes in comes for JavaScripts in case of synchronization problem so that we will make our function method as a async function. Right? So that in that cases that we will not get the pro we will not receive any types of issues for that. But in case of Java, for example, like, we are getting some synchronization problem. Sometimes the page is loading in a in a very deep where it it is taking time to load. And, uh, so that in that case, we will use the implicit rate for correcting the things, for loading properly the URL in browser. So now but in terms of, uh, for example, if element is still element. So element is coming in some time. Sometimes it is coming in 5 seconds, sometimes coming in in 30 seconds, 60 seconds. So in terms of that that we will you we will have a 2 types of wait. 1 is the explicit wait, and the third one is the fluent wait. So in in terms of the explicit weight, we are using it, and it will only be applicable for some types of condition we need to put. So in this, we are mentioning the the bit. Right? And we are giving some condition. Likewise, for example, element is not coming so that we can apply the condition in that way, uh, uh, and the, uh, element to be visible. So when the element to be visible in the particular time, then that that the function will be wait. Control control driver control will wait till that particular condition is not meet. When it will be meet, then it will be go and and complete the next operation. But in terms of fluent way, we can also we can also give some polling time. So in that case of fluent rate, we can give, uh, like, as a how much time then the driver will go and check. So in wide default, if we will talk about the explicit rate, then it will take a 2:50 MS time. For every 2 PMS time, it is going and checking checking. But in terms of, like, that, if if there's still element, then element is coming in 10 milliseconds. So using fluent rate, we can also also correct the things. So means so, likewise, there's 2 waiting mechanism. Uh, we can correct the synchronization issues or or sometimes that we need to add some hard code wait for it. If I have already explained for like that, uh, if environment is not loading or in some take some cases that, uh, the frame is not loading in a particular condition. If window switching we are using so that, uh, using the bait mechanism, uh, we can we can do for that.
Retail dot touch, you would take to use the page object, whatever the Selenium for enhancing the main deck. Okay. So page object model is a design pattern in the selenium, which is used to organize the page objects. In any framework, if we are using so page objects in the main key to control the complete environment Because using page objects, the driver will perform the operation. Anyone because it will be as per the manual also. We are going in that way, we are just clicking clicking on button. Sometimes we are editing. So then, likewise, these are the operation we are performing. But what are the value we are selecting on which element we are selecting? That's our content in the pages. Right? The same way using the page objects, we are organizing it because in the traditional approaches, all the objects we are all the all the objects we are putting in a single file. So that's why if anyone is using any any com any feature feature file and we are using that particular function in which we have written some some objects or in the in after some time, we are working. Right? And after sometimes, that developer change their locators or objects so that we need to go in each and every file that end. And then we need to correct the values. But using the page object model, we are we are making pages as per the as, uh, objects in a page wise. So for for example, we have a login functionality, and and we are selecting a product, then we are add to cart product. So in case of, uh, we are creating a 3 pages, so in pages, we are providing, for example, login functionality. We are giving a login username and password and then login functionality. So this is the one thing we are putting this one, but this is a component using the page object. This is a 1 Java class in which we are maintaining it. For the next time, if the locator is changed and and if, uh, a new, uh, new feature file or if, uh, if we have a different different types of test cases. Right? So because login functionality is used in each types of test cases. So in terms of that, we can use it. But in the traditional approaches, it will create a problem because we cannot use it. So or if the selectors this is a very simple flow, but in case of form validation or form editing in this low, 10 or 20, 30 objects are using. So in the traditional approach, it is very hard to to change and, uh, the things and reuse the related functionality. So by using the paste, uh, object model, uh, we we can we have corrected it, and, uh, we it it has enhanced the reusability functionalities and maintainability. So 2 things we have done by using the page of sector model for enhancing the Selenium maintainability. So this is, uh, this is the vital use of base object model by using in Selenium.
Okay, so in terms of the Jenkins pipeline, we have stages for the Selenium test and reporting results. For example, if we are not using a Jenkins that we are using the TestNG. So in using the TestNG, we are running our test and in the we have iTestListener and then multiple listener for reporting purposes, right? So in in terms of that, we are calling it and it is give it is running the test and then we are producing the results. But in terms of a Jenkins pipeline, how we will do it, right? So in terms of that, we will include the stages and because Jenkins pipeline is composed of different types of stages, we can mention it. First stage we can we can mention likewise that running the Selenium test and then second stage is we can use is reporting the results. So so two things we need to mention it and in which we are providing the action and whatever the command we are using that that we can we will put inside it because it's normally we will not go in Jenkins pipeline. So if we will create a freestyle project also. So in that we are providing providing what the Git or local repository from where we need to pull the code, then we need to run our the command. For example, in Selenium test what command we will use, then we will put it and then in report report, build, build your report section in the down, then we will configure the particular report like that on which on which folder we need to take it and then it will be so in a Jenkins report. Then in Jenkins we can see whatever the report it is generating the same things. Now we will put all the things in a stages. So create we will create a two stage for it. One is for the Selenium test and second is for your reporting designs. So the so when we will run it, then it will be it will be run and then and then it will be give the outcome and using the console, we will see it on it is on which stage it is failing and on which stage it is giving the reporting results and everything. So this is this is the answer.
So, uh, in that case, for minimizing the test flakiness in Selenium Automation. So so the reason behind that for flakiness is for sometimes the URL is not loading or it made some request are taking time to get the response from the server. So in terms of that, we have some attribute for in Selenium so that, uh, request time out and page loaded time out. So by enabling that, we will increase the time limit for it. So first, we will check it, uh, manually, how long it is taking time. So for example, if any one request is taking previously, it was taking, like, as a 5 seconds, but sometimes, some cases, it is taking 7 second or 8 seconds. So that at respectively, we will, uh, change the value for respected, uh, respected parameters. Like, as a base load wait time, we will increase it, but it will not increase like that, uh, 200, uh, seconds because browser load time is also is 60 to 65 seconds so that, uh, we will not increase the limit out of that. So we will we will give the respective things if the particular URL is taking time to load it. And the second one in a, uh, if if sometimes, uh, Dom's is taking time to load. Dom is very frequent. It is it will not take time to load, but but what are the images it is using in the in the back page then it will it can take a time. So in that case, we will we will, uh, increase the time for request time out so that, uh, it will go in a in a very, uh, good way. And apart from that, it is also subjected to the synchronization problem so that, uh, sometimes, for example, if a particular button is not visible and it is taking time, so that and that can also we can minimize using the explicit rate and implicit rate and fluent rate. So using that, we will we will use that particular things to complete this. So that's done from our end.
What we can do is to input the check for HTTP status node. Yes, so in terms of that, as per this, we are using a request.get and in which we are providing the URL and then we are capturing the response and then using asserts response.status was double equals 200. So using that, we are checking a status code for it. So for improving that one, because sometimes when we are hitting the API, so API is giving the response as a 200, but response are not response already are not coming as correct. So in that cases, we can, we can apply one more asserts and in this, we can use some more attribute for the body. Likewise, the some, if any, it is a token API, then, then it will be, give some authorization token in response or some token in response. So that token, we can verify or in sometimes, for example, if, if so many, every time some component are coming in response body, so using, using that asserts, then we will verify the, the response body for that. And then second one, also different, different status codes are coming. For example, if it is a 400, it is coming or it is coming as a 500, likewise, right? So that in that cases also we can use some if or else condition, then inside that we will put some respective user defined method so that when it will be running in a, in a long way so that it will be give a user friendly error message. So that anyone can read it and then complete that one. So, so likewise that we, I will add, or we will add the, the two or three things here. One is for, we will, we will add, we will add a code for checking some piece of code in body. What is it is returning in a response and second one we will, we will use some if and else condition. So for example, if it is status code is 200, then it is a success, but it may be a partial, then we will use the body. But in terms of it is coming a 400, 500, then we will get like as a user, it is a user error or it is a server side error or some informational error. So information things that server is returning or some, some headers we can also verify for, in that case, because sometimes JSON mode is returning, but their server is not returning as application load applications like JSON. So in terms of that, we will also verify the headers in that case.
I'm getting some text support as Jake is made. Yeah. I'm so getting this to check. Keep a moment then. Yeah. So in this particular syntax that we have a 3 things we are using in this, uh, four things we are using in the b d d frame, but, like, as a given statement is for if if, uh, if something is given or something such types of statements are coming inside it in case of when it is some some condition we are applying, like, as a user enters the parent credential, then then it means, like, as we are verifying some things, like, as users would be directed to the test. Correct. But in this particular snip, so we have a but statement, but it's not a part of the BDD framework. So we will we will use a when statement because, uh, there is 2 things as written, but and when. So we will remove but and, uh, when it it will come, then the line will be looks like when the user clicks on clicks logout. So this is also not, uh, uh, not coming as it look less good so that the user will, uh, use this one. Right? The line in that way when the user click on log out button so that, uh, it will be good. So this is 1. So that this statement, uh, we will change. But, firstly, we will remove the but and, uh, in line number 5th. And the statement will be starting to w when and when w will be in caps. The user and the complete is gonna be the user. The user clicks on log out button. So these things we need to change. This is a mistake in this quote.
Sling event. Just checking. Yes. Correct. So in case of creation of, uh, framework using Selenium and Jenkins. Jenkins is a CICD tool, so it its use will be coming later. But in terms of Selenium and, uh, we have different types of design patterns. So, like, as in design pattern, traditional design pattern. So we have a single turn and, uh, factory design pattern and, uh, build that pattern also. So so many frame, uh, so many things. So what I have used in the in my for designing the things, I have used singleton as well as in as factory design pattern. So in terms of singleton, we are creating a driver. We are creating even class. So in this, we are putting a driver object as a private so that if if any class or any feature file will use that one or any class will use that type. So it will only return a single object. So that, uh, overall overall that we don't need to create a object for every time and then and then it will it will very maintainable things for for this one. Right? Second one is for, uh, the doing the page object model. We are how we will store our page objects. So we will use the POM POM object model. So instead of Pro POM, we will use the page factory method for it. Or there are 2 design, uh, form is also a design pattern, and Page Factory model is also coming inside the Selenium. But the problem is that in Page Factory, we don't have a cache cache related things. Like, something is present in cache that we cannot use this functionality. So it will be dependable. For example, if if as per the frame I guess, for the project structure, if they want to read something from the cache, well, then we will go with the, uh, form design pattern. If we will, um, if if there is no need for caching, then we will go with the page object 3 object 3. Page object, uh, factory, uh, page factory method. So in that cases that we just need to create a just only, uh, create object of page factory, then it will be loaded all the page objects component inside it. So there are 2 approaches we will use for one is for this one, and then we will put the data in XML and JSON or or our our, uh, another things. So that this is a design for framework. Then after that in Jenkins, we will create a joke. Inside that, we will define the 2 different stages. 1 is for the running the Selenium, and then second one is for the creating a report. So, likewise, that, uh, first, we will create a framework for Selenium, then we will integrate it with the Jenkins so that in Jenkins, we will we will give that correct command, then then it will it will be go to that in that way. So so, likewise, I will I will use this is a is it approaches for creating a framework and running it.
How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save? How do you employ manual testing skills to control the amount of data you download and save?
Discuss how you mentor junior tester in automation complex test scenario with an agile context. So in terms of that, how we will mentor our junior tester in automating complex test scenario with an agile context. So in that case, what strategy I will follow. So in terms of that, first we will provide a basic understanding of complete framework means like that for not inside it, but we will provide it like how we will design a feature files, how we will design a steps and how we are calling a method. And then on the basis of that, how the reports are generating and in which folder it is generating and then so and how we are doing it. So basic terminology and then 10 working days, we will provide our juniors to to junior testers to in that way when they have completed and then we will and then we will give one one assignment to them so that they can learn better in that case. So when they have done it, then we will comes to the second approaches. For example, we will assign a one user story to them in which they need to automate some test cases and then and it will be depend on the project to project. For example, if if no feature file is scripted previously, then then we will we will give a one demo. Likewise, like how we are designing scripts and how we are designing steps and in steps, how we are calling a methods and these things because we are using a BDD. So it is a plain language. So it is a Gherkin language. In Gherkin language, we are just only writing a syntax in English format so that everyone can read it in a they don't need any technical knowledge for that. So that we will help them for designing the things likewise or if any complex problems are coming complex test scenario in which we have 10 to 15 steps or validation things we need to validate these things so that we will give one because in these things we have a sometimes we need to validate some text second one we need to select a drop down so drop down and for for these things we have already we will cover in our automation application or automation framework all the things. So in that case, we will we will tell them just to reuse the already written functionalities whatever we have done in our framework so that the guys can reuse it and they can complete it. But some real world scenarios that that is not a it is not possible to complete all the things because sometimes in real environment we need to validate some dynamic level. So in terms of that, that we will we will help them like as for indexing wise okay first we will read a rows and columns on the basis of that either we can get the select the text or we are clicking on some some particular link. So likewise test cases we will we will go and daily daily basis we will put some calendar time like as 30 to 35 minutes we will talk with him with her or with them so that if they have any questions for related any automation queries how they guys are facing any issues then we will we will provide the respective answer for that and if if any if any new challenges are coming in application this application design so that we will we will we will look into it and then we will provide a solution to them. So that is so these are the strategy we will.