A Very Knotty Past

Camping at Moran State ParkAdam Goucher does not have the first clue about the can of worms he opened at our much blogged Tuesday night supper meeting. I’m not even talking about Adam’s volunteering my friend and I as founders for the Atlanta Testers Club (currently 2 members). As we settled into our dinner discussion, he was talking about some of the people he knows in the testing community, one of whom is James Bach.

Those of you who know Mr. Bach are probably assuming that this post is going to be a test “discussion.” Nothing could be further from the truth, in fact, this is not a testing post. Adam casually mentioned that Mr. Bach lives on Orcas Island. His mention was something like, “and he lives on Orcas Island, if you’ve ever heard of it.” Have I ever heard of Orcas Island? Indeed, I have. The macro version of my story is that my husband and I camped out on Orcas for several days a couple of years ago (maybe it was this week). The micro story is a tale that shows how some places can unlock our imagination in ways that might not catch up with us for days, months or even years.

I’ve blogged previously about my tendancy towards art. Drawing and painting are with me even if I’ve consicously decided to put it into a box not to be opened until I’m finished with some career goal or degree. When I finished my CS undergrad, I was very happy to go back to art. I learned the ins and outs of drawing Celtic Knots with Cari Buziak. I made gifts for my Grandma and had a great time obsessing over the geometry of very tiny lines.

Then I took a job in Configuration Management. Those of you who have worked in CM or have had to work closely with production releases know exactly how loaded a phrase that is. I was shoved in a basement and given a schedule with absolutely no regularity at all. They gave me a very old laptop so that I could get up at all kinds of hours and work. There’s no support at these hours, so if something went wrong, I had the choice of waking someone up or figuring it out and fixing it myself. I opted for the latter whenever possible. My extra time became devoted to sleep and the art faded into the gray light of the daysleeper I became.

At least I still had vacation. My husband and I visit the Pacific Northwest whenever for possible, and the National Speleological Society (cavers) had their annual convention in Bellingham, Wa. Since my CM job and Chris’s Fire & Rescue job didn’t pay much, we figured out that if we wanted to stay longer, we needed to camp out. We looked for state parks that took online reservations and ended up camping out at Moran State Park on Orcas Island for most of a week. There’s really not much to do there except for hiking, concerning oneself with the tending of a campfire or watching the trees. With this rest and relaxation, my brain finally began unlocking itself from the knots induced by production builds. These knots ended up on pages in my journal as drawings. The art came back! I felt like Kyle MacLachlan in Dune.

See that girl...don't mess with her.  She hasn't been sleeping.

We left Orcas the same way we arrived, by ferry. During the Summer, there are always long lines for ferries in the San Juan Islands. As I waited, I drew a spiral from one of my Celtic drawing books. I don’t know what it is about that place that opened me up in such a big way. The water was a mirror showing me qualities about myself that I had been ignoring, much to my detriment. When we got back to the ATL, I had a tattoo artist tattoo the spiral on my leg and I signed up for a spirals class with Cari. The art never goes away and Orcas Island is with me, permanently.

A Spiral of Birds
Since Adam mentioned Orcas Island, the knots and spirals have returned, but I’m thinking of them in a completely different way than I did before. They have something to teach us about interaction and visualization…

hey lady, where’d you get that treemap?

If you’re on twitter and feel as though you are “muddling through” like I feel most of the time, you’ll understand what a gift it is when someone sends you a really cool tweet.  Here’s the one I got today from @shelkster:

“What Processing code did you use for the treemap? Been exploring various examples. This is a great use of the strip treemap.”

Well, first of all, thanks!  Second of all, I have a confession to make.  The treemap itself is not from Processing. It’s from Treemap 4.1 which is software created at the University of Maryland in their HCIL lab.  What I did write in the Processing IDE was the code that parsed out all of the values. This would have been slightly easier had I just done it Eclipse, but for some reason, I was very curious about using the Processing IDE for this task.  There’s 99% chance I’ll be moving that from Processing into a Java class.

A few weeks ago, I worked through the treemap chapter in Ben Fry’s Visualizing Data“>Visualizing Data and came up with this map of the files on my computer.  (Keep clicking and you’ll get a good view of it)

Processing Treemap of My Files

This one is squarified and has the style of this treemap of the news. So if you have that book, Visualizing Data, this is where you will end up.  The reason I have initally chucked the data into Treemap 4.1 instead of the processing treemap has to do with the data format and configurability.  Treemap 4.1 uses the tm3 format which is basically a tab delimited file.  Ben Fry’s treemap example is “processing” files using java’s ability to search through a file system.  Treemap 4.1 also allows an exploration of data through its user interface.

My post, at this point, might sound like an ad for Treemap 4.1, but I’d like to point out, that it’s only supposed to be used for research and not for commercial purposes.  Maryland’s HCIL lab seems connected to a business group that sells this type of software for extremely large sums of money that I certainly can’t afford.  The tests that I visualized are from Mozilla, and I used this as part of my thesis work. If it weren’t for the ability to configure the treemap from the user interface, I wouldn’t have used Treemap 4.1, I would have used JTreemap. From twittering with the writer @benoitx, I know that it is still being maintained. If you just want to see data in a treemap and want it to be as simple as possible, this is a good choice.

Since I now have the data file I need, my next step is using the Treemap api released under the Mozilla public license to render the Mozilla tests in Processing’s treemap.   I think I remember from my previous digging around, that it supports several layouts including strip.

Probably more than you wanted to know, but uh…it’s my blog.  And thanks for the tweet. It really made my day.

