December 31, 2015

Automate Amazon: Writing a Sign In Test

This post is fourth of a series of nine. Need to go back to the beginning?

Drafting a Login Test for Amazon.com won't be as easy as drafting one for Dave Haeffner's mock site, The-Internet. There needs to be a lot more infrastructure put in place besides the CommonUtils library we worked on in the last blog post. Also, Amazon.com use the word "Login". Instead, they use the phrase Sign In.

December 28, 2015

Automate Amazon: CommonUtils, methods and exceptions

This post is third of a series of nine. Need to go back to the beginning?

The Selenium WebDriver API provides the basic methods to manipulate a browser to perform actions, such as navigating to a web page, but it doesn't have all the functionality we would need. What if we wanted to add in exception handling, such as if the web page was not found? What if we wanted to throw a customized error to a log file when the page was not found? What if, even upon a success, we wanted to write a message to the log?

A Common Utilities library, such as one they are using at my workplace, can be developed to handle these cases. Each Selenium API method is wrapped in try / catch / throw blocks for exception handling, built-in with logging functionality. When things go wrong, clear and concise error messages will save a lot of time debugging if the issue was with the server, with the code of the site, or the tests themselves.


December 24, 2015

Automate Amazon: Sketch out a Use Case

This post is second of a series of nine. Need to go back to the beginning?

With the last blog entry, we talked about setting up a development environment and running our first test.

With this entry, we are going to examine Amazon.com's site and see if we can come up with a quick test to automate creating a purchase order with Amazon's Sign In, AddToCart and Checkout process.

December 22, 2015

December 17, 2015

Next Week: Automating Amazon : How I Am Spending My Christmas Vacation

Automating Amazon: How I Am Spending My Christmas Vacation: 


For the past few years, I have been coming up with little side projects during my Christmas break to help deepen my knowledge of the software testing industry.

  • December 2012: Examining the book How Google Tests Software
  • December 2013: Taking Alan Richardson's excellent online course Selenium 2 WebDriver with Java
  • December 2014: I was quite busy! I retook Alan Richardson's course, spent time creating this blog, and I finally created a GitHub account storing Java and Python code samples I could show to prospective employers as I interviewed for automation development positions. Quite handy when I was caught up in a surprise layoff and was searching for automation positions this time last year.
This Christmas, I was going to carry on the tradition!

December 16, 2015

New Editor's Draft of W3C WebDriver Specification Released!

A new Editor's Draft of the W3C Spec Has Been Published! 


A new Editor's Draft written by Simon Stewart and David Burns has been released on December 3, 2015 to the World Wide Web Consortium's Browser Testing and Tools Working Group: https://w3c.github.io/webdriver/webdriver-spec.html

November 11, 2015

How to perform automated testing for an eCommerce application?

Are you an automated tester writing tests for the eCommerce application at your company?

If so... Do you feel like comparing notes? I'm new to the world of automation. I've only been doing it since March of this year, and I would love to compare and contrast what your world is like. 

October 25, 2015

Would it be good for an automated tester using WebDriver and Java to work towards Java Programming I certification?

So far, I have been doing well as an automated tester at my job. I've been doing well picking up Selenium WebDriver, figuring out how to automate our shopping cart regression tests, adding to the test suite, and remembering my coursework in Computer Science and Software Engineering that I studied long, long ago.

... I was wondering, though: to become more well rounded, should I pursue working to a goal such as a Java Programming I certification? It might help force me to learn the real ins and out of the language.

October 13, 2015

Fitbit-Boston is looking for Java developers who know Python, Hibernate, Spring, AspectJ, MySQL, Cassandra, ActiveMQ, Kafka

I just heard that my company, Fitbit Boston, is looking for a Site Reliability Engineer, so I wanted to pass that information along. We're over in a new office by the Moakley Courthouse, near the Barking Crab and South Station. Contact me for more information!

October 8, 2015

Fitbit hands out smoothies in Kendall Square, Cambridge, MA

Fitbit - Boston smoothie giveway
Kendall Square, 
One Broadway, Cambridge, MA
Thursday, October 8th, 2015  11:00 am - 2:00 pm

