Automated testing of emails

Testing emails is a challenging task and automated testing of emails is even more challenging. A while back I wrote about one of the way to automate email testing using GMail and IMAP. This solution works, but has a huge dependency on the network and Gmail. If there is any problem in the network or if GMail is down because of any reason - test would fail.

Also, this end-to-end flow is important to test, but as far as functional testing of application is concern - it is not application's responsibility to deliver emails to the client. Application will send emails to the SMTP server and it’s the responsibility of SMTP server to ensure that emails are delivered. As long as application can send appropriate emails / messages to the SMTP server, it’s fine and that’s all we need to test.

If application is configured to use real SMTP ...

Best of TestingGeek - Blog posts I like about software testing

For quite some time I was thinking of improving blogs / articles I have written on TestingGeek in past. Many articles I have written in past do not reflect my current thinking. However I decided to leave that exercise. May be it's better to show that my thinking ( and writing) has changed. I might re-write some of the articles and link them from the old articles to ensure that folks landing on my old pages have opportunity to see what I am thinking now.

However, this thought process was useful because I ended up thinking about the opposite - which blog posts do I like?

So here is the list of blog posts (In no particular order) I like on TestingGeek. You may have read some of them earlier, if not it would be nice to know your thoughts on them.

Testers journey from Manual to Political

This post was story ...

Testing Restful Webservices or API Testing - Remember PAPAS BE SFO, DEED HELP GC and DVLA PC

I have been working on API testing for sometime now. To be specific, I have been testing RESTful web services. I like the idea of REST and from what I have seen, many projects will move in this direction. In few projects I have been working on, RESTful web services are becoming backbone for mobile apps and web clients. If RESTful web services is a new concept for you, you can either dive deep down in the original thesis by Roy Fielding or get a quick overview here.

I like testing applications with RESTful interfaces as their backbone. Often these applications are more testable than tightly integrated applications because interfaces (web services or APIs) used by clients (Web, mobile apps, support or public) are available to testers as well.

In this post, I will explain the model / checklist I follow to test RESTful Web Services.

I usually test APIs for ...

How to make test automation more effective?

How can I make test automation more effective? This simple question can lead to many interesting things.

According to dictionary, effective can be defined as - capable of accomplishing a purpose or capable of producing intended or expected results.

In order to understand effectiveness in the context of test automation, we need to answer following questions -

  • What do we want to accomplish with test automation?
  • What do we expect test automation to produce?

For me, automation should yield following two things -

  • It should give confidence
  • It should find defects

We strive to get confidence and we hope to find defects with test automation. However, most of the time test automation becomes repetition - execution with the same data and steps. There is immense value in this repetition - but should we stop there? What can we do to make test automation more effective?

In my opinion, testing is a sampling exercise. If we ...

Test Automation - How to handle common components with Page Object Model?

If you are working in web application testing domain and are interested in test automation, you might have used, come across or heard about PageObject Model in test automation. If you haven’t heard of it, it might be a good idea to read this article.

In nutshell, a separate class is created for every page / screen of the application in the PageObject model. This class exposes methods to represent all the operations a user can perform on various elements on the page. For example, a class to represent LoginPage might have methods to enter userName, password and click on submit button. Tests can use this class to interact with the page instead of duplicating elements everywhere in the test scripts.

PageObject essentially decouples UI from the tests and as a result makes test automation suite a bit more maintainable. In my opinion, if you are not doing anything else ...

CAST 2012 Enforced Randomization - Increasing the value of test automation

Last week I was at San Jose for CAST 2012 to give talks on two interesting topics. My first talk was around the limitations of acceptance criteria and second talk was focused on how we can increase value of automation by introducing randomization where it make sense.

During my conversation with participants around randomization, many people suggested that I should write a blog about this - and so here it goes.

Pretty much all the test automation projects have four main elements.

  • Navigation - How do you reach to the screen / page which to test
  • Data - How many variations of data are possible
  • Sequence - In which sequence data can be used on the page
  • Operation - What are the different ways in which operations can be performed.

For example, if we take the example of registration page for any popular site such as Twitter, this is how these four elements can be used ...

Gmail + IMAP – Automated testing solution for emails

Test automation around emails is pain, if not done properly.

Almost all the user facing web applications require user registration with the email and email usually serves as username in the system – which should be unique.

There are two main problems in automating email functionality –
  • Generating unique email addresses
  • Accessing inbox and content of the specific emails to check correctness of content and delivery

When I discussed this with evil tester, he pointed me to his blog post on getting disposable email addresses . When I followed the link to lifehacker ,from his blog post, first problem was solved.

It was easy enough to generate a random number such as current time stamp and amend it to any gmail address after adding a plus sign to create new email addresses which will go to the same inbox. So example @ gmail.com, example+123 @ gmail.com and example+321 @ gmail.com are ...

Selenium Conference 2012 - Are you coming?

If you are involved in doing any kind of test automation for web application, I am sure you are either using, or have considered Selenium for your test automation efforts. Well, if you have not considered, then maybe it’s time to give it a shot…

For folks who are familiar with or are using Selenium / WebDriver in any form, I hope you are aware that Selenium conference is happening from 16’Th to 18’Th April in London.

Last year, I travelled all the way to San Francisco from London to attend the conference and presented Magic of Modular Test Automation and this year I am presenting One Step At A Time (Will publish slides after the conference). BTW, I also wrote laziest experience report of Selenium Conference 2011 to share my experience … and to summarize my last year's experience in one word - Selenium Conf 2011 was AWESOME ...