profile-pic
Vetted Talent

DIVYANSHU SINGH

Vetted Talent

Proficient Automation Test Engineer with a strong background in Manual and Automation QA, team management, and test automation.

Skilled in utilizing Selenium WebDriver, NUnit, and Extent Report to deliver efficient and reliable test automation solutions. Experienced in implementing and maintaining the Page Object Model (POM) & Data Driven Framework to enhance test maintenance and reusability. Proficient in programming languages including C# and Java, enabling seamless development and execution of automated tests.

Well-versed in performance testing, API testing, database testing, manual testing, and functional testing to ensure comprehensive software quality assurance with different set of tools available. Proficient in utilising JIRA, Asana for issue tracking and good in developing strategic test plans and strategies. Can gel in easily with Cross-functional teams.

  • Role

    Automation QA Engineer

  • Years of Experience

    6 years

Skillsets

  • SQL
  • Automation Testing
  • C#
  • API Testing
  • Debugging
  • Database Testing
  • Core Java
  • Regression Testing
  • Functional Testing
  • Performance Testing
  • Strong Communication
  • Issue Tracking

Vetted For

8Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Senior Quality Assurance Engineer (Hybrid - Gurugram)AI Screening
  • 62%
    icon-arrow-down
  • Skills assessed :Excellent Communication Skills, executing test cases, Manual Testing, Mobile Apps Testing, Python, QA Automation, test scenarios, writing test scripts
  • Score: 56/90

Professional Summary

6Years
  • Dec, 2021 - Present4 yr 5 months

    Automation Test Engineer

    Techbit Solutions
  • Dec, 2017 - Dec, 20214 yr

    Quality Engineer

    ElectroTech Engineers

Applications & Tools Known

  • icon-tool

    Selenium WebDriver

  • icon-tool

    NUnit

  • icon-tool

    GitHub

  • icon-tool

    Asana

  • icon-tool

    Visual Studio

  • icon-tool

    Postman

  • icon-tool

    JMeter

Work History

6Years

Automation Test Engineer

Techbit Solutions
Dec, 2021 - Present4 yr 5 months
    • Effective test automation using Selenium WebDriver, NUnit, and Page Factory Model.
    • Proficient in C# and Java for developing and maintaining automated test scripts.
    • Conduct performance, API, database, manual, and functional testing. Expertise in JIRA for issue tracking and team collaboration.
    • Develop and execute comprehensive test plans and strategies.
    • Manage test teams to ensure high-quality deliverables.
    • Working with XPath, CSS & other locators
    • Optimize Page Object Model test automation and maintenance processes.
    • Ensure efficient test coverage and defect identification. Align with project goals, meet timelines, and drive continuous improvement.
    • Experienced in deciding Test Requirements, creation of Test Cases, executing Test Cases and analyzing Test Results, reporting and defect tracking.

Quality Engineer

ElectroTech Engineers
Dec, 2017 - Dec, 20214 yr
    • Understanding functionality and writing test scripts.
    • Proficient in Functional Testing, Regression Testing, Compatibility testing, System Integration testing and Agile Testing and creation of Traceability matrix.
    • Execute Functional and Regression Test Scripts.
    • Generating reports of Automation Script Execution and modifying the script according to the requirement
    • Used Visual Studio and Selenium to manage the entire testing process.
    • Creation, updation, maintenance of scripts using Selenium WebDriver
    • Thorough knowledge on SDLC, STLC & Testing Methodologies
    • Detecting bugs and classifying them based on severity and priority.
    • Good analytical, problem-solving skills and always eager to learn new technologies.
    • Willing to work under tight schedules.

Major Projects

3Projects

PowerHub Technologies

    Allows electrical engineers and designers to track of installation or uninstallation in Semi-conductor fabrication facility. Acts as an electrical circuit assigner tool.

ThesisCloud Technologies

    Provides one stop solution for all types of university and academic institutions needs related to admissions, billing, financial aid, registration, reports, system manager and other tools.

Metro Bank Technologies

    Bank operating in the Financial Services Industry in Europe, dealing with retail banking, commercial banking, insurance, loans & mortgages.

Education

  • Bachelor of Engineering (BE)

    Panjab University (2017)
  • Intermediate

    St. Thomas' College (2013)
  • High School

    St. Thomas' College (2011)

Certifications

  • Selenium WebDriver with C# - Nunit Framework

    Udemy (Feb, 2024)

