 Hi and welcome everyone to this session on automating the difficult real-world multi-user scenarios by Shama Ugly and Ashish Nirmal. We are glad that they could join us today. Without further delay, over to you, Shama and Ashish. Hey, thank you so much Joel. Hey, good evening, good morning, good afternoon everyone. Without wasting time, I'll just quickly jump into the topic. Yeah, so let me ask you this question. Let's start with asking how many of you do not recognize this? Any of these apps you do not recognize? Raise your hands please. Anyone of you that do not know these apps at all? I'll take it as a no and I just want to make sure that this is an interactive session. So please feel free to put your answers on the Q&A session or in the chat. Anything. I'll be checking them and that's how the interaction will be because you're not meeting face to face. So let's start. I am taking this answer as yes that everyone is familiar with all of these apps. Now, how many of you, you know, mostly at least I have spent most of my time during this pandemic with these apps, right? Okay, so Sunil says he's not familiar with Zoom app. Okay. Zoom is again, these are all video conferencing apps people. Most of us use some of the other platform to keep in touch with, you know, our teams to go on conferences, go for meetings, webinars, seminars, right? This is how we are keeping in touch with our teams. So the bunch of apps that I have listed down here is like WebEx, Zoom, Teams, GeoMeet, GoToMeeting. And so at least I have seen during this pandemic the users have gone, you know, very high. And at least I have been using most of these apps even personally and professionally. And I have seen people using this for also weddings, get-togethers, parties on professional end. We do the interviews, webinars, online conferences, everything on these apps today. Could you please go to the next one. So let us all think about some of the common use cases as part of this app. Can you, you know, quickly ping, what are the common use cases that you think you use these apps for? Quickly, people, any common use cases? How do you use Zoom? How do you use Teams, Cisco, WebEx, GeoMeet, anyone of you have used it? Calls, okay, what kind of calls? Video calling, voice calling, correct. So basically meetings, right? Yeah, online meetings. I see a couple of responses here. Anything else you use this for meetings, video calling, audio calling, wedding, okay, right? Right, so if I move forward, I mostly use these apps for, as you all correctly said, I would use this to host a meeting, right? It can be audio only, it can be video only, it can be conferencing, it can be get-togethers, it can be webinars, seminars. I also typically share my screen, discuss ideas with my team. I do file sharing, I send in some text chats. All of these are very common use cases. I would not go launch Zoom or launch any meeting and sit idle there. I'll at least have one person in the meeting, right? So let me now think, how do you want to test these kind of applications? Or before coming to that even, how do you use this? From where do you use this? What platforms? Can you think of different platforms that you can use these apps on? And how do you actually access these apps? Anyone? Mobile, yeah, desktops, correct, tablets, mobiles. So there are different platforms. You can come from mobile, you can come from iOS, Android as an app or on the browser. You also have desktop applications. They are also on all the platforms, right? Now think of a meeting that you're hosting, okay? As a host, you can be on any of these. And as a user, you can join these meetings from any of these platforms. Now, how would you test such an application? How do you want to test it? Just think of functional test cases. How do you test an application where there are a number of users? Someone is on video, someone is on audio, someone is sharing the screen, you're discussing, you're sending in chats, links, images, emojis, right? How do you test these applications? Otherwise, I mean, even after now for testing, you would need some kind of infrastructure, right? How do you, what kind of infrastructure would you need to test this? Device firm, Mac. So all that we discussed, right? We might want to host a meeting as an attendee. I want to attend from a browser. As a host, I want to host it on a browser. As an attendee, I can also use my mobile app and I can join, right? So there are n number of ways, various platforms, medium to actually join a single meeting, and then video, audio, file sharing, everything happens, right? And the infrastructure that you would need is so many. You might need multiple machines or you might need multiple devices for testing. I can use device firm, but can I think of testing this? How tedious it is? Go launch a meeting, attend it from another machine or a mobile, try to validate all the options that you get, correct? So these are all the functionalities, but now let us think of the releases, okay? Very frequent releases we have. We all, I believe, are mostly into agile. We have a lot of frequent releases, hotfixes coming in and so on. Then how can I keep up with all of these kind of tests? Is it easier for me to do all of these testing manually for every build? Of course not. I need to automate, but can I think what kind of test cases can I automate here? Can I automate in a single flow? I say my test cases, I host a meeting as a user, I mean, sorry, as a host, I'm using my web browser and then I'm sending all requests. Someone is joining from a phone, someone is joining from a desktop app, someone is joining from a browser as well. And I need to interact in the same test case. All the users need to interact with each other. Some users will be on video, some users need to share the screen. You need to validate whether everything is working fine. And there are n number of options that you can do as a host, as a guest, as a participant and so on. How do you manage all of that? How do you test this? How do you automate? Definitely you will need to automate all of these because these are the common use cases on day-to-day basis for that app. I cannot just automate login and hosting a meeting. I cannot keep it limited only for these kind of test cases. I definitely need to look forward to automate all the kind of these scenarios where there are multiple users involved in a single test. They are interacting with each other. Correct? So does it sound very challenging and interesting to you all? Right? Yes. So this was even for us, it was really challenging. At this point in time, I definitely would like to go ahead and introduce us. It's me and my colleague here in this call. And just to give an introduction, my name is Shama. And I have been working as a senior QA consultant with XNCO. And I have around more than 12 years of experience so far working on automation test strategies and then setting up DevOps environments and so on. I don't want to take much time. I want to just hand it over to Ashish. I'll let Ashish go ahead and introduce himself. Yeah. Hello, everyone. So I'm Ashish and I'm currently working as an automation test lead at Reliance Geo. And I have around 10 years of experience purely in automation. So let's stay background. Thank you so much, Ashish. So let's begin with talking about how did we actually solve this problem? So this was again very challenging for us. And this was kind of a must-do so that we could cover most of our automation. And we implemented this. Let us have a look at the kind of tech stack that we used. And then we will look into the code and see how actually we approach this problem. Definitely, we implemented this using Java. We used APM to automate all the mobile scenarios, the iOS, Android, and then Selenium for the web part of it. And with APM, you also automated the Windows desktop. So we can have a single test, having users on Windows machine using a desktop app. I can have a person joining in from iOS, Android, web browser, okay. Similarly, host can be on any of the platforms and they interact with each other. We'll see that very shortly. We used APM test distribution. This is again a framework created by Cyan Srinni. They have created this framework to be able to do the device allocation and orchestration between these allocations on multiple post machines. Cucumber is what we use to write these test cases, the VDD framework. VCloud we used for the mobile infrastructure to have all the kind of devices to join from different platforms to the same meeting. And we implemented TestWiz, which is a framework that we implemented specifically to solve this problem. So this framework actually does that orchestration for you between the users in a single test to create those drivers, to handle those actions as a user, simulate all the kind of different scenarios. We will see that shortly. I will quickly hand it over to Ashish who is going to demonstrate this. And people, this is going to be live demo. So if anything goes wrong, please bear with us. Ashish, over to you. All right. Thank you, Shama, for the introduction. All right. So first thing first, I will first show you how, as Shama mentioned, we use the Cucumber, the Gherkin language to write our scenarios, okay. So first I will show you how a typical single user scenario looks like, okay. So here if you can see, I am talking about a scenario where user can schedule a meeting, okay. Now this is something that a single user can do, just like logging log out. So the user is trying to schedule a meeting, okay. So if you see the tags, the tags imply that it is implemented on three different platforms. But when you try to execute it, that would be executed on a single platform individually. At any given tag. So this is what, this is how a single user scenario would look like. Now I will go, I will show you how a multi-user scenario looks like, okay. So here if you can see, we have given a new tag, a special tag for it, where it will be mentioned that this is going to be a multi-user scenario. And we mentioned the platforms on which the users are going to be. So here is if you can see, my users are going to be on Android and web scenario, sorry, on platforms. The other such thing, if at all there is a case where you want more than one users on Android, we would mention it like this multi-user Android. So this would imply that the multi users, more than one users are going to be just on the Android platform. So I will first give you a demo of how this Android and web would look like. So the scenario, it says that host who's on Android will remove guest who's on web platform from the meeting, from the ongoing meeting, okay. So the orchestration that Shama was talking about, what we do is in the initialization steps, we mentioned that host is going to be on a particular platform. So we mentioned it, okay. So if I say host signs up using API logs in and starts an instrumenting on Android. Now this, we would mention the platform just once while you are initiating, initializing any persona. So if I go and look at the step definition of it, it would look something like this. So I have created a user and I am creating a driver. So this driver is basically being created on the test reset. So this is the orchestration that she was referring to. So this creates a driver for a particular persona and the platform that we have mentioned it. In the subsequent steps, if I say, so similarly I am initializing guest user on the web platform. In the subsequent steps, I am not going to mention which platform is the user persona. What I have to do is I just give the persona itself and that would be taken care of. So this is how the typical multi-user scenario that has host on the Android, guest on the web. I would be quickly giving a demo on how it looks like. So if you can see, I have an emulator up and running here and I would trigger this build for it. So till this is initializing all the setup and everything, the APM and everything, the beauty of this framework, the orchestration is that if let's say I want to switch roles, if I want host to be on web and guest to be on Android, I can do it. It's just the way that I have to replace this. I have to switch the platforms that I have mentioned at these two places. So I need not to worry about how the further steps would be taken care of. Just about how what you have mentioned in the first steps. So I will check that as well. So first thing will be going in the host wherein host is on Android. As you can see, it has started signing in. Sign up is already done via API. Sign in is done. And as you can see, it has started a meeting. So it will take some time to load the screen. Once that is done, you will see a web initialization done, web browser initialization. That would be for guest user. So yes, we have a web browser launched. It will click on join a meeting directly. It will pass on the meeting details and everything and it will join the meeting. So as you can see on the Android side, you will get to see that a guest has joined. And this is what it looks like. So the scenario talks about the removing of the guest. So what would happen is this on the Android part, it will, since host is on Android, it will click on the guest. It will remove it. It will say yes. And if you can see the host has now come on the splash screen. So this is how, if you can see, yes, it was successful. So this is how the multi-user scenario would get executed. Now quickly, I will be taking my, would be just changing this that forms for the users, for the personas and we'll try to hit this again and we'll try to see how that works. So I have again triggered. So now Android is going on Android, the guest is going to join the meeting and host is going to be on web. So if you can see the APM settings and everything is done on the Android side. And now first we'll have a web launched, a web browser, right? Okay. Host will be signing in. All right. And it will start a meeting here. Excuse me. And now on the Android part, if you see the guest would join the meeting there. And now host is trying to remove that guest from the web. So this is how the interaction between the multiple users is going to happen. All right. So if you can see the guest has now joined on the Android side, host will now try to remove it. Quick time check. We have a minute to go. Yeah, we are just about to finish. Yes, we can see. All right. So the other one worked as well. All right. So I will be stopping the execution here. If you can see this also successfully got completed. So this is how we would be switching. You can switch the platforms based on the implementation that is done. And we will have, we will see the interaction between different personas and you can perform any actions that you want to test. All right. Back to you, Shama. Hey, thank you so much. That was a wonderful demo. People, if you have any questions, can we take any questions as of now? Do we have time? Yeah, we have a little time. We can go a couple of minutes over time. Okay. So there is a question coming in from Sai. How are the drivers for these persons are managed? Okay. The drivers are managing these drivers orchestrating. Everything is done using testvis. And the actual allocation of these drivers and devices. We are leveraging the methods from ATD that I was discussing. APM test distribution is a framework which helps us to allocate the devices and create those drivers orchestrating between those drivers, between those tests and mapping those to user personas is what we are doing from testvis as a framework. I have all the reference links here in the slides. Okay. You might want to go with it later on. You can check. And these are all open source. So please feel free to use. Is the flow available? Yeah. So we have some sample tests in the testvis framework. So if you want to check that how the tests are implemented and how are we running that with the sample apps, we'll be able to go through that. And if you have any questions, if you feel difficult, you can anytime contact us. Could you have passed the guest host and web Android as data examples and cucumber scenarios? Oh, yeah. There are different ways to implement that. You can. Yes. You can use the personas as well and you can parameterize those as well. You can do that. I would like to add there a point that the readability, the way we have passed it right now, the readability is better in this way that, you know, a guest joins the meeting from Android is as simple as that. Right. I don't have to go and check what the example and what the test data is being passed from the example. So this, the readability here, I would say that it looks better. It is readable and it is easily understandable that which person is going to be on which platform. Yeah. Thank you, Ashish. Any further questions? Okay. I think we are out of questions for now and out of time. So I'd like to thank Ashish and Shama for sharing your experience with us today.