One of my favorite things about working at Fitbit is their many outreach programs in the tech community, and that all employees are welcome to participate. I can get so focused on designing automated tests for our eCommerce platform. Volunteering gives me an opportunity to get away from my desk, away from the office, and out into the world where people are using our products.

So far, I've had fun back in June working the booth at Boston TechJam and handed out free ice cream at One Kendall Square. I hadn't done anything like that in a while, so it was nice to help out our team!

September 28, 2015

Are QA Engineers Becoming Extinct?

I've been a Software Quality Assurance Engineer for quite some time. I entered the field back in August 1996, a year or two after companies had first invaded the World Wide Web -- formerly the home of scientific and academic institutions. This invasion was seen by some as a corporate takeover of a new electronic frontier, with much fretting that the web would soon become too "corporate", that it would become  nothing more than a fenced in strip mall. Even though I wasn't quite finished with my Computer Science major / Theater Minor, the demand was so great, it wasn't too difficult for someone as inexperienced as I to find a contract position as a software tester.  I wasn't sure what I wanted to do with my degree after I graduated. I had taken many a course at Bridgwater State mucking around with operating systems, learning Ansi C and C++, but none of my courses really spoke to me. It wasn't until I started working at Oracle that I found what I was really good at: Quality Assurance.

September 26, 2015

SeConf2015: Notes from Simon Stewart's Keynote Address about WebDriver

Looking to see the latest trends in automated software testing? The Selenium Conference 2015 ( 9/10/2015 - 9/12/2015 ), held in Portland, Oregon, has placed online most of the speaker's notes and slides. http://confengine.com/selenium-conf-2015/schedule. T.J. Maher will be reviewing them over then next couple of weeks and blogging about them.



Selenium Conference 2015: Notes from watching Simon Stewart's "State of the Union" keynote address


Right now, I am too focused on turning myself from a manual software tester of fifteen years, into a junior level Java developer writing automated tests for eCommerce application at work to even think about becoming a Selenium WebDriver Committer, one of the people who help build out the open source tool.

September 21, 2015

September 9, 2015

Should You Have a Dedicated Automation Team Within Your QA Department?

To stay in touch with what is happening all around the software testing community, my weekly diet consists of many a blog. None helps me more than Sauce Labs and their Official Sauce Labs blog. Sauce Labs was founded by the creator of the first version of Selenium, before it was Selenium WebDriver. Besides being a great tool to use, so that you don't have to manage yourself all the browsers, platforms, and environments Selenium Grid can offer when automated tests are performing browser testing, Sauce Labs also sponsors the open source product, Appium, used for mobile testing.

August 26, 2015

August 21, 2015

August 12, 2015

Anton Angelov: Design Patterns in Automation Testing

I have written a bit in this blog about Software Design Patterns such as:
  • Their early history with Kent Beck introducing them to OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) back in 1987 and their popularization with Eric Gamma, Richard Helm, Ralph Johnson and John Vlissides (The "Gang of Four") book, Design Patterns: Elements of Reusable Object-Oriented Software (1994).
  • A Boston Software Craftmanship Meetup I attended back in June 2015 on "How to Study Design Patterns".
  • As part of "Testing The-Internet" series,  I talk about how Page Objects are used at my workplace.
... I haven't yet blogged about Head First Design Patterns since I am still  halfway through the book, having just finished Head First Java and Head First Object Oriented Analysis and Design.

Anton Angelov, author of the blog "Automate the Planet",  goes far beyond that.

August 6, 2015

Head First Java: Midi and Swing

Now that I found a job where I get paid to write code, I might as well try to practice the language, eh?

Over the past few months, in my quest to practice being a developer, I have been trying to come up with cute little side-projects in Java that I could do in my free time, and I have been reading more than a few textbooks to come up with ideas.

July 29, 2015

The-Internet: Writing the Automated Test

Writing automated test code to test against Dave Haeffner's mock site, The-Internet: Login Page.

This post is second in a series of six. Need to go back to the beginning?

We have covered a lot of ground in this series of blog posts.

The sixth and final part, writing the automated test, is kind of anti-climactic after all that effort.

July 28, 2015

The-Internet: Page Object Model examples

