Tuesday, April 30, 2013

Did anybody test this? Caffeine withdrawal and why we need to test with realistic scenarios

I entered the break room at the office this morning, looking forward to that first cuppa joe, only to find a uniformed gentleman disconnecting the coffee machine. Fear not, he assured me, he was just swapping out the old machine for a newly refurbished one. 
Rather than stand around watching, I headed back to my desk to burn some time checking email.

A few testy minutes later I returned to my quest for morning caffeination. The newly refurbished Keurig single-serve coffee machine stood ready to dispense its liquid black magic. I lifted the handle, inserted a single serve package (aka K cup) of Breakfast Blend, and closed the lid, prepared to press the blinking button with the icon of a large steaming cup. 

Instead, the small text display sneered at me. "No K cup detected. Continue anyway?"

A colleague standing nearby chimed in. "It did that to me too. Just hit continue and it will brew."

I asked, "The guy just installed it. Didn't he test it?"

"He made sure it powered up okay. And then he checked that it would dispense hot water."

"But he didn't actually try making a cup of coffee?"

So the technician had run the smoke test and unit test and was satisfied. This seemed reasonable to my colleague (a developer :) ). But the tech had not tried the machine in the environment it was intended to run, in the manner in which customers were likely to use it. Nor, apparently, had the technician who refurbished it.

As the long-awaited caffeinated liquid lubricated my brain, I could not help but relate this incident back to my own role as a software tester. We increasingly mandate that testing, particularly system testing, be done with realistic customer scenarios and data. Why? Not only is this effective at finding bugs, but it finds the bugs that would be most problematic to our customers.

And bugs found before morning coffee are evil.


Tuesday, March 12, 2013

Family Favorite Irish Soda Bread Recipe

It's that time of the year again, when foods that shouldn't ought to be green - like bagels and McDonald's milkshakes - are, and you can't swing a shillelagh without hitting a leprechaun decoration. Yes, St. Patrick's Day draws nigh.

I have been asked again for my Irish Soda Bread recipe, so I have copied it below. For my full treatise on all things soda bread and corned beef related, see my original post at the following link:
St. Patricks Day classic cuisine - recipes and a little history

Irish Soda Bread

Here is my family's favorite recipe for a classic Irish Soda Bread (with raisins). Simple ingredients, easy to make, customize as you please.

Irish Soda Bread recipe
Ingredients:

  • 5 cups all-purpose flour (plus a little extra for dusting)
  • 1 cup sugar
  • 1 tablespoon baking powder
  • 1 teaspoon baking soda
  • 1 1/2 teaspoons salt
  • 1 stick (1/4 pound) butter (cold)
  • 2 1/2 cups raisins
  • 1 egg, slightly beaten
  • 2 1/2 cups buttermilk*

*you can substitute regular milk with 3 tablespoons of white vinegar added; wait 10 minutes for the milk to curdle


Preheat oven to 350 degrees. Stir together the flour, sugar, baking powder, baking soda, and salt. Cut in the butter. Mix well. Stir in the raisins.

Add the buttermilk and egg while mixing using a large spoon - or your hands! Mix well enough to get everything well moistened with no dry pockets; adjust milk amount if necessary. Don't overmix or you can make the bread chewy.

Turn the bread out onto a board dusted with flour. Dust the dough, knead lightly, divide in half, form into two rounds, and place them onto a lightly greased baking sheet. Use a knife dipped in flour to score a cross on the top of each loaf. (Helps the center to cook evenly.)

Bake for 40 to 50 minutes at 350 degrees, until the outside is golden and a toothpick inserted in the center comes out dry. Cool on a wire rack.