What Do 3859 Tests Look Like?

Mozilla Tests in a Treemap

Yes, that really is 3859 tests in a treemap.  The size of each square represents the number of tests and the color represents the number of failures out of 1 -15 tests.  I used the strip layout to preserve order which means that anyware you see a cluster of red indicates consecutive tests with several failures.

There’s much room for improvement with this one, but the complexity of wrangling this data into the tm3 format forced me to make compromises.  For starters, the hierarchy is missing a layer.  I had to leave it out because it would have duplicated tests, and I wasn’t sure how I felt about that.  Although the number of failed tests does show tests that have had more failing runs, what it doesn’t show is how these tests are grouped by OS.  I want to see failures grouped by OS, and plan to work on this.  Instead of showing number of failed tests, I think it would be more truthful to show a failure rate.  That is, given the number of test runs for that test, what is the percentage of fails.

It’s late, and the Art Wolfe show has finished on PBS.  Oh crap, it’s Sherlock Holmes with Jeremy Brett.  I think Jeremy Brett is awesome.  If I don’t go to bed now, I’ll be up ’til 12.  Please forgive any crazyness in my post this time.  I’m just a little giddy about actually seeing this.

Test Patterns

This will be the next-to-last week of my design patterns class, and I’m working on my final project. We were told to pick some category of design pattern and to do write-ups of the patterns in our category. Some of the example categories were security patterns, anti-patterns and concurrency patterns. I chose test patterns so it would be reusable for work.

So far, what I’ve found is that “test pattern” can mean just about anything in testing. In fact, I question whether there is really a difference between “test heuristic” and “test pattern.” It’s all just ways of categorizing abstract testing concepts that can reapplied in difference scenarios, right?

I looked up test patterns in How We Test Software at Microsoft who have also defined some of their own test patterns. In HWTSM they pretty much refer the reader to a great, fat, brick of a book titled, Testing Object-Oriented Systems by Robert Binder. I know that this book is a brick because I’ve purchased it and have been losing weight by carrying it around when I’m not reading through it. (Maybe Oprah should try this.)

This book not only has test patterns, but categorizes the test patterns into several chapters. Included are Results-Oriented Test Strategy, Classes, Reusable Components, Subsystems, Integration, Application Systems and Regression Testing. As an example, the Integration chapter contains the patterns Big-Bang Integration, Bottom-Up Integration, Top-down Integration, Collaboration Integration, Client/Server Integration, and a few more.

As I’ve been schlepping through this huge book, I’ve noticed just how technical and detailed it is. This leads to my next question, how many people use test patterns knowingly as test patterns? It’s not like most of us in testing trained for this, and the only place I’ve found straight up definitions of test patterns aside from the microsoft post is in this particular book. When I use Quality Center, it’s not like I’m separating out my tests by pattern or heuristic. Should I be? I’ve also read of testers who felt that their success was due to the fact that they weren’t following a pattern, but acting as a user. But then, isn’t that a pattern too?

I’ll post some of the stuff I’ve done for this project in a week or so. Very interested in what people think about using test patterns for testing.

Reblog this post [with Zemanta]

Concurrency,Picture Pages or Foxy Tests

This Fall will be my last semester of graduate school. Wow, I can’t believe I said that.

For my last semester, I’m already signed up to finish my thesis. I also have a completely, wide-open, elective to take. My advisor has cleared the way for me to take an independant study. This puts me in the freaking awesome position of putting together an independant study for any topic in the realm of Software Engineering/Computer Science that I want. Woo-hoo!

These are the topics I am considering:

Advanced Distributed Systems: Concurrency, Threads and The role of XML in web apis such as LAMP, SOAP, etc. I know the very basics of XML and I’ve seen it implemented (in the most horrible way conceivable). I’ve never written code using much XML, and I don’t like that. I only see more xml in the future, not less, and lately, this html parsing thing has really been kicking my butt. If I don’t learn about this at school, I’ll be addressing it separately afterward. Concurrency is, I think, one of the most underestimated topics in computing today, and I’d like to take a closer look at it. I’d especially like to do some more work with a functional programming language. I did some Erlang a while ago and it has drastically changed the way I think when I’m coding.

Survey of Data Visualization: I would do a lot of writing about different topics in visualization including some history. This would include using different tools for Visualization. Aside from Processing, I’ve been working with Flash and Illustrator (freaking sweet software, that). I know there’s a javascript library for visualization. I’ve already done some nice work with visualization, but it would be great to have the type of rock solid foundation that this would give me.

Web Browser Based Software Testing: All of the testing I do is for apps that have a command line interface. I read David Burns’s, aka the Automated Tester’s, blog and tweets feeling very envious of all the fun stuff he gets to do. I’ve also never done performance testing, and would really like to take a crack at it. If I choose this topic, I would definitely roll in some study of virtualization.

At this point in time, I’m not really sure which of these three topics I’ll choose. They all address areas of technology that I feel are highly important . Whichever topic I choose, I will be blogging most of my work.

I feel grateful that the teachers in my school trust me enough and are open enough to give me this opportunity of independent study. My school, Southern Polytechnic State University, might not have the resources of a top tier school, but all of the teachers I’ve encountered have gone out of their way to help me achieve goals that I set for myself. I’m not sure I would have been given this freedom at another school. The school that allows a motivated learner to chase their dreams in a responsible way is to be commended. I’m not a “school spirit,” cheerleader-y type, but I might actually purchase a class ring this time. It would definitely be silver and have either a black or amethyst stone to match my Doc Martens and black hair.