Writing automated test code to test against Dave Haeffner's mock site, The-Internet: Login Page.

July 12, 2015

Online course: John Purcell's Java courses

To help me up-to-speed with Java programming after a ten year absence of writing any type of code, I have been working since January through many helpful courses I have found online. A few that I have liked:


Another favorite of mine is John Purcell's "Cave of Programming". John started out on Udemy.com, but has branched out to his own site. Every time he comes up with the next level of a course, he marks the earlier levels down until over time they become free.

July 8, 2015

The-Internet: Storing locators for web elements

Writing automated test code to test against Dave Haeffner's mock site, The-Internet: Login Page.

This post is fourth in a series of six. Need to go back to the beginning?

Part Four: Storing locators in Enums

How to locate a web element? 


There are two main they locate web elements at work:

  • By ID
  • By CSS Selector
Earlier, I wrote about CSS Selectors when finding web elements.

With the Firefox browser and the Firebug plugin, to find the selectors of a web element, an automated tester can go to the Login Page of Dave Haeffner's test site, The-Internet, and right-click on each element listed:

July 6, 2015

The-Internet: Storing constants: static final vs enums

Testing The-Internet:

Rewriting the automated test code we use at work to test against Dave Haeffner's mock site, The-Internet: Login Page.

This post is third in a series of six. Need to go back to the beginning?


Part Three: Storing Constants 

Setting Constants Using Static Final

When using values such as the username and password of a Login screen hardcoding values within your automated test is a bad idea. 

If there was an automated test that was to go to https://the-internet.herokuapp.com/login and enter the username and password for Tom Smith (tomsmith / SuperSecretPassword!).

June 26, 2015

Selenium is now on GitHub

Back on March of this year, Google's Open Source Blog posted the following notice:
"Beginning today, we have disabled new project creation on Google Code. We will be shutting down the service about 10 months from now on January 25th, 2016. Below, we provide links to migration tools designed to help you move your projects off of Google Code. We will also make ourselves available over the next three months to those projects that need help migrating from Google Code to other hosts. 

June 24, 2015

test.AllTheThings!

I've loved Sauce Labs every since I first heard about it. Instead of testing the same exact web application five or ten times in various browsers and platforms, I can write a test once? And I don't have to manually configure the browsers and platforms by hand? Sign me up! 

We use it at work. Sure, it's a pain setting up Internet Explorer 8, but you kinda expect IE8 to be a pain when using a modern web app with it. 

June 19, 2015

The-Internet: Common Utilities: methods, exceptions and logging

This post is second in a series of six. Need to go back to the beginning?

Rewriting the automated test code we use at work to test against Dave Haeffner's mock site, The-Internet: Login Page.


Please note: I have been an automated tester only since March 2015. This is only my best guess on how to translate what we use at work. I am writing this blog to deepen my own understanding of automated testing. If there are any glaring errors about Java, OO, WebDriver, or anything else please let me know in the Comments section!

June 18, 2015

June 16, 2015

June 12, 2015

The-Internet: Simple Manipulation of a Login Page

Beginning coders in Selenium WebDriver need simple websites to test against. For that purpose, Dave Haeffner ( @TourDeDave ), author of ElementalSelenium.com and the SeleniumGuidebook.com, wrote the-internet.

... No, not "The Internet". The-Internet: https://the-internet.herokuapp.com/. It assembles a collection of Web Elements such as dropdowns, checkboxes, and a login page that automated testers can test against.

For today's blog post, I will speed automated testers through some basic Selenium / Java sample code I quickly hacked together: how a tester can interact with the various page elements of a login screen. The code tests what needs to be tested, it successfully runs... but it ain't pretty.

June 11, 2015

Live Blog: Fitbit Boston @ BostonTechJam

Boston TechJam
City Hall Plaza, Boston, MA
Thursday, June 11, 2015 4:00 pm - 9:00 pm

I've always liked getting involved, so when I heard that Fitbit-Boston managed to get a booth last minute at @BostonTechJam I signed up immediately!

I volunteered to help pack up the truck, go down to the site here at Boston's City Hall Plaza here in Government Center, set up, and staff the booth.