Variations:

  • You can bake it in loaf pans, a cast iron skillet, cupcake tins(!), or (my brother's idea) angel food pans.
  • A few tablespoons of caraway seeds. (Not my cuppa tea.)
  • Those who prefer a less rich soda bread can cut back on the butter, raisins, and especially the sugar.
  • For a heartier (and healthier) texture, substitute whole wheat for up to half of the flour.
  • A few teaspoons of grated orange zest gives a nice flavor. (credit Ina Garten from the Food Network.
  • Makes a great scone. Partially flatten a softball size mound and cut into even slices like a pie. Or just make small rounds. Bake as above.




Tuesday, February 19, 2013

Windows 8 Cheat Sheet

My last post, Windows 8 QuickStart, was an introduction to Microsoft's new operating system intended to get you over the hump of the paradigm change that is causing so many experienced Windows users to stumble. Here are a couple of other references that might be useful.

  1. New York Times Technology columnist David Pogue offers his introductory reference of "all of the most important touch/mouse/keyboard shortcuts for Windows 8." http://pogue.blogs.nytimes.com/2012/10/25/a-windows-8-cheat-sheet/
  2. Here is a very handy visual reference for the Windows 8 touch and keyboard shortcuts. You'll soon outgrow this, but until then you might want to print it out and tack it up near your monitor. (found here)
    win8keycommandsandgestures
  3. Finally, the Ultimate Shortcuts Guide at this link, http://docs.com/IOLP, concisely provides keyboard shortcuts as well as mouse and touch equivalents for a rather comprehensive set of actions. You'll want to download this chart and keep it handy.








Wednesday, December 12, 2012

Windows 8 QuickStart



Here are some notes that should get a user familiar with previous Windows version up and running quickly on Windows 8.

Windows 8 paradigm shift

Windows 8 presents a look and user interface that is quite different from previous versions of Windows, so much so that even an experienced Windows user will likely be confused and floundering on first try. However, once you understand the paradigm shift and some basic operations you should be able to access the Windows functionality you expect - and more.

Think of it this way: Windows 8 has taken the Start menu from the Windows 7 desktop and converted it into a Start screen which presents itself as the main interface - the face of Windows 8. All programs are "apps" which have dynamic tiles (icons) on the Start screen. The idea is to present a modern interface consistent across all platforms. In fact, Microsoft calls it the Modern UI - not Metro, that was just an internal name. It's touch friendly and tablet-like, but works just as well with a mouse and keyboard.

Another paradigm is that Windows 8 "Modern UI" apps attempt to present a clean, minimal interface, maximizing screen space, with menus and options accessed either with a right click or a pull-out side menu. The corners of the screen are magic touch points.

Start screen
  • programs are "apps" and appear as tiles on the Start screen (remember, no Start Menu!)
  • on the Start screen, to scroll left just push the cursor to the right (or swipe touch screen)
  • only apps written for Windows 8 create a tile on the Start screen; they optionally display info that updates live on the tile
  • to access all installed programs, accessories, and system utilities (Control Panel) - essentially the old Start Menu
    • right-click anywhere on Start screen, bottom ribbon appears, select "All apps" on right
  • All Apps screen shows all installed programs and utilities
  • click on a program to run, right click for context menu, which includes option Pin to / Unpin from Start screen
  • "Desktop" is an app on Start screen

Desktop
  • Windows desktop is still there underneath, accessed through a "Desktop" tile on the Start screen.
  • The desktop itself will look familiar - except no Start menu!
  • Desktop can have programs and browsers open in varying size windows, shortcut icons, a taskbar with minimized programs, Windows explorer, etc.
  • File Explorer, formerly Windows Explorer, looks very familiar, with the addition of a tool ribbon.

Apps
  • Windows 8 apps generally take over the complete screen (tablet-like)
  • cursor at top middle of screen changes to hand; pull down app to close
  • can use "hand" to shift app to 1/3 or 2/3 side of screen; can open second app in remaining space
  • when in an app, to go back to the Start screen bring the cursor to lower left corner of window, click on Start thumbnail that appears
    • shortcut to Start screen - press Windows key
  • to go to last used app, click in upper left corner
  • to go to a recently used app, go to lower left, see Start thumbnail, bring cursor up the left side and select thumbnail of desired app
  • on a touch screen you can just swipe in from the left side to go back to the last app

Other Controls
  • go to lower right to bring up Charms bar on right column
    • contains Search, Share, Start, Devices, Settings
    • Settings->Tiles allows you to "Show administrative tools as tiles on Start screen"
    • shortcut for Charms bar - Windows+C
    • or swipe in from right side on touch screen
  • Charms bar within app is app specific, but from Start screen is general to system
  • right click on Start screen shows system menu bar at bottom of screen (including "All apps")
  • right click within an app shows menu bar at bottom, and possibly top, which is app specific
  • Quick Access Menu (advanced users) - right-click on Start thumbnail in lower left corner
    • offers system tools, like Control panel, Run, File explorer, Task manager, Cmd prompt, Computer/Disk/Device manager, System panel
  • Integrated Search - just start typing anywhere on Start screen, opens search, finds anything (apps, files)
    • e.g., on Start type "Des" and list shows all installed DesignSync tools (GUI, SyncAdmin, shells, DS doc)

Internet Explorer 10
  • The standard browser for Windows 8 is IE10, although Chrome and Firefox are available
  • There are actually two versions of IE10 - the Windows 8 app run from the Start screen tile, and the one from the desktop
  • IE10 run as an app takes over full screen, minimalist controls, maximum screen
  • IE10 run on Desktop looks similar to IE9 - adjustable window size, menu bar

Note:
  • software written for older Windows version will likely install and run under Windows 8 but not create a Start screen tile
  • you can create a Start screen "app" tile for these programs by going to “All apps”, right click on program name, and select Pin to start menu



Monday, November 5, 2012

Pursuing Private Passions: Why Writing is Like Running


I like to write. I find it both challenging and fulfilling.

Crossing the finish line with my son on his first 5K
I like to run. I find it, well, both challenging and fulfilling. Hmm, deja vu.
Lately I have been thinking how much these activities have in common for me. 

Not that I am particularly skilled at either endeavor. I edited the Engineering magazine in college, and have had several technical and academic articles published over the years. But nothing for pay - although I am open to that :). Now I ramble on in semi-regular blog posts. I am a casual runner, and enter the occasional 5k, where I am usually in the middle of the pack. Certainly nothing to brag about.  But considering I spent my teenage years avoiding athletics, and I am at an age when many of my peers are developing a meaningful relationship with their La-Z-Boy recliner, I feel I am ahead in my own personal race.

And that is my point. It is good to have extracurricular pursuits that feed a passion and in some way better us. Something more than just work, chores, and exercise. Sure, running is good cardio. But it is also provides a time of quiet reflection, an adjustable level of intensity, and goals to track (if you so desire). I also enjoy organizing my thoughts and attempting to communicate them in a clear - and hopefully interesting - manner. I am one of those quirky individuals who appreciates a good turn of a phrase, and derives particular satisfaction from being able to share it with others, and perhaps evoke a response. And those skills can serve well professionally.

What really sealed the running/writing analogy for me was the satisfaction I derive from the effort of each, and the feeling of accomplishment afterwards. Compare that to post-chores; generally you are simply glad they are done. And we all need down-time, but when I let the television fill those blocks of unstructured time with banal sitcoms less interesting than the commercials that pervade them, I get a sinking feeling.

I must admit that my target audience for this message is myself as much as anyone else. I don't get out for a run nearly as often as I should or would like to, and I have let my blog lie fallow for several months. I hoped this topic might motivate and reinvigorate. (Another shared characteristic - these activities tend to reward perseverance and penalize a hiatus.)

What About You?

So what floats your boat? Do you have some endeavor that feeds your soul and leaves you feeling better for having done it? If not, find one! Brush up on your French. Pull that guitar out of the closet. Learn to play the ukulele (I hear it's fun). Take that Tai Chi class. Dust off your yoga mat. Tend your garden. Volunteer your time (another of my passions). 
I would love to hear your stories and ideas.

Post that blog entry. Now where are my running shoes?

Tuesday, March 20, 2012

St. Patrick's Day classic cuisine

St. Patrick's Day holds a special significance to me. I was born and raised in New York, so I am and will always be American. But both my parents were from Ireland, which was a pervasive cultural influence in my household growing up. Now that both my parents have passed, I realize that I can no longer take that for granted. It is my responsibility - and privilege - to remember that heritage.

But it is an Irish-American heritage, and St. Patrick's Day in the US is an Irish-American holiday. A time to celebrate the culture and influences the Irish have brought to this country, and my family. I am happy to celebrate that, along with the Portuguese-Italian influences my wife's family brings, and all of the other international and regional influences we have come to know and love as an integral part of this country.

And my middle name is Patrick. :)

So what are the required components of a St. Patrick's Day celebration? Consumption of alcohol. Men parading up Fifth Avenue in skirts. Women with green hair. Could be any weekend.
Green bagels? Bagpipe music? Getting closer.
Irish soda bread, corned beef and cabbage - now we're cooking (pun intended). Let's talk about some classic dishes associated with the holiday.

Irish Soda Bread

Soda bread is a "quick bread" rather than a yeast bread, meaning that it gets its airiness from the chemical reaction between a base (baking soda) and an acid (buttermilk), producing lots of tiny carbon dioxide bubbles which leaves tiny gaps in the baked bread. Yeast breads depend on cultivating lots of little yeasties in the dough that convert starch into sugar, and then consume the sugar, expelling carbon dioxide. Same effect, trickier to accomplish.

Here is my family's favorite recipe for a classic Irish Soda Bread (with raisins). Simple ingredients, easy to make, customize as you please.

Irish Soda Bread recipe
Ingredients:
5 cups all-purpose flour (plus a little extra for dusting)
1 cup sugar
1 tablespoon baking powder
1 teaspoon baking soda
1 1/2 teaspoons salt
1 stick (1/4 pound) butter (cold)
2 1/2 cups raisins
1 egg, slightly beaten
2 1/2 cups buttermilk*
*you can substitute regular milk with 3 tablespoons of white vinegar added; wait 10 minutes for the milk to curdle

Preheat oven to 350 degrees. Stir together the flour, sugar, baking powder, baking soda, and salt. Cut in the butter. Mix well. Stir in the raisins.

Add the buttermilk and egg while mixing using a large spoon - or your hands! Mix well enough to get everything well moistened with no dry pockets; adjust milk amount if necessary. Don't overmix or you can make the bread chewy.

Turn the bread out onto a board dusted with flour. Dust the dough, knead lightly, divide in half, form into two rounds, and place them onto a lightly greased baking sheet. Use a knife dipped in flour to score a cross on the top of each loaf. (Helps the center to cook evenly.)

Bake for 40 to 50 minutes at 350 degrees, until the outside is golden and a toothpick inserted in the center comes out dry. Cool on a wire rack.

Variations:
- You can use 2 loaf pans, buttered and floured; my brother ups the ingredients by 50% and bakes it in 2 angel food pans - cooks evenly, uniform slices
- A few tablespoons of caraway seeds. (Not my cuppa tea.)
- Those who prefer a less rich soda bread can cut back on the butter, sugar, and raisins.
- For a heartier (and healthier) texture, substitute whole wheat for up to half of the flour.

Irish Brown Bread

But is the Irish Soda Bread authentic? Hey, my Mother used to make it! You got a problem with that? :) 
Well, it seems that a working class family from generations past in Ireland would have baked a loaf from four simple ingredients: flour, buttermlk (the liquid leftover from churning butter), baking soda, and salt. Butter, sugar, eggs? Those were cake ingredients, not bread. This was an everyday bread that could be at any meal - with butter or jam for breakfast, a slice of meat for lunch, or sopping up your stew at dinner.