AI-interview Questions & Answers

I have 6 years of experience working with C# Automation, Selenium WebDriver, and Java. I worked in TTD frameworks, hybrid frameworks. Apart from that, my responsibilities include day-to-day test automation of test cases, maintenance of the automation framework, including I also do some amount of manual testing in which I execute the test cases, write the test cases. In my current organization, I'm working as a test lead, wherein there are 3 testers who report to me over the total of 4 projects that we have in our current organization. Apart from that, I've completed my engineering from Panjab University. Moving on to my experience, I was working in Dehradun with the Creations. And after that, I'm currently working in Mohali with Technet Solutions, wherein we provide services to Intel. I am working on the client side. I face the client on a daily basis. I do some amount of demo as well. I am regularly involved with the sprint retrospective and sprint planning sessions. So, these are my regular day-to-day activities. Apart from that, there's one more thing that I dedicate myself to on a daily basis is sorting and training the juniors as well because I have experience with performance testing, database testing, API testing in Postman, JMeter, and Microsoft SQL, MySQL. So, these are some of the tests some of the testings that I have to regularly train my juniors as well who work in other projects in the same organization. Right now, we are working in C# Selenium WebDriver with CICD and Azure DevOps. So, that is a framework that myself and one of my colleagues have worked to design. And, we are still building some of the test cases because it's newly designed. We have incorporated these more test cases, and now we will be moving towards the regression test cases. That is, my current day-to-day activities.

When constructing test scripts for automation, I think the question is asking how to manage dependencies between test cases. How do you manage it? Do I build independent test cases or dependent test cases? You know, let's have the home page and from the home page I want to navigate to my application. I'll take an example of the panel page, panel module, and inside that, there is an edit panel page. So if I have to go to the edit panel page, I will try to create independent test cases. The reason for that is, well, we have a couple of reasons. The major reason is that if any of the previous test cases fail, all of the test cases will fail and be falsely marked as failed. That is one of the main reasons you should not create dependent test cases for reliable test execution. Although the speed gets slower with that, we then have the parallelizable or parallel functionality in Selenium that can help us with that. I personally prefer and I advise this as well to myself and to my teammates to create independent test cases. And how do I manage that with the help of utilities? One of the major things that I focus on in my framework is creating generic and overloaded utilities that help drive good test cases that are easy to understand.

Should come based testing. Sorry. Automation approach here. So I think, can I see your thoughts on it? Test results. Okay. So I'll share a recent example. You know? Like, we have just moved from cookie-based authentication, like, Intel server authentication to SSO authentication, you know, single sign-on with Microsoft Azure AD. So once that was done, all of our test cases were failing because of the new login system. And the intricacy with that was that the test cases, you know, let's just go through the flow. When I entered the application URL, the URL got entered. As soon as the JavaScript was loaded, it redirected us to SSO username login and then to password login and then to the application. On the final stage, it redirected us to the application page. We again had to do a hard refresh to get all the functionalities of the application going. So there's an issue with the application, but then we were working on the same. So how do I create a test case for that ends in C# Selenium in Java Selenium? So, you know, we can just do a normal login. And then after that, when we had to hard refresh the application, I had to create a utility for login and do all the stuff that is needed. That is taking almost 30 seconds to get over with. So, you know, and that's happening with all the applications. So that's what I did. And there was one more thing. Our applications, I'll just go through the complexities. Not exactly the test results as well, but then our test cases run on Intel servers. So Intel VMs, you know. And when I was running it in my local, it was working fine. The screen sizes, like, the particular 15.6-inch screen size. It was running normally. But then on the Intel servers, all test cases were failing. We were quite unaware of how do we sort this out if it's running fine. And you cannot exactly debug it in the VM because you're not allowed access. You can only deploy it, and it runs on a different VM. So how do you finally, what we did, we used Chrome options, and we zoomed out by 60% and then started working fine. So that was something that kept us confused for quite some time. Some more complex testing scenarios were included while there was a pop-up that comes up like a motor box that comes up while updating a tool electrical tool that we have. And when the changes are saved, there's a toast message that comes at the top, the bottom. And then when we have to verify that, the toast message. And when we click on the close button, the same is updated in the background grid after 3 or 4 seconds. So we had to verify that, and this is something that we had to use with explicit waits and fluent sessions. So, these are some of the regular challenges that we face with automation and maintenance and everything because the application is progressing at a very fast pace.