I will be live blogging the event! Stop by this page throughout the day, and I will be posting pictures and updates about my experience here. Feel free to come by, take pictures, and tag me in them. On Twitter I am @tjmaher1.

June 10, 2015

Fitbit-Boston will be @BostonTechJam on Thursday

Fitbit-Boston will have a table at Boston TechJam, held this Thursday. I'll be manning the table from 4:00 pm to 9:00 pm along with my fellow co-workers. Stop by and say Hello!

Boston TechJam - Details


Event Name: Boston TechJam
Registration Link: http://www.bostontechjam.com/
Location: City Hall Plaza, Gov't Center, Boston
Date: Thursday, June 11, 2015
Time: 4:00 pm to 9:00 pm
Cost: $10.00 USD. Pre-registration needed.

June 9, 2015

June 4, 2015

Twitter connects us all!

Sometimes I am amazed at how easy it is to send a note to people via Twitter. I am more amazed how often people respond!

Starting in December of 2014, I decided that if I ever was going to do it, now was the time for one last big push to attempt to finally find a company who would take a chance on me, bring me on board, and start getting me up to speed with automated testing with Selenium / Java. For most of my fifteen year QA career as a manual tester, coding was never part of the job. I had last programmed in Java in grad school ... ten years ago. Switching from a manual testing job to an automation one was going to be a hard sell.

June 3, 2015

June 2, 2015

Meetup: How to Study Design Patterns

Boston Software Craftmanship
Brightcove, 290 Congress Street, Boston, MA
http://www.meetup.com/Boston-Software-Craftsmanship/events/222541015/
Monday, June 1st, 2015 @ 6:30 pm
"Design Patterns have been a divisive topic in the programming community. Some consider them indispensable, while others find them harmful when intentionally applied.  
"In the game of Go, there exists a similar divide around the concept of Joseki. They've had more time to wrestle with this conflict, though, and Toshiro Kageyama has made an attempt at reconciling these factions. In his seminal book 'Lessons in the Fundamentals of Go', there is a chapter titled "How to Study Joseki". We will be applying this approach to studying Design Patterns.  
"If you own Design Patterns, please bring it; only one is necessary, but additional copies will help it go more smoothly". - From the Meetup site

May 28, 2015

Intro to Page Objects and Design Patterns in Selenium WebDriver

When writing automation scripts, object-oriented design patterns -- templates on how to structure the classes and objects created in Python or Java -- can be quite useful. One of the first design patterns automation engineers encounter are Page Objects, but there are others. Before introducing the talk, here's a quick history lesson on Patterns.

Pattern Languages in Object-Oriented Programming


As part of the Association for Computing Machinery (ACM), a new group called OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) was formed to address the concept of object-oriented programming which was becoming the dominant programming methodology.

At OOPSLA '87, the group's second conference, Kent Beck -- the future originator of "Extreme Programming", the precursor to Agile -- presented a talk that took the concept of architectural design patterns detailed in A Pattern Language: Towns, Buildings, Construction (1977) and applied them to software engineering.

May 8, 2015

Learning the Command Line Interface

When I started my Freshman year at Bridgewater State back on September 1990 as an eager Computer Science major and computer lab aide, there were two main platforms that were popular at the time: MS-DOS and Digital Equipment Corps VAX / VMS system, both which used a command line inteface (CLI). 

What did they look like?



  • The screens had a black background. 
  • Green, amber, or white were the font colors. 

Open up the Terminal on your Mac or Powershell on the PC, maximize the window to fill the screen, and that is exactly what it was like. 


May 7, 2015

OWASP Boston Meetup - Crowdsource Your Security Testing with Bugcrowd

Wednesday, May 6, 2015 @ 6:30 pm
Akamai Technologies
8 Cambridge Center, Cambridge, MA 
http://www.meetup.com/owaspboston/events/221696816/ 


At my previous position, I performed a bit of entry-level security testing, so I was familiar with the Open Web Application Security Project Group (OWASP ) name, with their website and the Testing Guide that they update every few years. What I didn't know was that OWASP had formed a Meetup group last year that has met every few months at Akamai Technologies starting in March of 2014.

OWASP - Boston is planning on holding regular meetings on the first Wednesday of every month.