Skip to main content

Let the machine check it, I get bored easily

In the spirit of my new blog I thought I would start with a trick I learn't the other day. I really don't like repetitive testing and I think its our duty (strong words I know) to find interesting ways to get over these challenges.

So I was charged with a piece of API testing. It was a simple sign up process, which set the user into a particular status. The status wasn't returned by the API response  (just a success or failure) however so I needed to go off to the front end to check it.

I had been toying with using SoapUI and Selenium together for some time so I thought what the hell and attempted to hack the two together in a relatively graceful fashion (as we do as testers sometimes). I came up with this approach:
  1. Download the latest Selenium Standalone server.
  2. Put it in here - SoapUIRoot\Bin\Ext
  3. Fire up Soap UI, add a Suite>Test>Groovy Step
  4. Learn Selenium Webdriver (you'll need to one day, may as well get on with it)
In terms of Webdriver I kept it really simple:

import org.openqa.selenium.By
import org.openqa.selenium.WebDriver
import org.openqa.selenium.WebElement
import org.openqa.selenium.ie.InternetExplorerDriver
import org.openqa.selenium.support.ui.ExpectedCondition
import org.openqa.selenium.support.ui.WebDriverWait
  
        // Create a new instance of the Internet Explorer driver
        // Notice that the remainder of the code relies on the interface,
        // not the implementation.
        WebDriver driver = new InternetExplorerDriver()

        // And now use this to visit the site
        driver.get("https://mysite.project.qa.com/login")

        //Get past the Certificate Problem
        WebElement override = driver.findElement(By.id("overridelink"));
                   override.click();

         //Enter Username and Password, Login
         WebElement username = driver.findElement(By.id("username"));username.sendKeys("User");
         WebElement password = driver.findElement(By.id("password"));password.sendKeys("Password1");
         WebElement signin = driver.findElement(By.id("submit"));signin.click();
                  
         //Find the Customer with the number
         WebElement custno =    driver.findElement(By.id("CustomerID"));custno.sendKeys(${#TestCase#CustID});
         
        //Assert the Status
        assertTrue(isElementPresent(By.linkText("Status is Live")));
         
         //Close the browser
         driver.quit();
 I came out with a test that looked like this:
  1. Groovy step to generate a random username and GUID
  2. Property transfer to get them into a HTTP step
  3. HTTP Post to the API (and capture the Customer ID)
  4. Transfer step for Customer ID
  5. Groovy step to run Selenium and use the Customer ID to find the sign up and check the status
And there we are! One very boring bit of testing automated forever. Testing and analysis of new stuff is fun, checking old stuff is a bit dull. Automate now to enjoy the future more.



Comments

Popular posts from this blog

Testers Guide to Myths of Unit Testing

One area that testers might be able to enhance their contributions to software development teams is how we perceive and contribute to unit testing. I believe testers busting their own illusions about this aspect of building something good would bring us much closer to developers, and help us realise what other layers of testing can cover most effectively.

Also, I want to do a talk about it, so I figured I would test the premise, see if potential audiences were into it. I put this on Twitter:
Working on a talk about what testers might believe about unit #testing & how we interact with developers creating unit tests. Any challenges/additions for my list below? #development#agilepic.twitter.com/4oT5HE4qs3 — Ash Winter (@northern_tester) December 19, 201730 replies with ideas tends to indicate that people might be into it. 
The ListI thought, as my final blog of 2017, I would provide a super useful list of the myths and legends we as testers might believe about unit testing:
That developer…

Why do Testers become Scrum Masters?

It was late and I was stuck on a train, so I pondered on the question of why do testers often (in my experience) become Scrum Masters. Its a very dear question to me, as its been a big part of my career journey In fact, I've been there and back again. Tester to supposed-to-be-testing-but-being-a-Scrum-Master to Scrum Master, back to Tester and very happy thank you.

I encapsulated my reasoning in the following:
Long train delay, decided to think about a thing. :) Why do testers (in my world anyway) often become Scrum Masters? #testing#agile#scrumpic.twitter.com/FGGXFiBGz1 — Ash Winter (@northern_tester) February 13, 2018The tweet got a lot of traction, and generated a couple of interesting threads which made me think.
Great list. Personally I think that as a scrum master I can add even more towards the goal of quality. — Christian Kram (@chr_kram) February 13, 2018 Perhaps part of the reason for the transition is a growing appreciation of where quality has its roots? If testing i…

Wheel of Testing Part 3 - Applications

I've only had to quit two jobs to finally find the time to finish this blog series. Winning at life. If you need reminders (like I did) check out Part 1 and Part 2 before reading on...

After the first two blogs regarding the Wheel of Testing, I was delighted to receive a few requests for the wheel itself, which got me thinking about applications of it, beyond what its original intent was, which I've explored in detail in part 1 of this series of intermittent blogs. Most models need a little air time to show their value, in software development we crank out models all the time, but I'm not sure how many get used. I am inspired by models such as the "Heuristic Test Strategy Model" by James Marcus Bach, as I have used it and seen the benefits it has brought for my clients, particularly the ability to ask questions. So, I wanted to create a model which has a number of use cases, both real and imagined:

Helping to unlocking a career in testing which may be stuck

It is no…