One of the challenges of talking about test automation, especially to beginners, is where to start. You have to know enough about software to be able to talk about testing. It’s also really hard to talk about software testing without talking about software programming. At some point, we have all struggled with either learning about software testing and automation or mentoring someone learning about software testing and automation.
I have recently had conversations with my youngest child as they get ready to graduate high school and think about what they will do in the next phase of their lives. Over the year, we have discussed the work that I do and how I am involved in the software world. I realize my kids will probably consider a broad range of career choices during their young adult lives; I personally went through a focus on communications and music before I ever worked in anything IT-related. Once I did get into IT, though, I dove head first and did all I could to learn about it. Since my youngest has expressed interest in what I do for a living, I figured I could demonstrate the things that I do and, in the process, re-examine what it means to be a beginner in my career.
Getting Our Bearings: Where Do We Start?
There’s a difference between using software and creating software. However, that division is blurry. There’s a natural assumption that programming is required to “create software,” but what constitutes programming?
I have long been of the opinion that there’s a fine line between being a software user and a software creator. Likewise, there is a level of degree between software creation and programming. Does it make sense to start with a discussion of programming? In my experiences over the years, I would have to say no. For that matter, I would even say that getting into the nuts and bolts of basic operating system interactions may be overkill.
Instead, we should focus on starting where a user’s interaction already is, what areas they are proficient with, and where they would want to get more involved.
Where Does Your Software Reside?
As software professionals, we may be getting used to the idea of everything we work with existing somewhere in the cloud. However, for most people using software, that’s not the first place to start.
If we were to just go by the numbers and look at what most people around the world use, we would conclude that Windows PCs are the most prolific (and, more specifically, PCs running Windows 7). If we were to do the same for mobile devices, realizing that for many younger users and in a variety of countries, mobile is the only device they use, Android gets the highest percentage of users. Does that mean that we should automatically assume that those are the best systems for a beginner to start with? Not necessarily, but they will have the greatest penetration in the overall world market, at least for the foreseeable future. Additionally, many of the devices that run Windows or Android software are less expensive than MacOS or iOS devices sold by Apple.
If we wanted to get really into the details of systems, there’s the case to be made that older IBM-compatible PCs could be retrofitted with Linux, but that’s not a process I would throw at an absolute beginner.
Picking a Tool to Get Started With
Because the majority of users in the world use Windows PCs and Android devices, choosing a tool that could allow someone to interact with both makes sense. Ranorex Studio gives a great deal of flexibility in the kind of applications that can be tested. Whether you are working with Windows applications, web applications or mobile applications on either Android or iOS, Ranorex Studio gives a user the options to interact with all of them.
Deciding on a First Test
When looking at any automation tool, it’s easy to get caught up in trying to see how much can be done or how broad a coverage can be provided. While that’s a noble goal, it’s often confusing and hard for newcomers to get a grasp on how to do that effectively.
If I were to counsel anyone on performing any kind of test automation, I would first recommend finding an area that takes a lot of time to do manually. Rather than think about test automation from the standpoint of “Can I perform all of my steps and get a pass or a fail?” I’d say to consider interactions you would do all the time in a predictable order, and then put something together that consolidates those steps.
When I have mentored new testers in the past, this has been my focus because it’s something I consider a quick win. By looking at small areas that I can define specifically and predictably, I can then simplify a number of things and get them ready to be part of a larger set of tests.
With a web application, that first test may be as simple as loading the homepage and verifying that the elements I want to see are all in place. Alternately, it may be filling in all the fields of a form that needs to be submitted and making sure all interactions can be performed.
By contrast, with a Windows application, perhaps a good candidate for the first series of steps is to walk through the installation and uninstallation of an application. If that’s not currently an option, even something as simple as controlling a standard Windows application like Notepad can be worthwhile. By interacting with the application, selecting menu options, and adding or removing text, we can get a feeling for what interactions the test tool allows us and how to leverage them effectively.
If we are looking to interact with a mobile application, there are some additional steps, usually around setting up an emulator or having a direct connection to a mobile device that can be controlled. By creating a mobile-specific test, we can interact with and control a device by issuing commands and seeing how they respond, either on the actual device or through an emulator.
Putting a First Test Together
With Ranorex Studio, I can start creating any of the tests I want by selecting “File: New: Solution Using Wizard” (or “Ctrl+Shift+W” for those who prefer keyboard shortcuts). This will load the solution wizard and give me options of what type of test solution I want to create. To keep things simple, let’s start with a Windows application, which can be selected by clicking on the “Desktop” option.
From here, we can give the solution a name, a location and, if we want to, a language choice. (Note: By default, Ranorex Studio will choose C#, but VBNet is also an option.) For most new users, language choice is not something that needs to be a primary focus but may become more important later.
The next step would be to browse for the application that I want to interact with. As a first step, I’d suggest using a simple application that has only a few control options, such as Notepad.exe. Click on “Browse for Application” and then click “Browse for app …” (In this case, Notepad is located at C:\Windows\notepad.exe.)
The next step allows me to define if I’m interacting with a single application or multiple applications. In the case of this Notepad test, we will just look at a single application.
Finally, I can acknowledge I’m ready to create the solution and get access to a step-by-step tutorial about how to configure the test solution going forward. Click “Finish” and the application will open and be ready for me to interact with it.
From here, I can select “Record” to capture the steps I want to put into my test.
In some circles, there is some disparagement about record and playback as a test strategy, but if someone is starting out fresh, record and playback is a perfectly appropriate strategy. Over time, with the familiarity of underlying scripting code, the need to use record and playback can be diminished. Having said that, I still use record and playback tools from time to time, especially when I’m first learning about functionality in an application. The key is to use record and playback in small chunks. I try to limit my recordings to three or four steps maximum, if possible. By doing this, I can limit the chance of steps that will not work or that will give false positives.
In the next few entries, I will talk about ways to get more in-depth with Ranorex Studio and how to approach making tests and test solutions for web and mobile applications.