The modern equivalent would be Irish Brown Bread, which I believe is quite common in Ireland as well as Irish restaurants. The flour traditionally used was coarser, not as refined or processed, and lower in gluten that today's typical all-purpose flour. You can try to get your hands on flour or bread mix from Odlum's, a traditional manufacturer. Modern recipes attempt to duplicate the course texture by using mostly whole wheat flour and adding some rolled oats or wheat germ. Sugar and butter are minimal, and either buttermilk or plain yogurt can be used. Here is a link to a recipe that produces a darn good hearty (and healthy) loaf.

Irish Brown Bread recipe


Corned Beef

Corned beef is a salt-cured beef brisket, the name originating from the kernel shaped granules of salt used in the process. A traditional meal? It's complicated... I did some research, and it's a heck of a story.

It seems the Irish were one of the cultures that developed the process, and Ireland was one of the prime producers of corned beef for a couple of centuries. But not for internal consumption. See, the British overlords used Colonial Ireland as their private cow pastures. The best beef was sent to England, and the lesser cuts "corned" and used as naval provisions or for international trade. As that trade became increasingly lucrative, the English co-opted more and more Irish countryside into grazing land. Losing valuable farmland, the Irish were forced to rely more heavily on potatoes, which could grow under poor conditions. And that's why the Potato Famine of the 1840's was so devastating.