Testing mobile apps compatibility with different versions of operating systems. So, see, with the help of this Android development suite and APM, what we can do is, we have an example of choosing the different operating systems. You know, something like Sauce Labs that we can always run our tests on cloud servers with different operating systems and different screen size and all those things. So we have that in Android suite. What we can do is, you know, just given the parameters in the JSON that we have to run on and then just, you know, run our tests with the required operating systems and the required screen size and all the permutations and combinations that we need. Now, explain how to do a test demo. With the help of a simulator.

Can Okay. So let's go for a hybrid framework. Let me just divide it into sections so that it's quite easy to understand. So, I'll go with the page object model in APM with the hybrid framework that is a data-driven framework. And in the first layer, in the first folder or the package that we have, sorry. We will use our page objects. So that is, like, the first layer that we have. For every page, we will have one class. Inside that class, we will have small functions or whatever we want for the functionality, basic functions, you know, not very long functions. Then in the second layer, we will have the page objects or the page elements. In the second layer, we will keep the test cases. You know? And on top of these two is the base class, the where the driver initialization is happening and, like, all the functions of the class, like, maximize and all those things are happening. Not maximize in the mobile application. But then the driver initialization and the APM framework and the reporting is being set up. So that's happening in the base class. That is at the top of these two. The second layer will be the test cases free layer where we'll have one class for one class for, one class for each page containing all the test cases. So this is the second layer. Then in the third layer, we will have the utilities, wherein we can have all the generic classes, like, you know, all the utilities that we have that we want. Getting the JavaScripts or anything that we have that we want. Thirdly, we will have the test data. And inside that test data class, we'll have the JSON and all the excels that we want. And in the fourth layer, we can have the reporting framework with the extent for extent report, extent HTML report, and the reported unit. so, yeah, like, this is how we'll decide divide our frameworks for the automation architecture. And we can have database logging as well involved in this with the help of database log class. With the help of which we can, you know, record our results in the in the database as well. And email notifications, all these things will be in the utilities. So yeah.

I want to ensure that you test data. Executing test cases, especially when testing complex, accuracy of test data is okay. So, executing test cases. That's interesting. Well, the first thing I would do is contact the BA and the developer. You know, that's not what I would do. This is usually what I do on a regular basis, contact the BA and the developer, and maybe ask him some questions about the unit test cases that he has written, because that is the first layer where he has handled the null exceptions, using a question mark and C# for that. So, this is how we have checked for the accuracy of code and the test data. The second thing is, while providing the test case and the test data and the automation test cases, or if we do it in a manual case as well, we'll just put our test data in a file and write in our test cases. We have one column for test data. We will put in our test data there and go ahead with the test based on that test data. Now, as a tester, I have good knowledge about the application, the ticket that I am testing, and the impact that it will have and why customers want it. So, we have the basis for that as well. We can acquire some valid test data from the business analyst as well. And because we are testers, we have logic on how to decide the test data. What is a positive test case? What is a negative test case? What is an extreme test case for any functionality, for any test case test execution scenario? Now, we can also use some techniques like border value analysis, wherein we provide border case values for testing the functionality and how robust that functionality has been built. With the help of teamwork, I can convert good test case execution to excellent test case execution, while testing complex business scenarios. Now, testing complex business scenarios is just like because we built this application for Intel. We have four applications there. Most of them are in Intel. And in that, we usually do this on a daily task or testing complex business scenarios in electrical engineering scenarios because that's for electrical engineers.

In the following, just ask why the function does not correctly update that term. Okay. JavaScript. function displays a profile user get element by ID user profile. Users. Just logged in. User.name. Age.user.netelse provide element dot inner text. User.nameanduser.age. Okay. Please log in. Display is a profile. Is logged in true, common name. Going through. She's a doubt. It is locked in. Where is this locked in? When I'm doing this, let profile element equals to document dot get element by ID user profile, In this user profile in this user profile, am I sure I have this ID by user hyphen profile? Because if I don't have that, there will be an error and then profile element dot inner text. I don't think so. We can store. And are we printing it? Update that on. So I think there's there's an issue with the with the identifier user profile and then profile element.text that we are using.

