Thursday, December 2, 2010

Tangent Time: Turkey Edition

The week before Thanksgiving, I was sick on Thursday and so my tangent time was reading Being Geek. This book is not just for programmers. Most of the content applies to testers, UI designers and other people who also participate in creating software just as much as programmers. And the bits that are specifically about programmers are still worth reading, because understanding how programmers function can be very useful when you work with them all day.


Then we got weathered-in (the ice was more a problem than the snow) for three days last week. My home machine wasn't really set up for testing stuff, so I picked up another tangent time project: procmail. I check email on 4 machines. Only 2 of them can run Mail filtering rules, so my inbox often filled up with subversion commit messages when I was away from my desk. And every time I wanted to tweak my rules, I had to remember to sync the changes from my work machine to my personal laptop (or vice-versa). My work mail filtering really needed to be handled further up-stream. Thus, procmail.

I learned the danger of reference material written for a context that doesn't match my own. And the importance of escaping square brackets in regular expressions. And I did everything very cautiously, because I've heard horror stories of buggy procmail rules bringing down mail servers. And I already used up my one 'kill the mail server' forgiveness card last year.


Today I propped open Brian Marick's Everyday Scripting with Ruby and worked my way through Part I. Yes, it was all familiar material. But if I was going to have problems with incompatible Ruby versions, or accessing the supplemental files, I wanted to have them while I wasn't also trying to debug some fancy meta-programming code I barely understood, or something like that. I've skimmed the book before, but this time I made myself actually write the code for all the exercises. I learned a little, but mostly I set myself up well to jump into Part II next week.

Sunday, November 7, 2010

Tangent Time

I'm trying out a new practice at work. I'm calling it tangent time. One afternoon a week, I push my main project aside, shut my door, and quit all my communication applications. I spend my time on something sort of related to the testing I'm doing the rest of the week, but not directly. It's some tangent that caught my eye while I was busy doing the "real" work.

My manager and I came up with this during a recent one-on-one. (You do have those with your manager and/or reports, right?) I felt like I wasn't getting much done, due to lots of interruptions and a general burn-out sort of feeling. I also felt like there was a lot I could be learning that I just wasn't getting time for--knowledge and skills that would make me more productive in the long run. Even though, in the short run, my main project is way overdue and just needs. to. ship. already.

I picked Thursday afternoons. I don't have any regular meetings that day, and it's not Chaos Monday or Brain-Dead Friday or Apple Announcement Tuesday. Right after lunch, I double-check that my email didn't explode, and then quit Mail and iChat and Gmail and Twitter. I shut my door, though it's glass, so people can still see I'm there if they really need me. I get a nice solid 3 hour block. I stop at 4:30 so that people who leave at 5 can still get my attention before the end of the day.

Something tangentially related to work. I'm intentionally not being more specific than that, because part of the point is not to feel so obligated, so trapped.

The first week, I watched videos. Merlin Mann's talk at Twitter about Boring Meetings. I've sat through a few boring meetings this year, and if Apple stops throwing OS updates and app stores at us, I might get to lead some meetings in a few months. I'd rather they not suck. The second video was Steve Jobs announcing the Mac app store, Lion, and the MacBook Air. I was AFI (away from internet) during the event, and wanted to catch up on what everyone at work was buzzing about.

The second week, I worked through a bunch of Ruby koans. I mostly worked through them as intended, implementing each snippet of code in sequence to make the tests pass. But I did take a detour to hack the test framework so that it wouldn't give me quite as many hints by default.

The primary goal was to refresh my attitudes towards work. It's still early, but I think this is working. I used to follow some of these tangents as a way to procrastinate from my main work, and feel guilty. Now I am supposed to follow these tangents. It seems to give me a renewed interest in the both the tangent and official work.

Additionally, the tangents may not be as tangential as I thought. When I did the koans, within an hour, I had picked up 2 other tricks/recipes that weren't part of the official learning. But they solved real problems I'd been tripping over writing my testing robots recently.

For extra bonus points, I see some evidence that it's helping me concentrate a little better and not be so interrupt-driven, even when I'm not in tangent time.

