Monday, October 31, 2022

I'm Open to Mentoring the Software Test Engineers

 

Hello!


I hope you are doing well.  With this blog post, I want to let you know that I'm open to mentoring Software Test Engineers from this November 2022.  I will have a minimal fee for the mentoring that I do.  If the fee is bothering you, do not worry!  You move forward for The First Catch Up.


The First Catch Up

Before we start the mentoring sessions, I would like to listen to you until I and you get an insight that we have listened enough.  From the discussion and listening, it will be evident to us whether can we pair up in the mentoring session or not for the time being.  If I see that you need mentoring from another orientation, I will connect you to the appropriate mentor.

This is to assist you better and to let me know how I can assist you.  For the first catch up, we can connect on a call.  Please use below QR Code to connect on Telegram.  If you are not on Telegram, I'm just one email away. Here is my email -- ravisuriya1 at gmail dot com.



My Telegram ID to Connect for The First Catch Up


I and Mentoring


I have been a hands-on Software Test Engineer for 15 years now and continuing my practice.  In my practice, I have put myself into different contexts and demands of software development and engineering.  Working with a two-member organization, start-ups, and enterprise organizations, I understand the dynamics of engineering and can adapt to it.  

In doing so, I  have tested and continuing my testing with the monolith, microservices, and distributed systems.  Put me in any domain and seam (layer) here, I can test and automate here by learning what is needed.  I can share this learning and practice of me with you.

Do you expect motivation from me?  I'm motivated and I will share what is motivating me.  To keep my motivation up and consistent, I'm disciplined.  I look to commitment in your discipline to be motivated to take both of us forward.  It is our job and not just of you or me.

This keeps me up and high and not the minimal fee that I take from you.

And, do not stick on to one mentor. Find your mentors with contrasting thoughts and practices.  It helps a lot.



How and the New Beginning, Not the End


Anything has to be time-bound and with milestones to accomplish.  When I'm mentoring with defined and evaluated milestones, we will be along with the time.  Though mentoring does not come to end, the picked activities have to see a new beginning and challenges, rather than continuing the same discussions and practice.

If we are not seeing this, then we have something not going right for our goal.  We will be evaluating it consistently week-on-week.

It is not about seeing the results.  It is about understanding where we are in seeing ourselves in where we have to be.  It is a journey. The result that we experience is just one minute part of this exploring journey

In simple, we will be outside of our comfort zone!  I said, ours comfort zones!



The Fee

As I mentioned, you will have to pay a minimal fee monthly basis only if you choose me to mentor you and we both work together in this activity.  It is a minimal fee that I will tell you on connecting.  There is no fee for The First Catch Up.

Why the wait?  Let us catch up and listen to each other.


Thursday, September 22, 2022

WebDriver: Tracing the Interface WebDriver - Part 2

 

In the previous post of this WebDriver series, I shared a gist about what WebDriver does and how.  In this blog post as Part 2 of this series, I'm sharing a bit more details on WebDriver and RemoteWebDriver.  

From there, we will see how AppiumDriver is related to WebDriver -- which extends the interface SearchContext.

This blog post is written as part of 21Days21Tips from The Test Chat.  The tip shared in this post is to know more about WebDriver internals and how it associates with RemoteWebDriver and AppiumDriver.

This should help in understanding the Selenium APIs better and from where it comes.  This helps in having a better mental model of the Selenium WebDriver and how we want to structure the instructions in the tests and utilities we write


SearchContext and WebDriver



Picture: Representation of SearchContext and hierarchy of WebDriver


  • The SearchContext is the parent interface in the WebDriver hierarchy
    • The subinterfaces of SearchContext are
      • WebDriver
      • WebElement
  • This SearchContext defines two methods
    • findElement(By by)
      • Modifier and Type is: WebElement
      • It finds the first WebElement using the given method
    • findElements(By by)
      • Modifier and Type is: java.util.List<WebElement>
      • It finds all elements within the current context using the given mechanism
        • NoteI'm referring to Java APIs of Selenium in this blog post
        • More details of this can be found here.

Note: Selenium's Ruby client describes the Interface SearchContext as this.  


The WebDriver provides the below methods:
  • close()
  • findElement(By by)
  • findElements(By by)
  • get(java.lang.String url)
  • getCurrentUrl()
  • getPageSource()
  • getTitle()
  • getWindowHandle()
  • getWindowHandles()
  • manage()
  • navigate()
  • quit()
  • switchTo()

More details of these methods can be found here.


RemoteWebDriver and AppiumDriver


Further, we see the class RemoteWebDriver implements the interface WebDriver.  Today, the WebDriver and RemoteWebDriver communicate using standard W3C specifications.

That way, all the modern browser which adheres to W3C specification should not have (much) trouble when using WebDriver and RemoteWebDriver to mimic the user action on them.  We see the ChromiumDriver(), ChromeDriver(), FirefoxDriver(), Edgedriver, SafariDriver(), and OperaDriver() extending the RemoteWebDriver.

This hints us to know and learn:
  1. Why do we initiate the WebDriver for first
  2. And, then we instantiate the browser's driver
  3. Later how we use WebDriver's instantiation to drive action (mimic the user action) on the browser using the respective browser's driver
When we want to automate using Selenium Grid, we make use of RemoteWebDriver to drive the action between the client and server.

The class AppiumDriver extends the WebElement and RemoteWebDriver from the project Selenium.  And further, it has its own methods to interact with the mobile elements.  More details about the Java Client of AppiumDriver can be found here.

The subclasses of AppiumDrivers are:

  • AndroidDriver
  • iOSDriver
  • WindowsDriver


21 Days 21 Tips -- #day17

Here are my pointers to fellow test engineers

  1. Interface SearchContext is top in the hierarchy of the WebDriver interface
  2. Interface SearchContext defines
    • Should I want to search for the element in the whole page
      • using WebDriver object
    • Or, should I search within a containing element
      • using WebElement object
        • We can notice methods returning the type WebElement
  3. RemoteWebDriver implements the interface WebDriver
  4. The modern browsers drivers extends the class RemoteWebDriver
  5. AppiumDriver extends the class RemoteWebDriver and interface WebElement
For more understanding of the SearchContext and WebDriver, refer to below git repository of SeleniumHQ:

The below understanding should give a mental model of how the call happens in Selenium's library:
  • WebDriver and browser's driver instantiation
  • The order in which it is instantiated and used in programming to automate actions on the  browser

If noticed, the automation we do is more of programming and not of Selenium's library.  We extend and implement the Selenium library in our programming to mimic the action on the browsers and mobile apps.