All the while beef remained prohibitively expensive in Ireland. But the Irish immigrants in New York and Boston found reasonably priced corned beef available from their friendly neighborhood Jewish butchers. The Irish considered this a luxury item, appropriate for celebrations, and it went well with the cabbage and root vegetables they favored. Thus grew the tradition.

Cooking the Corned Beef

Remove the brisket from the package and rinse well to get rid of excessive brine.
The meat will be salty but otherwise a little bland, so you need to kick in some spice. Many briskets come with a spice packet, which will do fine. Or you can use a tablespoon or two of pickling spice, if available. Otherwise, use a bay leaf, a teaspoon of white or black peppercorns, some cloves, and a berry or two of allspice.

Oven Method
My favorite method comes from my wife, who knows how to cook... as opposed to me, who knows how to eat. It is easy to scale up for a crowd, as you can get 2 to 3 briskets is a large pan, or use multiple pans.
Pre-heat the oven to 350 degrees.
Add some onion slices to the bottom of a baking pan. Place the brisket in the pan, fatty side up. Lay some more onion slices on top. Sprinkle with the spices. Add about 1 1/2 inches water to the pan. Cover the top with foil and crimp the edges to seal.
Bake for 3 to 4 hours.
Test done-ness by inserting a fork into a thick part of the meat. It should give easily, like you could just pull it apart. Otherwise seal it back up and give it more time.
When done, remove from the oven and let cool before slicing.
Important: Carve thin slices across (perpendicular to) the grain, not with it, to avoid the meat being stringy or chewy.