Explain the Python code related to a cellular logic error that causes the test to always pass, even if it's supposed to be. What is causing this issue? That causes always to pass, okay? Okay, driver.grow, driver.getExample.login test.login.try.driver.findElementById.login.click.assert.welcomeUser and driver.baseSourceException Exception.exception as e. Well, so if we are saying that if the test is passing, so we are saying if the test is passing, that means I will assume that the assert is passing. So the assert is passing when we are on the login page. So in the login page, we have welcome user in the page source. So I think we should have, if we have actually logged in, we should have welcome, you know, the name of the person, the user, let's say Divyanshu, welcome, Divyanshu. By login, if we have welcome user in the page source or in the page, then this will pass. Now if I assume like, you know, the test is always passing. So let's assume like it's going to the exception. So in the exception, we also have, you know, like a print test passed. It will give us a view, you know, it will make us think that the test is passed, even if there's an exception. So it's like a try, catch block, yep. So this is the issue.

So this is what I was talking about. Like, you know, this is because our applications are, like, you know, very changing at a very fast pace because of Intel's demand or their requirements. We had an existing framework, and we had to overhaul that framework because of the application interface changing, and everything was changing. So if the application interface is changing, that means the locators are changing. You know? Simply means that. So, how do we go ahead with this thing? So what we did was we took two measures. We took two measures. Number one was writing generic locators using experts this time. Like, let's say, something that we feel will not be changed in the coming times as well. So for example, I have a login button. So I have a class called login button, the name is login, and the ID is button. I am pretty sure in that page there will only be one login button. So for that, I'll choose the ID because there's only one ID like button. Or I'll choose the XPath. With the help of XPath, I'll say contains. What I mean is contains the login button. I think one attribute is the login button. So I'll use that attribute which is not prone to change, and that is generic, and that will be used with the help of contains. This is something that is more sustainable and going to last longer instead of just using going from parent to child, element and then to some other child element that is more relative and more prone to change even with a slight change from a developer. So that is one thing. The second thing is we created utilities where if we are to get a table, we will create a utility for that, and we will use that utility instead of getting the elements of the table in the page object model, in the page object class, we will call that utility and we'll get the task done because that is a generic class and that will always work even when there are 3 columns and 4 rows or 5 columns and 10 rows. So, like, these are the two steps that we took. The third thing we did was to try to create and work with metadata, wherein we framed the framework in such a way that even when there's metadata, like lots of data or things that are coming our way, it will work in spite of that. So, these are the three steps actually that we took to get

And this is the testability of a new feature. Okay. So, how do I assess the testability for a new feature? That's a good question. And your testing strategy accordingly. Okay. See, this is one of my habits that whenever I test any feature or any bug or retest anything, I do it in the UI, make sure the functionality is right, and then I go ahead and check it in the SP view or the table as well. Because I've been doing it for so long, it's now a habit now. And we have one application called Flash in Intel wherein we have no UI. We have APIs. And if we use Swagger to run that API, sometimes Postman as well. We verify that we have to verify the results in the database only because there's no UI for that and you know? Like, we are still creating reports, but then there's no automation done in that right now. But we have to do that manually. All the database testing is there. And it's quite a big API. So, whenever I look at a task, I do two or three things. I check the impact of the task, like, on which pages and which modules will be affected? What are the affected areas? Number one. And then I check that in cross application as well because I told you, our applications are dependent. And then I do it in the DB as well. Of course, if it's good in the UI, it should be good in the database. That's how I go about with this thing. And I make sure to usually have a call with the BA and the developer for about 90% of the tasks that we have. Because what happens is, the BA gets a fair idea of what the customers want and what they're expecting and what to keep track of while getting this done. Because based on one functionality, there will be another functionality tomorrow and then another functionality based on that tomorrow. So you don't want this to be broken again and again. Or, you know, you want this to be stable, very stable. So keeping that in mind, the developer has developed the task, of course. So then I go to the developer and ask them what they've done and just an overview of the code, with the unit test cases as well. So just to keep in check, what has been covered and what has not been covered and what can be a good test scenario to break down this task. And what is an acceptable test data? What is not an acceptable test data? So this is how I go ahead and plan my test cases with almost all of the tasks that we have.

That's a good question. Automating security testing. I have to be honest, I don't think so. I have worked on security testing. Like, by security, I mean penetration testing or SQL injection or something similar. I mean, security testing. It happens more in the banking and financial sectors, where we have session expired, session timeouts, cookie expiry. So, how we do it is, we test time out expiry and all those things. We use Postman and JMeter, copying cookies from today, and after one or two days, we hit an API using those cookies to check if they should already expire. That's what we do. I have not done penetration testing.