Mobile QA Engineer
BayOne SolutionsIT Consultant
Wings Micro SystemsSoftware Development Engineer in Test
Nykaa Fashion Pvt LtdSoftware Tester
Travel Geeks LLPSenior Software Quality Assurance
ImpactQA Pvt LtdSelenium
Java
GitHub
Jenkins
Eclipse
Apache Maven
Appium
Kibana
Grafana
AWS (Amazon Web Services)
Azure DevOps Server
Could you help me understand more about your background by giving a brief introduction of yourself? You're definitely so, uh, uh, myself, Mohammad. Currently, I'm having around 6.8 year of experience in software testing. Uh, like, uh, so currently, I'm working, uh, with the Nykaa Fashion. Uh, so, basically, Nykaa Fashion is a, uh, ecommerce domain. Just give me a second. Okay. It's working. Yeah. Uh, so Nykaa Fashion is a, uh, ecommerce domain. Uh, those who are, like, uh, dealing, um, selling, uh, clothes product online, ecommerce, just like a Flipkart and Amazon. So, yeah, uh, currently, I'm working, uh, with the ecommerce company that's in EICAGA version as I said. So here are my roles and responsibility with respect to the, like, automation and as well as the functional testing also. So, uh, like, uh, as we are, like, uh, working agile methodology, so our sprint goes for the 2 weeks. So we just fetch the, uh, like, uh, I mean, we just pick up functional I mean, uh, we just pick a a task for the functional testing. They're like they're performing end to end testing, uh, including a back end testing also, like, uh, I mean, uh, including a API testing also using a Postman. And, uh, then we are, like, uh, automating those features for the regression suites. So, basically, uh, I mean, uh, we will have to perform a function testing, uh, as well as the automation testing also. So, uh, like, uh, with respect to the automation, somewhere around 50% bandwidth is allocated with the, uh, automation task, and the 50% bandwidth is allocated with the, uh, function task also. So, uh, like, uh, apart from that, I have a responsibility for, like, uh, monitoring and, uh, like, analyzing the, uh, regression source also. Like, uh, so, like, uh, I mean, uh, we're just monitoring the, uh, regression suite on a daily basis that we are, like, executing. Uh, fix, uh, analyze the, uh, like, uh, failure cases. Uh, fix the, uh, failure case cases. And if any, uh, code improvement is required I mean, in in terms of, uh, code or maybe, like, any enhancement that we are doing into the framework. That is also done by us. And, uh, like, uh, with respect to the others, uh, tools and technology I'm talking about, uh, so that is something, uh, like, um, I have experienced, uh, for the both mobile and app automation using a Selenium Java and APM. And, uh, like, uh, other than that, I have experience to use Postman and, uh, like, a Jira that I'm using. Apart from that, uh, like, I have experience to use Kibana and Grafana for the logging. And, uh, like, uh, I mean, just to check the logs, you can have experience to perform, uh, like, uh, I mean, performing, uh, perform a functional testing for the, uh, web application as well as the, uh, app application also. So, uh, yeah, this is pretty much about me. And apart from that, uh, like, uh, with respect to the automation, uh, that is somewhere around 6 year of experience that I'm having. And, uh, the total experience that I'm having, 6, uh, that is somewhere 6 6.88 year of experience. So, yeah, this is pretty much about
Explaining in terms of both manual and machine testing, how would you test an application response and repeat load condition? Uh, Yeah. Uh, definitely, like, uh, if, uh, we will have to perform a test I mean, uh, perform a application, uh, under the peak load, uh, condition. So, uh, in terms of, uh, manual and automation, what we can do, Uh, like, enough, uh, manual, like, uh, what we can do, we can just, like, uh, generate some, uh, like, n number of error request, uh, while performing a functional testing or a feature testing. And, uh, I mean, we can use either, uh, g meter as well. So, like, uh, we will have to, uh, hit the application with, uh, n number of, uh, request, then, uh, we can check the, uh, like, uh, behavior, what exactly that behavior is happening on the application if the load is, like, increasing. I mean, uh, so, basically, what we can, uh, do uh, so, I mean, either we can use a JMeter or maybe something like that, uh, with respect to that, uh, I mean, um, the application. So, like, uh, we can just hear the, uh, request and, uh, check different end flow, uh, with respect to the manual, uh, testing, I would say. I mean, uh, we'll have to check how the uh, application is performing. I mean, what's the response time of the application, and, uh, what's the app launch time, uh, of the application. And with respect to the automation testing, I would say, uh, what we can do, we can just write, uh, maybe, uh, short or maybe, like, uh, the script with respect to the automation just to perform the peak load. I mean, just to perform the, uh, like, load testing on that, uh, we can just, uh, hit the application or just try to, uh, like, uh, open the application, uh, with the n number of users. For that, uh, we can use maybe some, uh, browser tags or maybe, uh, some other, uh, tools and tools, uh, just to, like, launch a app or maybe launch a website to check the performance of that. And other than, uh, other than that other than that, what we can do, we can just, like, uh, put a load on the back end side as well. Like, uh, so we have some sorts of I mean so, basically, everyone have, uh, like, them there are some sorts of, like, uh, back end server, I would say, in the AWS. So, like, they can they can, uh, increase the load at the back end side, and then they can check, uh, like, how much load the application can, uh, how much load the application can handle it. Right? So, uh, like, there, they can, like, uh, increase the container. I mean, create create the container. Like, uh, they can just try to script to perform like, uh, to increase the load. And with respect to the peak load, what we can do, we can just, like, check the, uh, data. Maybe some, uh, like, Google Analytics, uh, from where we can, like, check how how much loads that we are getting on the peak load. And we can just increase the request to maybe 2 x or something like that just to, uh, like, uh, prevent the, uh, load respond on the application,
How do you ensure the accuracy of data test data for executing test cases, especially when test complex business scenarios? Yeah. Definitely. So, basically, uh, just to ensure the accuracy of the test data for the executing test cases, especially, uh, for the complex business scenario. So what we can do, uh, whenever, like, uh, we are, uh, creating a test cases. Right? So we should have, uh, uh, like, a requirement documents. Uh, requirement documents, I would say, product requirements, uh, details or description that we are getting from the product manager or the project manager. We should have, uh, that, uh, documents, uh, like, uh, before writing a test cases. Right? So we can map, uh, each and every requirement with respect to the test cases so that we can, uh, ensure that key every, uh, like, uh, requirement has a valid test case. And, uh, with respect to that, uh, what we can do, we can whatever the test cases that we will have to perform, uh, like, uh, we can, uh, just create a data, uh, with respect to that I mean, uh, with respect to that data. Uh, so, basically, as per the test data sorry, test cases, uh, we will have to create a, like, uh, test data, uh, like, with all the possible scenarios. Like and right? Uh, so, like, there's only 1, uh, things. Uh, the accuracy of test data, like, uh, we can ensure that, uh, with respect to the test cases. I mean, if we will have, uh, I mean, we will have a test case, uh, get ready before, like, getting the, uh, feature build or maybe, uh, testing build. Uh, so with, I mean, with the help of, uh, test cases, we can, uh, like, uh, analyze, uh, that key, uh, how much testing data is required for the testing and what type of data that is required for the testing. So we can just create the data before that, and then we can perform the testing. And, uh, just to ensuring the accuracy of the test cases and as well as the test data also, that we what we can do, we can just, like, uh, ask the product manager and the QA manager and the dev managers to just to review the test cases, just to, uh, review the test cases. So, like, uh, if any feedback is required, then, definitely, they will, like, provide a feedback, uh, to, uh, like, update the test case or the test data. Right? And, uh, like, other than other than, uh, that, uh, what we can do if, uh, we'll have to, uh, like, perform a 1 single test case with a number of test cases. For that, uh, we can either use a test tested testing, uh, techniques, uh, like, uh, for example, like, equivalence uh, parsing or maybe boundary where is a value analysis that we can use to perform, uh, the testing with respect to the with respect to the n number of data. Uh, by using these, uh, techniques, and maybe this is an table also. Like, uh, we can ensure that we are able to, uh, like, I mean, perform the testing, uh, with, uh, proper data, and, uh, like, uh, we are ensuring key, uh, we will, uh, like, performing the testing with all uh, possible, uh, test data. So, yeah, that's it, I guess.
Discuss the strategy for implementing continuous testing and the ops cycle. A senior QA engineer in this process. Mhmm. Okay. Uh, implementing oh, continuous testing in a DevOps life cycle. Still continue assessing. Uh, so, uh, what we can do, uh, like, uh, if I would say the continuous testing in a DevOps life cycle. So, uh, I mean, we should have something, uh, with respect to the CI side and CICD pipeline or maybe something like that. Uh, I mean, uh, so, basically, if you are, uh, getting any build, maybe, uh, getting any feature, getting any, uh, application or production, something like that, uh, for the build of feature on this server. So, uh, I would say, deploy, uh, the build of feature on this server. So there should be maybe some chunks of code or maybe some unit testing, um, should be triggered automatically. Uh, like, if you are uploading, uh, I mean, um, I mean, if you are, like, uh, deploying a feature on some Jenkins server, so there should be a predefined test cases should be there, uh, I mean, that we can call, uh, like, uh, unit test cases, something like that. Uh, we should have that, uh, on the, uh, like, uh, Jenkins I mean, and those things that we can write, uh, into the Jenkins configuration. Or maybe we can write into the scripts also. So, uh, yeah. Uh, I mean, if we are deploying some features, so, uh, there should be some, uh, chunks of test cases or maybe chunks of scripts with respect to the unit test casing or maybe some more testing. Test cases should be there just to check the, uh, like, initial, uh, phase of the testing, uh, like, automatically, uh, by the Jenkins, uh, so that we can check the initial, uh, phase of testing over there so we can reject the build also. So, yeah, this, uh, uh, we can
So, uh, like, uh, our testing challenges, I would say, uh, I'm facing, uh, into the automation. Uh, there's a a number of, uh, like, uh, challenges that I have faced, uh, while performing automation testing. Uh, whether it's I mean, yeah, basically, uh, I'm I have XP I mean, uh, I have experience for the both, uh, like, app and web automation testing, and, uh, like, uh, I'm writing a script for both mobile and app automation. So, yeah, like, um, I get the, uh, like, challenges, uh, in both the side. So I'll just give you the one on one example, uh, for both the cases. So let's suppose if I'll, uh, talk about the app testing. So, uh, what we are do I mean, uh, what is the challenges that I have faced? So, uh, like, on the app side, uh, earlier, like, uh, we are used to, uh, like, perform, uh, I mean, I would say log in using a email and password. Right? So, uh, for that, uh, we have stored a login password into the proper needs file, and, uh, simply, we are, like, uh, able to log in it. Uh, but, uh, like, soon after that, uh, like, team is, like, they started using or maybe migrate. I mean, basically, uh, they was migrating, uh, into that mobile number plus OTP thing. So so whatever the regressions or test cases that we are having at that time, that will start failing, uh, because and because, uh, like, uh, um, data cases were, like, uh, um, written into the uh, email plus password things. And, uh, I mean, uh, on the OTP side, uh, OTP side, uh, what is happening? Like, I mean, the OTP is, uh, I mean, uh, if you are entering the mobile number and hitting the, uh, submit button for the OTP. So, like, if OTP is, like, uh, coming every time in the OTP writer. So these are quite challenges for us to automate, uh, the login scenario at that time. So what we are doing, we're just, like, uh, sort I mean, short district some, uh, like, uh, default number, and, uh, we are storing a static static OTP into the back end. So every time, uh, when we are, like, having a I mean, we are trying to log in, so we are using the same, uh, OTP, uh, from and that. Other than that, like, uh, we are performing a a b testing. So a b testing is something like we are checking on to a different screen, like old screen or maybe new used screen, I would say. I mean, we are just checking, uh, or maybe analyzing the, uh, like, any I mean, we are just checking the performance of the 2 different, uh, UI of the same, uh, feature. Right? So, uh, and, generally, a b experiment is running on the a b thing. Right? So that experiment is totally, uh, depend on the certain ID and, uh, because we never know, like, uh, uh, while while, like, uh, launching the app, I mean, we're going to the app, uh, on which experiment user will get logged in. Right? So it's totally, uh, depend on the user side, user's experience, user behavior. Right? So, uh, you know, I mean, it's quite difficult to automate both the scenario at the same time. So what we have done, we have just, like, uh, like, making some changes into the remote config using, like, config files, uh, into the app site. So we have created a a new APK, uh, for such features, then we are, like, uh, able to perform the testing or able to, uh, like, uh, write the automation scripts with respect to those features. Apart from that, on our website, like, uh, we are, uh, having issue with the login, just respect to the login and capture. So for that, uh, like, uh, we are using a session case. Uh, we are writing a method and, uh, using a static session ID to log in on the website. So, yeah, that's it.
Okay. So explain how would you approach testing a mobile app's compatibility with different version of operating system. Yeah. Definitely. So, like, if we are performing any app, uh, I mean, if you're performing a testing, uh, on app, so what we can do with respect to the, um, mobile app compatibility? Uh, definitely, we will have to check the versions of the operating system. If any feature is like any feature that we are rolling out, we will have to ensure that that feature should be, uh, working on every possible operating system that is available into the market. For that, what we can do, we can, uh, just to, uh, like, check the Google Firebase. I mean, if the people are, like, using a Google Firebase, so Google Firebase is something like, uh, I mean, uh, we are having a data of the, uh, like, uh, user base user percent I mean, user base. I mean, uh, what type of user that we are, uh, interacting on our application. So that data that we can get from the Firebase or with that, we can get from the Google Analytics team. So because those teams like having a data, uh, with respect to the mobile devices, with respect to the OS version. Uh, so, like, uh, with respect to that data, we can just, like, uh, uh, shortlist 10 most app I mean, test most, uh, useful devices or maybe 10 or maybe 20 devices that is helping, uh, uh, more number of users. I mean, I mean, uh, the while choosing a devices, we should ensure that key, uh, I mean, those devices that we are choosing, uh, that should have, uh, like, uh, most user base that is using our applications. So, uh, with respect to, uh, that, we can just perform a testing. I mean, uh, because, uh, in market, there's a number of versions of applicable. Right? So, uh, or, uh, other than that, what we can do, uh, let's suppose if any feature is building, uh, on the, uh, like, Google, uh, any and, I mean, any feature is developing right, so what we can do, we can just perform the testing on the car I mean, on the, uh, new OS version. I mean, maybe with a OS version or the Android version. Uh, irrespective of that, we will have to perform the testing on the, uh, like, the version currently is operating into the market. We can go, uh, like, do the past, uh, I mean, the last 5 version was available in into the market. So these also are the things that we can, uh, like, uh, like, we can, uh, I mean, we can, um, like, uh, think about it. Right? I mean, we can just, uh, do the testing with respect to this also. I mean, either you can just check the updated version or maybe the last 5 or 6 version. Uh, but, uh, you will have to check the user percentage, uh, I mean, user base, uh, with respect to your application data, like on which, uh, version I mean, on which devices most of the user is available, you will have to shortlist maybe 10 or maybe 20, uh, devices or version. Then you will have to perform the testing.
There's a logic error that's caused t test to always pass even if it's so, Phil, can you spot and explain what is causing the issue? Okay. Trevor is equal to webdriver.com. Trevor dot get to dev test login. Try. Trevor dot find element for your ID login. I dot click. Yes. So welcome. User. Okay. In driver dot page source. Accept, uh, exception as e. Print test passed. Yeah. I think, uh, the logic, uh, is written in I mean, uh, the, uh, so, basically, uh, the code is written in, uh, the Python. So, basically, they are just simply invoking the Chrome browser. They're, like, uh, hitting the URL. Right? And, uh, they'll try to find the element using ID, and they're performing the click. Right? So, uh, while performing the click, uh, they're not going to basically, uh, the assertion is, like, uh, I mean, they just put the assertion. Uh, I mean, they're using some text. Right? Welcome users. But before, uh, I mean, uh, checking the assertion, right, uh, you will have to, uh, like uh, I mean, uh, you will have to get the text or I would say string. I mean, the text string that you want to, uh, put into the session, you will have to, uh, find it, uh, using a element. Uh, for that, you will have to add 1 more. So, basically, there is a one more missing after, like, uh, performing a click action. So whatever the test that you are coming, and that you will have to, uh, locate it, then you will have to, like, get the text. And that text, you will have to pass, uh, into the assertion. Uh, for that, you will you can use asset dot asset, uh, like, not equals. And, uh, within that, you will have to pass both the, uh, like, text. I mean, whatever the test that you are getting and what is the expected, uh, I would say, uh, text you are expecting. Uh, on behalf of that, you can, uh, like, uh, add the assertion. So maybe this is the way that is, uh, like, uh, passing the test cases every time because you are not fetching the text, and you're just, like, passing a one text into the assertion. So it will pass always. Yeah. Definitely. And, uh, we are, uh, printing the test passed. And if you are getting a exception, um, s e, I mean, we are just putting a exception also. Uh, so if you are getting exception, then you will have I mean, we will have to, uh, make the changes into the, uh, like, exception condition, uh, like a print test pass. Right? We will have to, uh, change this statement also. So, yeah, this is, uh, I think, uh, the issues that we can
This segment of Java code m to apply the singleton design pattern. This should be a potential issue that could prevent it from work as a proper singleton and verify and fix the, uh, fix suggest suffix. Public last data is going to private test. Instance is equal to private Get instance. Instance is equal to new database connector. Instance is equal to ness null, and it's gonna go to new database connector detail. T10. The segment of the Java code aims to apply the singleton design pattern. They are seen in situations with their equipment. So, proper singleton can identify the problem and suggest a fix. Database. It was going to dot get instance. Okay. So I think, uh, like, uh, while in this code, uh, what we are having, we are just, like, uh, having the issue with respect to the database connection. Uh, like, at the end, uh, we are, like, writing a code for the database, right, to connect the database. And, uh, before that, we have already put a condition, uh, using, uh, like, uh, I mean, instance equal to, uh, null, then we can, uh, like, uh, uh, message a new database connection. I mean, we're just creating 1 more, object, uh, into that, and then we are returning returning the instance. Uh, so just before that, you will have to write a code for the database, uh, so that, uh, my I mean, that, uh, might so, basically, uh, might be that, uh, can we work? Private static. Okay. So there's a 1 more issue, I guess, I would, uh, say. Uh, so we are using a, like, um, we are creating a variable of the instance using a private static key. Right? Uh, so, basically, it's a private, then you cannot use that variable directly. You will have to, like, uh, use the getter setter. Uh, I mean, use the getter setter, uh, then you can use that variable. So this is also a problem, I think. So, yeah, this the things that we can fix, then it will, uh, start working
I think the scripts that are adaptable to change in the application interface over time. How do you approach writing test scripts that are adaptable to change? Oh, okay. How do you approach, uh, writing test scripts that are adaptable to change in the application interface over time? Okay. Uh, so I think, uh, for writing a test scripts are adaptable. Right? Changes in the, uh, applications interface over time. Maybe we can, uh, do a modernization breakdown on your test script into the modular component that represent a different functionality. Maybe the feature of the application is make easier to update or to be, uh, replace individuals modular. And, uh, or we can, uh, use page objects. Uh, we can, like, implement the page object page object. I mean, design pattern, uh, where each page of the application is represented by the separate class. Uh, all this abstraction help isolate the locator interaction with the UI element, uh, like, uh, making it simpler to update them if the UI changes. Then, uh, you can do a parameterization. Uh, your test scripts to separate the test data from the test logic. This allows you to easily update the test data without modifying the test script itself, uh, like dynamic locator whenever possible. Use dynamic locator, uh, that are also, uh, prone to breaking and the application UI changes. X pattern is selected with the attributes, uh, like, uh, IDs, classes, or maybe, uh, attributes like ID customer, we need a test test ID can be more robust or or then relying solely on static locator. Uh, we will have to, uh, like, do it regular maintenance regularly and update your test scripts. So as the application evolves, uh, or we can, uh, make the changes into the UI into your in into our test to ensure that they remain accurate, effective, or we can do a burden control also. I think that so this that how can we do it?
Given the requirement to the ultimate performance testing, what tools would you choose and how you did the reliability of the performance release result. Okay. Miss, what I have a question, asking the question. Okay. So, uh, for the, uh, automate performance testing, so, uh, what the tools? Okay. So, definitely, uh, we'll have to use a JMeter. And, uh, with respect to the reliability of the performance results, so what we can do so every time I mean so, basically, generally, uh, like, application have their back end services. Uh, so, uh, you can just make the, uh, I mean, uh, create the containers at the back end side, then you will have to, like, uh, put a load, um, into the back end server. And then you can check, like, uh, how much load your, uh, service, like, server is, I mean, uh, bearable. Right? I mean, how much load, uh, that your server is, like, able to handle it? And, uh, for that load, what you can do, you can just find the data of, um, like, uh, from I mean, find the data from your, uh, like, uh, from your Google Analytics team. They will, like, uh, give you the data, like, uh, what is, I mean, uh, what is the load? Uh, maybe how much users, like, interacting, uh, with application at the peak time. So while performing the performance, uh, testing, you will have to make sure you are, like, performing a testing more than that. I mean, you will have to, uh, make it a 2 x. I mean, we I mean, uh, 2 x of that number. I mean, just to check the, uh, load in into your application. So and, like, how you like I mean, this is how, uh, you are, like, uh, delay related or maybe, like, uh, you can, uh, perform on the testing with respect to that data. So from I mean, into the another time, uh, that will not that that will not be impact your, uh, like, application in future because we are having a data and you are, like, performing load testing with respect to the two x of that number. So this will help your applications to perform very well if the load is increasing more than
Okay. So what is the approach to automating security testing, especially for the mobile application? Okay. So, Frank, I would say, uh, like, for the automation security purpose, uh, what we can do, we can just, like, uh, check the, uh, I mean, uh, the, uh, I mean, applications, like, whatever the, uh, request that we are passing, into the application, uh, so that all should be secured, uh, for that. Uh, so, basically, whatever the back end request that we are using, whether it's a mobile application, maybe, uh, like, uh, web application, uh, all those, uh, like, uh, I mean, all those, uh, like, request should be secured uh, using, like, uh, SSL proxy and be, um, SSL socket layer. I mean, we will have to, uh, put a security while developing something at the client side or maybe at the back end side. Apart from that, uh, we can have, like, some, uh, other tools also, like some, uh, cloud first things that we can apply at the back end. Uh, so whatever the maybe a request that we will having at the at the back end or maybe whatever the request that we are passing through the client, uh, that should be passed through, uh, that layer. So that will rectify the, uh, like, any, uh, issues, uh, on your application. Or apart from that, uh, we can just try also. Like, if any, um, random API, you may be some, uh, like, suspicious APIs trying to, like, uh, hit your API and we hit your page so that we can I mean, we can just, uh, prevent, uh, them, uh, to use that page, uh, with respect to the n number of requests? I mean, we should have a, like, uh, limiting or immediate limiter thing. So that is basically happening on the back end side. At the front end side, uh, like, uh, we are not doing anything. Uh, I mean, with respect to the rate limiting, I would say. Apart from that, what we can do, uh, we we should, uh, make sure that whatever the request that we are passing from the client side, uh, that should be passing, uh, like, uh, appropriately, uh, like, whatever that request that we are passing using a header and we like, uh, header and we just and body. Right? That should be passing in a correct way. Uh, we will have to test, I mean, using a different, uh, like, different parameter, I would say, or maybe incorrect, invalid parameter. So whatever the, uh, testing that we will have to perform with respect to the back end and the front end, we will have to perform very, uh, properly testing, uh, with respect to the, uh, integration testing. Uh, we will have to perform, uh, we will have to check the client side and the server side things also. Uh, I mean, let's suppose if we are checking some, uh, pages, something like that, so we will have to make sure key, uh, we will have the, uh, client side validation and server side validation also. So, yeah, this is the thing that we can, like, approach for the