Over the top: For an extra special treat, a friend recommends putting a coating of mustard and brown sugar on top of the cooked brisket and putting it back in the oven uncovered until it caramelizes and forms a spicy-sweet crust.

One-Pot Boil
You can cook the entire corned beef and cabbage meal in one pot.
Place the brisket in a large pot, covered with water. Add the spices, and maybe a quartered onion. Boil for 2 to 3 hours. Remove some water skimming out some of the froth that may have formed on the top. Add a quartered cabbage, a couple of quartered potatoes, several carrots, cut into chunks. Add enough water to cover and continue boiling for another 45 minutes to an hour, until the vegetables are tender.

Vegetables
If you cook the cabbage and other vegetables separately from the meat, make sure to start with generously salted water. You can add the same spices. Boil for 45 - 60 minutes, until desired tenderness.

Friday, February 24, 2012

Did anybody test this stuff? Checking vs. testing on a credit card website


My recent stumbles on a department store credit card web site provide an excellent example of the difference between checking software versus really testing it.

Don't take this the wrong way. I am not one of those people who are never satisfied, constantly complaining about aesthetics and poor design. (Well, maybe occasionally.) And I don't have an ax to grind. I like this store. I like their web site. I like the functionality it offers me as a cardholder. But the other day I hit upon enough problems that it made me think this is a great example of an application where someone has checked that the features are functional, but has not really tested them.

On Feb. 15 my wife and I notice that the bill for our new credit card is due - on Feb. 14. Bummer. We had just gotten the card (in order to get a discount on some bedding and flatware) and so it isn't yet part of our bill-paying routine, nor have we set it up as a vendor in our bank's online bill payment system. But I notice the bill says we can pay online at their website. Great! Off to their website, where I see I must first register my account.

Online registration asks for my account number. I enter the account number exactly as displayed on the bill, a series of numbers and dashes, in an unstructured text box. I also fill in the other required fields (name, address, etc.). Submit.
The form redisplays, a red box at the top warning "Please enter all required information", and a red mark denotes the account number field.
I recheck, and the information I entered matches the bill exactly. Having been down a similar road before, I try removing the dashes from the Account Number. Submit. Success!

Issue #1: Inflexible data field, requires format inconsistent with that supplied to user.

Yes, this feature worked, within a narrowly defined scope, so technically no bug. But what a poor user experience! (Warning: Design rant!) How many customers has this form annoyed? How many had to call the service line for live help? Think of what a couple of hours scrimped on development cost in the long run.

How might this form been improved? Here are some possibilities:

  • Accept the format shown on the bill. Did the developer look at a bill, the thing most customers would be registering from?
  • If they really needed only numbers, how about noting that on the form? Beside the label "Account Number" add the clarifying text "(numerals only, no dashes)".
  • Present the field entry boxes in a way to clarify the format. Perhaps a series of single character linked text boxes, with hyphens displayed where appropriate.
  • When parsing the field entry, recognize the unacceptable characters and generate a helpful message. For example, "numeric digits only please, no hyphens".
  • Or how about taking a couple more hours of programming to parse the field contents, eat any white space (which might include spaces or dashes), and display the data back in the field, with the desired formatting.
Moving on, now that I successfully registered, I want to pay my bill. The layout is clear, the options appropriate. I pick the payment amount. Now for the payment date. Remember, I am already a day late. My choices are:

  • Today (2/15/2012)
  • Due date (2/14/2012)
  • Another date (chooser widget to select)
#Issue 2: Why am I being offered yesterday as an option?

I check "Today" and OK the form. I get a Javascript pop-up "Warning: Selected Date is past the Due Date, which may incur a penalty. Consider an earlier payment date."

#Issue 3: What choice do I have? Can they turn back time?

I decide to try their little wormhole, and choose "Due date" (i.e., yesterday). Submit. Accepted without warning.

#Issue 4: Why does it allow (even encourage!) me to pick a date in the past?

So I have submitted with a payment date of yesterday. No error, but no confirmation either. I see the account summary page, with no indication of a payment. Is it scheduled? Or maybe in process? 
I risk a double payment by trying again. Same result.
So I try a third time, selecting "Today" and pushing through the warning about late payments.
Success, with confirmation. That means the first two attempts did fail!

#Issue 5: Silent failure on payment dates in the past.

Let's review. The website offered a rich set of useful features, which all worked correctly under ideal circumstances. Yessir, someone checked that functionality!
But a series of reasonable though non-optimal inputs caused a number of unacceptable reactions. No, it does not appear anyone really tested this.