Archive for My Internship at Wizards of the Coast

Week 3 – Lessons Learned

This week was a half-week due to the 4th of July holiday.

So, I learned some tough real-world software engineering lessons this week.  I submitted the test suite I wrote last week for a code review and it turned out that a bunch of test components which I had assumed were unused and superfluous were actually being referenced by the tests for another software tool.  Whoops!  So some of the new tests that I wrote are now duplicate in functionality to the old existing code, which is a major no-no, as twice as much code means twice as much cost to maintain.  Yeah, that was a bit embarrassing…  I will be refactoring my test suite next week to fix all of that.

Lesson learned: NEVER assume a piece of code isn’t an external dependency elsewhere.

I also began studying some more performance-related concepts.  I worked my way through the book “Advanced Web Metrics with Google Analytics” by Brian Clifton. Google Analytics is pretty much the current industry standard for website traffic analysis and provides a wealth of data which can be very useful in creating accurate load & stress tests.

Another lesson learned: never go on vacation, lest your cubicle be Justin Biebered:

Biebered!

This is what happens if you use your vacation time at WotC.

That’s all for this week.  I look forward to transitioning beyond scripted web testing and into performance testing.

Week 2 – Web Performance Fever

I spent this week cutting my teeth on test automation by revising a set of web performance acceptance tests for an internal database tool. Web performance tests are basically coded scripts that run against a web service, validating that certain functionalities are present and that response times are within the defined standard. Besides just revising and updating the existing test suite, I also created several new tests for features that were not already within the test coverage.

I spent a good chunk of time defining a set of reusable components for basic things like page navigation, so that creating future web performance tests tests is somewhat streamlined. By the time I was done with these, I had learned quite a bit about HTTP and data extraction from web services. I now feel confident in my own ability to create a set of meaningful automated tests of a web page/web service.

I also took some time to explore creating my own sample WCF (Windows Communication Foundation) web service and client application. This was just an ASPX webpage interface that let a user browse and edit an underlying SQL database. It was a pretty basic program but gave me a deeper understanding of what was going on under the hood of the web services I’ve been working on.

Other than all that, I also met with my supervisor and received a high-level overview of performance engineering. Now that I have learned basic web performance testing, I will move on to learning about creating and analyzing load, stress, stability, failover, and endurance tests– whew! It’s going to be a busy summer.

Oh, and a couple personal highlights– the office ergonomics expert switched out my old chair for a giant, awesome new chair that looks like a CEO should be sitting in it. Definite upgrade!  Also, the intern who sits next to me had been out sick all week, and I came in one day to find this:

You would think WotC, of all places, would keep a cleric on staff to remove curses.

You would think WotC, of all places, would keep a cleric on staff to remove curses.

A couple of times, I could swear I saw its hand move out of the corner of my eye…

Looking forward to diving into more testing next week!

Week 1 – Getting My Feet Wet

I began my internship this week.  I had about a week beforehand to prepare, so I crammed as much as I could on materials covering software testing and the C# programming language.

I attended my new hire orientation and met the team I’ll be working with.  Everyone has been very welcoming so far.  The offices are fantastic; being a company that makes games, there is art and sculpture everywhere.  The cubicles are all decked out with decorations and overall it feels very comfortable as far as office buildings go.  And there is a giant dragon in the lobby!

Justin and Mitzy
Me and Mitzy, the resident lobbydragon.

As far as actual work goes, my first week was mostly spent oriented myself with their software and culture.  Ernie (my supervisor) supports several different teams around the office, so it seems like I’ll get exposed to a variety of projects and methodologies.  On his advice, I am working my way through a book called “Professional Application Lifecycle Management with Visual Studio 2010”.

Techniques I learned this week included initial exploration of Visual Studio’s suite of test tools.  I also wrote some man pages about various testing tools for the internal wiki; this was a good exercise that helped acquaint me with the tools and their functionality.  I attended daily standup meetings with the Software QA team and will continue to do so.

Culturewise, I attended a couple of company gaming sessions including a confidential playtest for an unreleased product.  It was a blast!

Overall, it has been a very positive experience thus far.  More to come!

Internship – Performance Engineering

Performance Engineering is an internship designed to expose the student to real-world experience as a Software Development Engineer in Test (SDET).  The student will work alongside an experienced SDET at Wizards of the Coast (a subsidiary of Hasbro) to build new performance test automation, maintain existing automation, execute performance tests and analyze test results.

This blog will chronicle my experiences as a Performance Engineering intern at Wizards of the Coast.  Having been a WotC fan for many years, this internship is in many ways a dream come true.  I will be working under the mentorship of WotC’s Ernie Nelson (Senior SDET) and Evergreen’s Sheryl Shulman (Professor of Computer Science).

Stay tuned for weekly summaries of what I’m learning, challenges I’ve encountered, and workplace experiences in general!