Monday, April 26, 2010

The iPad as a Conference Laptop

I went to the Voices That Matter -- iPhone conference this weekend here in Seattle. I intend to talk more about the event itself later, but for now I want to talk about what I put in my bag -- and what I didn't.

This is the first conference I haven't taken my laptop to. I relied on my iPad and iPhone, and I would say the experiment was very successful.

Battery life would have been a total non-issue if I'd remembered to re-charge my battery Saturday night. While I was charging it at the conference Sunday, I wished for a slightly longer charging cable, but maybe that would have created a tripping hazard.

Typing was a little slow, but with all the slides posted online, I really only needed to type a few phrases when the speaker went beyond the slides or to jog my memory later. If I expected to do more iPad typing, I could have slipped my Apple bluetooth keyboard in my messenger bag and still kept it smaller and lighter than my laptop bag. I saw a few other people with folding keyboards, probably from the PDA era.

The iPad was quicker to setup and teardown when I moved from one room to the other. I could even pull it out to reference my notes between sessions. The iPad played nicely with the conference center wi-fi (though maybe that's more a review of Bell Harbor Conference Center?).

But what about Xcode? This is a developer's conference and the iPad doesn't have dev tools on it. Technically true. Only one session really encouraged you to follow along in Xcode. The others were more presentations, and I think scrambling to keep up with the demos in Xcode would have been more of a distraction than a learning tool.

I tried two different cases. On Saturday, I used Apple's folio-style case. There's a slot in the back that lets you prop the ipad up at an angle for typing. I've found this very handy and reasonably comfortable for typing on my lap. But when I sat at a table, it felt a little too high, so I mostly left it flat, or used the beveled edge of the table for tilt. It worked fine. On Sunday, I used a homemade sleeve. I enjoyed having a case with a little personality. And it's a way to show off my knitting hobby without being obnoxious. ("Look what I made!") The soft yarn gives the iPad some padding and doubles as a smudge-removing cloth. I tried using this case, folded up a bit, to prop up my iPad for typing, but it didn't work so well. I found myself typing less on Sunday, so maybe the wedge of Apple's case really is valuable, or maybe I was just lazier on the second day of the conference.

Will my laptop go to WWDC? Yes. Will it leave my hotel room? Maybe not.

Wednesday, March 3, 2010

Links for today's talk

I'm speaking about testing software on mobile touch devices this afternoon. I'll post my slides or a video or something later.

But here's some links to people doing similar stuff that I want to refer people to if they're interested: -- where our designers and engineers talk about their perspectives on the iPad and many other things -- the talk that first got me started thinking about how differently we need to design, develop, and test for the iPhone, by an iPhone developer -- I want to point people both to this speaker (and his blog) and this whole series of lectures about ergonomics and design.

OK, catch you on the flip side!

Wednesday, February 24, 2010

Making your iPhone App Environmentally Friendly

With a traditional desktop application, most of your users will be sitting at a desk, using a keyboard and mouse. So you can test the applications reasonably well by sitting at *your* desk, using your mouse and keyboard. Sure, there's edge cases, like laptops and graphics tablets. But your test lab or office cube is a pretty good approximaation of their home office or work cubicle.

Stop and think for a minute of all the places where you've used your cell phone lately. A lot of places besides your desk, right? In the next 24 hours, I bet I will use mine sitting at my desk, sitting in meetings, waiting for the bus, riding in a friend's car, shopping at a yarn store, and lying in bed. And all of these environments can reveal bugs that you won't find sitting at your desk.
- At a meeting: In a meeting, I might try to pull up important information on my iPhone and every second the app takes to load, my colleagues get more annoyed with me.
- At the bus stop: I may be interrupted at any moment, when the bus shows up. So don't penalize me for quitting the app. Pause my game so I can continue it later. Save my data.
- In a vehicle: Location isn't just something that can change every time I use the app. It can change *while* I'm using the app. Use the app while you're moving, and figure out whether the user will be happier if you update location-related stuff periodically, or let the user tell you when to update.
- In a store: I've probably only got one hand available, because the other's holding a shopping basket. Can I navigate the application without setting my stuff down?
- In bed: I like to read while lying on my side. So "upright" for me is now perpendicular to the floor. I turn an iPhone perpendicular, and in many applications, it happily rotates the screen for me, so text is still parallel to the floor. Not helpful. Amazon's Kindle app actually handles this very nicely. For a few seconds after a rotation, it shows a lock icon. Tap the lock and the text will get locked into position. After that, I can happily turn it any which-way and still read my book.
- On a plane: If you fly much, you know that all electronics get turned off for the first bit, and then they can be on, but with cell and wifi turned off. Can I use your application with no connection to the outside world? The first time I tried to use OmniFocus on a plane, it went into a loop of insanity, trying every minute or so to connect to the server and sync my data. By the time I dismissed the alert that sync had failed, it'd be nearly ready to try again. If you must fail, make sure you fail gracefully.

So figure out which of these environments are right for your app. I don't need to play an immersive multi-player game while browsing the grocery store aisles, but I better be able to check my shopping list! Test in these environments, or at least find ways to simulate these environments in your test lab. This is one case where a tin foil hat might actually be a legitimate approach!

Wednesday, February 10, 2010

And now a word from our sponsors....

I'm not blogging to make money. Let me make sure that's clear up front.

But I buy a ton of stuff from Amazon, and when it's good stuff, I tell other people about it. Amazon likes that, so they'll pay me for this. And when someone wants to pay me for something I'm doing already, I'm generally willing to go along with that.

So I'm going to try out this Amazon Associates thing. I'm hoping that it will make it easier for me to link to books and such in my posts. I also hope it will improve your experience of looking up the stuff I'm linking to. But if it turns out that it actually interferes with the primary point of this blog (discussing software testing), then I'll give it the boot. So let's test this thing out, okay?

Right now I'm reading Beautiful Testing: Leading Professionals Reveal How They Improve Software (Theory in Practice) and I hope to post a review of it soon. Maybe separate reviews for each chapter, since it's an anthology?

Thursday, February 4, 2010

The road to a presentation starts with a single step...

I have an opportunity to give a talk at another company soon. I've got a (very rough) idea of what the talk needs to contain, so I'll be coming back to it soon. But first, I need a bio and a talk 'blurb'. I'd love constructive feedback on this first draft. In particular, there has got to be *something* better than "hot new development platform"!

Touch devices are the hot new development platform. As testers, we need to borrow strategies from testing both desktop software and pre-touch phones. However, we must also go beyond these perspectives, and develop new heuristics specific to touch devices. Liz will share some of the lessons she's learned in iPhone testing and why it's essential to literally get your hands on touch devices while testing touch-based software.

Liz Marley tests the Omni Group's Mac and iPhone productivity software. She's also very eager to begin testing iPad apps as soon as possible! Liz has 6 years of professional testing experience, and 4 years of debugging homework assignments while earning a computer science degree from Harvey Mudd College.

Friday, January 29, 2010

Touchy Testing

I've been thinking for a while about the unique challenges of testing mobile, touch-based devices. I'm crafting this post entirely on my iPhone, and working around the UI designed for keyboard/mouse-based computers. [I ended up having to type it in an email, and tried the email-to-post feature, but now I've resorted to copy/pasting text from a bounced mail message to a browser window on my desktop machine.]

As a Mac and iPhone software tester, I'm itching to get my hands on an iPad as soon as possible. I told one of our engineers today that I think it's essential for testers to literally get their hands on these devices. I did some iPhone testing before I owned one, and did a decent job of finding bugs on borrowed devices and the simulator. But once I got an iPhone and began to use it day-to-day, I discovered all sorts of new user scenarios. Airplanes, reading in bed, Seattle weather, ... I expect the iPad will not be just a giant iPhone, but have a whole new set of interactions. I look forward to the discoveries. And who can turn down a shiny new toy?

Some other people have written much more eloquently on why it's not just a giant iPhone: