Welcome to MSDN Blogs Sign in | Join | Help

I'm out until August

 

I've tried to keep this up to date twice a week since I started.  Like most other people who run blogs, I did not want to post a few entries and then give up.  I want to let you know I will be out of touch for the next few weeks and won't be updating this blog.

 

In the meantime, I will have my tablet with me tracking a few projects I have.  I already use OneNote to gather all my data for these projects (yes, this sounds like an advertisement), but I also noticed how much I am using some powertoys.  For instance, I always check the length of my ramblings with the Word Count powertoy and use the printout manager to handle long Word docs being printed to OneNote.  I make sure to shrink the image a bit to leave me room for notes off to the side.  I also use the Copy to Device addin to help syncing with my mobile phone (a T-Mobile Wing, for those interested).    And maybe if I get some free time, I can play Sudoku

 

One other loose end to tie up.  Last week I mentioned the final call I answered when I was in product support.  I also remember the first call I took.  We had finished our training (at the time, the basic class was 5 weeks) and had worked with each other to deal with the expected calls for a new OS.  Issues like "my sound card doesn't work," "One of the floppy disks is bad," or "I can't get my CD player to work when I boot to the boot floppy" were all covered.  Of course, the fist call I took was slightly different (and I'm paraphrasing here):

 

"I just installed Windows 95 into the 15th partition I have on my drive system.  I can see some of the FAT partitions - I have five, and can see three of them - but none of the HPFS partitions are visible.  The FAT32 partition for NT shows, but I cannot browse it.  Oh, and I have a BSD partition I can see, but I cannot browse it.  And none of my linux partitions even show, except when using fdisk at a command prompt.  What should I do?"

 

And all of this was thrown into this fellow's 386 based machine.  We worked and got all the FAT partitions working, and he said he would take it from there.  No big lesson here, but I always keep these experiences in mind when I have to call product or tech support myself. 

 

I should be back in August.  Enjoy the summer!

 

Questions, comments, concerns and criticisms always welcome,

John

Posted by JohnGuin | 2 Comments

Sudoku Addin for OneNote beta is available

    Carlos Rivera has been working feverishly over the last few weeks to polish Sudoku for OneNote addin, and I'm proud to announce he has released his beta version today! You can get it here (the link is also below), or over at the codeplex site (www.codeplex.com/onom) if you want the code.

    Remember, the purpose of this addin was to use object model code we have shared at the codeplex site above to see if it was "ready for prime time." I learned some lessons from this - namely, we need a lot more documentation, and some of the objects (like tables in this case) need some work. In spite of these needs, Carlos managed to put together quite a fun little addin which uses the OM!

    To install, follow these steps:

    1. Exit OneNote completely (use task manager to verify it is not running, or reboot Windows if you are unsure)
    2. Run the setup program
      1. You may get prompted to install the .Net framework 3.5. It is needed for this addin.
      2. This took a l-o-n-g time for me for some reason, but it did eventually finish.
      3. You may need to reboot after installing the framework.
    1. Start OneNote

    You will get 2 buttons on the standard toolbar now. "New Sudoku" makes a new 9x9 table of Sudoku for you and varies the complexity between hard, medium and easy. When you think you have a correct entry, you can press the "Check" button to verify. Excellent!

    (If you click one of the buttons and it gets grayed out, verify you have the ".net programmability support" added for OneNote. In control panel \ programs, open the entry for Microsoft Office (or OneNote) and make sure the ".net programmability support" is checked under the OneNote entry.

    clip_image001

    There is room for improvement if anyone wants to jump in. Being able to choose the level of difficulty is obvious, and being able to convert inked answers to numerals before submission would be a great addition for tablet owners.

    And some design considerations were raised on the OneNote side. For instance, each 3x3 square in a normal Sudoku puzzle is separated by darker lines than the rest of the cells, and that is not possible to do in OneNote. Also, if you have many addins installed, the Check and New Sudoku buttons may not be side by side.

    If you want to test this, be sure to compare this implementation to the specification at http://www.codeplex.com/onom/WorkItem/View.aspx?WorkItemId=4345. Report bugs as Issues at the codeplex site!

    Give it a whirl!

    Questions, comments, concerns and criticisms always welcome,

    John

Posted by JohnGuin | 6 Comments
Filed under: ,

Attachment(s): OneNote Sudoku Addin.zip

Fixing the Lenovo tablet. Again.

    The hard drive on my Lenovo had died. It would not even pass the BIOS level hardware test during the tablet's startup. I had an external case for EIDE drives which I had used in the past when my drive on my laptop at home died and I brought it in to see if the drive was at all salvageable. I did not remember having anything on it which had not been backed up, but wanted to be sure.

    Of course the drive was not EIDE, so my case did not work. It was a SATA drive (for those non-hardware folks, EIDE uses a wide cable to connect the drive to the computer, SATA uses a narrow cable. Among other benefits, the wide cables were actually starting to restrict the airflow inside computer cases causing heating problems. The SATA cables do not block the airflow) and would not fit. Gary came by and pointed out the obvious - I could connect the drive to my desktop Dell. I powered the Dell down, disconnected the power and cable to the CD player and plugged in the drive from the tablet.

    For some reason, I started thinking "This is like Star Trek - I'm re-routing the thing to bypass the other thing." Anyway, it worked, and the Dell booted. Windows 2008 immediately wanted to run scandisk on the drive (which was just sticking out of the case - there was no where to bolt it). 118 errors later, it reported it had fixed the drive. I powered the machine down and reconnected the drive to the Lenovo. Now the BIOS would allow the machine to boot, but Windows XP would not load due to some missing DLLs. I copied them over from another machine I had at a command prompt, and lo and behold, the Lenovo started! It wanted to run scandisk as well, and found about 25 more errors, including 4 bad sectors.

    At least it started, though. While we have a pretty good budget for hardware, I don't want to keep spending it on replacement hardware - I would much rather "move forward" and get newer devices rather than replacing old. I'll keep this thing until it really dies, which, honestly, could be any minute. I don't have too much faith in the hard drive at this point. I already keep it backed up so I won't lose more than one day's worth of work when it dies.

    One thing that was pretty interesting was the "shock resistance" the Lenovo uses for its hard drive. Their television commercials make a point of saying the drive can survive a fall from a few feet. When I pulled the drive out it had a pair of rubber sleeves on each side of it to provide shock absorption. Here's the photo:

    clip_image001

    Notice the pull tab on the drive as well. That is simply a nice touch and makes it very easy to remove. Lenovo really puts its attention into little details like this. I just wish this one particular machine was better and not such a lemon.

    Another thing I noticed was the drive is a 100MBB drive, but was only formatted to hold 80GB. The paperwork which came with the machine also said 80GB, and my first thought was Lenovo devotes 20% of the space to its backup system. I looked at the drive with Windows Server 2008 and saw about 10GB of unpartitioned space, so I have no idea what is going on. I resized the partitions to take advantage of the extra space, but since the drive is giving me problems, I don't expect any real benefits.

    In fact, I've already gotten one "No Disk Error" since re-assembling the tablet. Oh well.

    Questions, comments, concerns and criticism always welcome,

    John

Posted by JohnGuin | 4 Comments
Filed under:

Office New Employee Training

 

I was able to attend "New Hire Training" for Office last week.  At Microsoft, all newly hired people go through a day or two of training to get used to Microsoft, get your card key/badge and general agenda like that.  Mark Russinovich talked about his experiences with that session here, and it seems pretty straightforward.  And if you haven't started reading Mark's blog, you should.  It is very good and he shows how to use many of the tools from Sysinternals to troubleshoot and identify problems with Windows applications.

 

In addition to the overall Microsoft orientation, each team at Microsoft has its own ways of doing things.  Office is no different and we have started an orientation session aimed at people new to the office organization who have been here from a few weeks to a few months.  I did not get a count, but there were probably about 2 dozen at the session I attended last Friday.

 

I was there mostly as a sidekick to the main presenter, and told to offer "amusing anecdotes" or "amplifying information" when appropriate.  Naturally, the day started with an amusing anecdote.  One of the new employees came up to me and asked if I remembered him.  I did, since we had met last fall when I took a trip to Microsoft Texas.  He pointed to the tablet I had (the Lenovo - I managed to resurrect the disk) and asked if that was the tablet.  Spooky - he had been reading my blog and remembered all the problems I have had with that machine.  We talked a bit and then got down to the session.

 

My introduction to everyone started with my tenure as a PSS call center technician for Windows 95.  Two things became apparent from that year I spent on the phones. 

1. All the stories you hear about tech support calls are true.  All of them. 

2. My last call I ever had started like this: "I have an Epson compatible printer which won’t print with Windows 95, and I am not going to tell you what model the printer is.  It is Epson compatible and that's all you need to know."  This call did not go well. 

 

The rest of the session went well.  We talked about the drive to finish Office, how we release the builds, burn the CDs and even talked a bit about ship parties.  The only amplifying information I could offer was based on communication.  My suggestion was to attend a triage meeting (those meeting we use to identify the bugs we need to fix and in what priority order).  What can otherwise be a somewhat mysterious process is made much more clear when you see the human interaction around the discussion and understand, as a tester, why a bug comes back to you asking for more information.  Once you are familiar with why the bug comes back, you can be more sure the next time you go through the process that you get the information which is needed to evaluate the fix.  As a single example, let's say you have a spelling check bug and a fix for it.  One of the questions asked will be "What is the performance of the fix?"  If the new code fixes the problem but takes 500% longer to run than the original code, everyone needs to know this.  I think this is another way of saying to be complete with your testing and evaluation, and communicate clearly with your results.  Seems very basic to me!

 

Questions, comments, concerns and criticisms always welcome,

John

Posted by JohnGuin | 0 Comments

Some quick power consumption testing with a "new to me" tablet

 

The Lenovo I had been using has given up the ghost.  The hard drive in it has physically died - it won't boot, nor pass the BIOS diagnostics.  I now have managed to get assigned a Fujitsu Lifebook - a "hand-me-down" from another tester who no longer needs it.  It's pretty nice so far, but I am not looking forward to learning yet another keyboard layout.  Seriously, why no two companies can decide where to place keys is beyond me.  And on this tablet, the CAPS LOCK key is the second largest key on the keyboard. 

 

One of the last tests I did with the Lenovo before it died was hook it up to a Kill a Watt meter to see how much power it used.  While booting, with full screen brightness and the hard drive running, CPU at 100%, the tablet pulled 35 watts or so.  Not too bad relative to the a desktop.  As a single point of reference, both a 19 inch flatscreen and a 19 inch Energy Star CRT monitor need 60 watts.  I was not truly testing power consumption at this point.  I was just seeing what the device needed.

 

The Fujitsu arrived and I decided to hook it up the same way.  I expected similar results, but the Lifebook  needs about 45 watts on average, and can bump up to 55 at times.  Some of that much higher result is because the Lenovo did not have  a CD player and the Fujitsu does.  As it sits idle now, with only a full brightness screen, it uses 21 watts.  Turning the screen down to the most dim setting at which I can still see it, power consumption falls to 17 watts.  Not too bad for a dual core notebook.

 

Now here's the real geeky bit.  I run GIMPS at home 24 hours per day.  I have a single core dekstop running it, and the CPU stays at 100% load.  I'll spare you the math, but with GIMPS running, my power bill here in the Seattle area goes up about $56 per year.  It would be quite interesting to see how much each tablet would cost in electricity per year, but I'm sure each manufacturer would come up with a typical "user scenario" that benefitted its line of tablets. 

 

The OneNote 2007 team tested power consumption pretty well too.  If you look in Tools | Options | Other, you will see a battery settings dropdown.  This controls the search indexer, which in turns uses the hard drive.  Since most modern laptops will stop spinning the hard drive (due to its power consumption) unless it is needed, we let you control whether you want the indexer to run.  If you have many audio recordings, the index can take quite a while to be developed.

 

Questions, concerns, comments and criticism always welcome,

John

Posted by JohnGuin | 3 Comments
Filed under:

Tying up one loose end and starting another

 

In February 2008 I mentioned some extra functionality built into our "napkin math" system.  I sent the details to our technical writers and waited to see how long it would take to get the online help article at http://office.microsoft.com/en-us/onenote/HA102140621033.aspx updated.  The answer:  4 weeks.  Not too bad to get the new file localized to all the languages we support.

 

And my Lenovo died again.  I was remotely connected to it and my screen froze.  Looking at the tablet, I saw a pop up alert that the wireless connection had limited access.  I clicked it for details and got a blue screen of death.  And the machine won't boot anymore - not to Windows, not to safe mode, not to a command prompt.

 

One of the new benefits Microsoft recently rolled out was a laptop repair station.  I'll try to take this machine to them to see if there is something they can do (replace some faulty hardware most likely).  Since this is a new program, I will also track how long it takes to resolve the problem, mostly to satisfy my own curiosity.  I have no idea what to expect, but figure that if I had to return this machine to Lenovo to get it fixed, I would need about a week to ship it to them, two weeks for them to repair it and another week to ship it back.  Anything less than a month, then, seems like a nice win.  I'm just happy I had copied all my important data to some external sharepoint sites and flash memory devices.

 

I'll keep you posted.

 

Questions, comments, concerns and criticisms always welcome,

John

 

Problems with meetings (not OneNote or even software related!)

    Even testers need to have meetings now and then, and during my 40% of the week last week, we had two of "those meetings" back to back.

    In the first meeting, we could not get the overhead projector working with the first tablet we tried. The cable would not physically plug into the connector. The bolts connected to the connector had extending bolts attached to them, and that extending bolt was loose. A rough drawing is like this:

    image

    Piece 1 is the bolt which sticks out and is tightened when you connect the assembly to your video port. Piece 2 above is the part of the screw which gets bolted into your video port to hold the connector in place.

    We fought with the connectors - which, among other things, had been taped together - for a bit but did not want to waste too much time since our time in the room was limited. Instead, I grabbed the cable and connected to the Lenovo tablet I'm back to using. This worked well after I was able to tighten the screws. Then I had to unplug the cable. The screws would not loosen, so I grabbed my multitool and used force. Obviously, if I'm using a tool on a computer, something has or soon will go wrong, and this was no exception. I broke the screw (the red item above"piece 2") into the tablet by using the screwdriver:

    clip_image001

    Notice the right most post has the broken screw in it. Sorry for the fuzzy photo - it’s the best my cell phone could take.

    As if that wasn't enough, the exact same problem happened an hour later for a follow on meeting we had. This time, though, we did not tighten the screws down and called for a technician to come by. He noticed the bolts to the bolt extenders was not correct, and quickly assembled a new connector. Since they screws in this case had been over-tightened by whoever had previously used the room, his one tool was not enough. Out came my multitool again, and this time it took two of us to undo the connector. The tech quickly assembled a new connector and went out to inspect the other meeting rooms around us to prevent these problems from happening to others.

    I think the only lesson learned was to arrive early if possible to test any hardware you may need for a presentation. And carry a multitool.

    And on a Lenovo note, the sensor which detects when the screen has been rotated is flaky. Now and again, it will think I rotated the screen, so the UI will go into portrait mode. Talk about a frustrating bug…

    Lastly, thanks to Dan Escapa for reminding me that when frustrating events like this occur, I can always "blog about it and forget about it."

    Questions, concerns, comments and criticism always welcome,
    John

Posted by JohnGuin | 1 Comments
Filed under: ,

The other bug in our test code for spelling

 

Last Thursday I posted some snippets of the code we had been using to automate and verify spell checking had been implemented in OneNote correctly.  Before I could check in the code, there was one other bug I needed to verify did not exist, and the code I posted would potentially have let it pass by unnoticed.

 

When I call the routine to get the dialog named "Microsoft Office OneNote," the routine gives me the number of the first dialog which has that caption.  In the positive cases (the case in which spell check is functioning normally) this test will pass and work with no errors.  There is a negative test I need to perform, though.  If OneNote somehow launches two spell check dialogs, my test would miss the second dialog.  Or if OneNote decided to spam me with hundreds of these dialogs, I would miss that error condition as well.

 

So I added a new function very similar to the first which returned the count of the number of dialogs which had the caption "Microsoft Office OneNote."  I check the number of these dialogs before starting spell check (it should be zero, but does not necessarily have to be), check after I expect spell check to finish, in which case the count should go up by one.  After dismissing the dialog, the count of these should be back to zero, or whatever the initial count was before this all started.

 

Oh, and the loop breaks out gracefully when there is no Next Window to get, so that's why the original function failed.

 

Even after all of these checks, the test can still fail to verify that spell checking was successful.  In the amount of time it takes my code to find the dialog and dismiss it (either by clicking OK or pressing Escape), another dialog from any source can pop up and steal focus.  Such is the nature of UI based automation.  Since all our other scripts are getting migrated to UI-less, we will have a nice set of UI based tests to compare them to since spell check will still have to deal with the UI.  Stability numbers for the two types of tests will be very interesting to see.

 

Questions, comments, concerns and criticisms always welcome,

John

 

 

Posted by JohnGuin | 0 Comments
Filed under:

Fixing a bug in our test code for OneNote

    As hard as we have been trying to convert our test automation scripts to UI-less automation, every so often we get backed into a corner and need to deal with a dialog which pops open at some point. An example of that is the "Spell Check Complete" dialog. Hit F7 in OneNote or Word or the like and, if you have no spelling errors on the page, you should very quickly get this dialog:

    clip_image001

    There is not a lot to this dialog. Just a frame named "Microsoft Office OneNote," an "OK" button, some text and an icon. What to do with our automation when this dialog opens seems equally simple: verify the dialog is indeed open and dismiss it.

    To complete those two tasks, the first thing I need to do is get a handle to this particular dialog. For those that don't write a lot of code, think of a handle like a street address. It's just a number. To get that number, I can use the FindWindow() command well documented at http://msdn.microsoft.com/en-us/library/ms633499.aspx. All I need is the name of the window, which in this case is "Microsoft Office OneNote." Our task library has a routine already to help. This is what it looks like:

    public static IntPtr FindWindowWithCaption()
    {

    string strCaption = "Microsoft Office OneNote";
    IntPtr hWnd = IntPtr.Zero;
    hWnd = GetForegroundWindow();

    while (hWnd != IntPtr.Zero)
    {
    //Get window caption
    String caption = //some uninteresting code to get the caption of the window handle

    //If caption text equals string, return handle
    if (caption.ToString().Equals(strCaption))
    {
    return hWnd;
    }

    //Get next window handle
    hWnd = GetWindow(hWnd, (uint)GwType.GW_HWNDNEXT);
    }

    return hWnd;

    }


    As far as code goes, this is pretty straightforward. It gets the number of the topmost window open first, then compares its title to "Microsoft Office OneNote." If the caption of the window matches, it sends me back the number. If not, it keeps looking through all the open windows one at a time to check to see if the caption matches.

    And the routine sort of worked for me. It would always find the spell check complete when it was open - great! But I also need to check the dismissal of the dialog, so I had to call the routine a second time to verify the dialog was gone after being dismissed. This second check failed. It took me an embarrassingly long time for me to find the bug - can you spot it more quickly?

    -------------------------------------------------------

    The problem occurred when the loop was in its last pass. At that point, hWnd was the number of the last window opened on screen. The code would check to see if the name of the caption was "Microsoft Office OneNote" and it would always not match - remember, the dialog was not open at this point, so it would never find a dialog with that name. Then the code would quit checking since it was at the end of examining all the windows, and return the number of the last window it had checked. Bingo! I decided to create a second temporary number and only set it to a value when the correct dialog was found, then return that value.

    Here's what I had:

    public static IntPtr FindWindowWithCaption(string strCaption)
    {

    IntPtr hWnd = IntPtr.Zero;
    IntPtr retVal = IntPtr.Zero;
    //…same as above

    while (hWnd != IntPtr.Zero)
    {

    //the same as above ...
    if (caption.ToString().Equals(strCaption))
    {
    retVal = hWnd;
    return retVal;
    }

    //Get next window handle
    hWnd = GetWindow(hWnd, (uint)GwType.GW_HWNDNEXT);

    }

    return retVal;

    }

    Now the code will properly return the number (handle) of the first window it finds named "Microsoft Office OneNote." And the second test I had now works properly.

    But from a test verification point of view, there is still a bug present. Can you find it? Hint: read the paragraph above one more time and think about other things that need to be verified, or other things that may not work as expected when spell check is complete.

    Questions, comments, concerns and criticisms always welcome,

    John

Posted by JohnGuin | 2 Comments

Testers have a different perspective on movies

 

Gary came by the other day and we talked a little about the mentality of testers.  He had watched a movie over the weekend and asked his wife about some of the details about what was going on in the background during some of the scenes.  Apparently, he had been paying about as much attention to the background as the main characters, and was wondering if he was the only one who noticed such things.  It led to a minor disconnect in his house - he had a  significantly different experience after seeing the exact same movie as others.  I have a couple of examples as well.

 

First, any film by John Hughes.  He always pays attention to the details in the background, with the most famous being the custom license plates most of his cars have.  I watch these movies over and over and his attention to the little details always impresses.  And they are great stories, too.

 

Second, there is a video at http://viscog.beckman.uiuc.edu/media/dailytelegraph.html which challenges you to count some actions in a basketball game.  I think most successful testers can complete this experiment - I did.  Oh, and you have to have Java installed to see the video (third link down).

 

If you compare this to testing software, the mentality is the same.  We are tasked with finding the big errors before we ship (OneNote won't start, corrupts my data, etc…) and are also on the hook for tiny errors as well, such as "the third sentence in this dialog does not end with a period and it should".  We need to identify and track all these errors.

 

Part of the key to completing this task is a mantra I was taught long ago: "The proper place for bugs is in Product Studio."  When testing any feature in OneNote, for example, napkin math, it is possible to stumble across anything.  When a tester notices an error with any area of the product, she stops and enters the bug before continuing to the area she was planning to test.  So if she is trying to verify some payment functionality but notices the colors do not appear correctly, she stops her planned testing to investigate the coloring problem.  This will eventually lead to finding a bug report in our database which is being used to track the coloring errors she noticed.  There may be an existing bug already that someone else reported or she may need to enter a new one.  Either way, we wind up with an actionable report which will need to be resolved.  The next step, once the coloring problem has been logged, is to get back on track with the napkin math testing. 

 

I know this is kind of a short note today.  Our intern, Anirudh Saraf, starts this week and I'm getting the final preparation completed for his arrival.

 

Questions, comments, concerns and criticisms always welcome,

John

Posted by JohnGuin | 1 Comments

Life in testing: more about meetings

    Last week I mentioned that about 40% of my time was taken by meetings. That's probably normal for a manager here at Microsoft and I don't see anything unusual about that number. But for a meeting to occur, at least two other items need to be present: other attendees, and a meeting room. Since most other people have plenty of meetings themselves, attendees are usually able to be supplied. Rooms, on the other hand, need a bit more planning.

    Meeting rooms at Microsoft are not particularly rare, but they are hard to schedule. About once every 2 months, I'll be at a meeting and right at the start, a second group of people will arrive and think they have the room booked. Our automated reservation system won't let meeting conflicts like that occur, so the confusion usually results from someone not even attempting to update the location of the meeting. Still, the two groups of people inevitably lose a few (5 minutes, to maybe 10) trying to look at the calendar, checking with the building receptionist, verifying information in Outlook, and for the team who does NOT get the room, trying to find a last minute empty meeting room.

    This is not an exceptionally large problem, just troublesome. Some enterprising people around here even created a web page which looks at the Exchange servers to show when each room is free or booked, but word about that service has been slow to propagate. A new item showed up a few weeks ago that now should help. Outside of each room is a small screen which shows the room's agenda for the day:

    clip_image001

    Now I can quickly look at the little screen to see if the meeting I think I am attending is still in this room. And others can easily see from outside the room if the room is theirs - no more meeting interruptions if not. The screens are touch sensitive, too, so you can scroll around to see who has the room when. If the room is not yours, you no longer interrupt the meeting which has already started.  I also like the red "In A Meeting" button - it's like the "On The Air" lights broadcast studios have.

    Not much to test with this device.  It is pretty stable, and the underlying software works well.  It's simply nice to have this extra help with planning and holding meetings around Microsoft.

    Questions, comments, concerns and criticisms always welcome,
    John

Posted by JohnGuin | 3 Comments

The Most Hilarious Outlook Configuration Utility Ever

    I had to log into a computer this last weekend for the reserves. I'm used to getting frequent updates for all the software installed on the machine (and believe me, the navy equips their machines with a staggering amount of software) but I was totally unprepared for the Outlook "update and configuration" tool which ran.

    Here's the screenshot, and notice the circled command being executed:

    clip_image001

    You see the "SendKeys" command? "SendKeys" is a command supported by Windows which performs the functional equivalent of a user typing at a keyboard. SendKeys("John was here.") would send the letters J, o, h etc… one at a time to whichever application has focus. If OneNote was in focus on the cursor was on a page, the letters would appear to be typed as the command was executed. If focus was in the search box, the letters would get typed there, and so on. If a login prompt pops up between the time the system sends the letter "J" and before "o," the "J: would go where I expected, but the "o" would get sent to the login popup dialog.  This is the same technique our legacy automation system used, has this same problem with pop up alerts, and those focus problems alone are a good reason not to use that method.

    This utility was literally using the Outlook UI to drive its configuration process. To "Customize Outlook," the app sent the keys to open Tools \ Options and then tabbed through the dialog to set the default reminder time to 15 minutes and made other settings like that. I was so stunned when I saw it running that I couldn't even act and get a screenshot until it was on step 5 out of 13. Amazing - at one point of my Outlook testing career I tested and ensured that these settings could be deployed via reg keys and login scripts programmatically. To see a vendor use the UI to drive the process is simply mind bending to me.

    Once I got over my initial shock, I naturally tried switching focus, opening new windows, sending random keystrokes from the keyboard to confuse the application. It would pause for a second or two, then pop Outlook to the top of the focus order and continue. I really wish I had been running a screen capture movie making utility. It took a few minutes to work through the UI and complete.

    Oh, and for the Outlookers out there, this app moved my OST to the desktop. I have no idea why.

    I don't know if there are any new lessons to be learned here. I see this more of a reinforcement of "To a hammer, all problems look like nails" philosophy: whoever wrote this knew how to use the SendKeys command and implemented a solution using that functionality, without trying to see if there are vastly simpler ways to accomplish the task.

    I'm amazed at what happens in the tech world.

    Questions, comments, concerns and criticisms always welcome,

    John

Posted by JohnGuin | 1 Comments
Filed under:

OneNote and Education information available

Good news:  Mike Tholfsen has started a "OneNote in the Education World" blog at http://blogs.msdn.com/onenote_and_education/.  This is good news on several levels.

First, it gives a different view on how to use OneNote to help schools, teachers and students now, as opposed to the line of thought that says "Here's what we're planning for five years from now."  Mike also plans to cover OneNote used outside of traditional brick and mortar academia: corporate training, adult education, etc...

Second, I've heard from several readers of my blog here that the test team should not focus only on education scenarios.  We cannot afford to (and certainly do not) have that narrow a focus in the test organization, and Mike's new work should help draw the line between the testing and the education efforts.

Lastly, meeting teachers and students is always fun and informative, and I hope I get invited to some of the meetings.  Just so long as they don't server cafeteria food...

Questions, comments, concerns and criticisms can be sent to Mike here: http://blogs.msdn.com/onenote_and_education/

 

 

Posted by JohnGuin | 2 Comments
Filed under:

The typical work week in OneNote Test

    One of my friends was asking me about Microsoft over the weekend and wanted to know what it was "really like" working here. I suggested he read my blog since that is ostensibly the purpose behind it: to show what life is like as a tester here. He did not want to read it, and started asking questions instead (and to be fair, it's hard to read a blog while standing in a parking lot talking). One of the questions he asked me was how many meetings do I go to in a week. That's a question which always seems answerable with "About three more than I need to attend," but this week I decided to look it up and actually see. Here's a snapshot of my schedule:

    clip_image001

    I got this listing from Outlook 2007. If you right click your calendar in the folder list, you will see a menu item for "Send via email…" Choose it and you get a simple dialog which lets you insert your calendar in an email and show just free/busy status (like this), and lets you add details if you want.

    By my count, I have 23 hours and 45 minutes per week free. That means as I enter my office on Monday morning, about 40% of my week is already booked for meetings, and if experience is any indication, I can expect one or two more to arrive in my inbox as the week progresses.

    And looking through the details, this seems about right a lead on a team. The 60/40 split also seems to reflect my anecdotal and informal guess at my week.

    On the plus side, some of these meetings get cut short, and very few go over. We have a dearth of meeting rooms in our building, which means if you book a room for an hour long meeting, about 1 minute before it is scheduled to be over the next attendees will start to gather outside the door. This serves as a forcing function to conclude the meeting. And on a personal level, I'm not afraid to walk out of non-productive meetings - there is always "the next highest priority task" on my plate which needs to be done.

    Questions, comments, concerns and criticisms always welcome,

    John

Posted by JohnGuin | 3 Comments

A test plan for recognizing text in images luckily goes awry

    I had a plan many months ago to build a photo database of images with text to use to test our OCR (optical character recognition) routines. At the time, I was new to the team and had not seen the testing which was in place, but wanted to add to the repository anyway.

    Whiteboards at Microsoft are everywhere. You get one at a minimum in every office, and I have three. In our kitchen area, we have a huge whiteboard next to the coffee machines. It is normally used for brainstorming and the like, and I thought the text on the board would be nice to use for testing. In order to get everyone on the floor of my building involved, I decided to start writing a "question of the week" on the board near the coffee machines each Monday and make it general and interesting enough that everyone would want to answer. I would then photograph it when full and add to the repository for testing.

    I thought my plan was pretty good. Since we have the new Starbucks iCup machines, each cup of coffee takes about 60 seconds to brew on demand. "While people are 'perco-waiting*' ," I reasoned, "they can write answers on the board."

    Some of the questions posed received mediocre responses at best. The last book you read, the next movie you want to see, etc… The board would normally not get filled by the end of the week. More personal questions like "What is your favorite guilty pleasure website" generated more responses - my answer was www.cuteoverload.com, FWIW-  with the board sometimes filling up after three or four days. And this week things went haywire.

    I asked about the proper use of the apostrophe.

    Within half a day, the board was full. People even started hanging up pages from reference materials and a printout from the "Apostrophe Preservation Society" in the UK. I'm just waiting for the Bob the Angry Flower poster.

    While this has been and still is fun, from a test point of view, this was a bad plan. We (OneNote) do a very good job of recognizing text in images, and a very good job of recognizing handwriting in ink form on a page. Photographing handwritten text like this does not work well since the writing on the whiteboard is almost literally ink.   My plan would have taken an algorithm based on formatted text and tried to use it in a free form handwriting environment. We don't get the clues that ink typically provides like starting and ending points of the pen, directional information and the like. And as you can see below, the OCR does not work well. (This is the right half of the board, by the way).  My tests would have had erratic results and not tested anything useful at all.

    But it was (and is) still a fun project.

    And notice the final, last gasp at OCR from the bottom image. Slash. Dot. Kind of appropriate in a way, don't you think?

    Questions, concerns, comments and criticism always welcome,

    John

    clip_image001

    (opH
    çt,44c4ciJCC,.
    oi
    *JS
    çQ•C)
    I

    ?,r 7’3z(vt: Whah pRopL
    (I'm snipping the rest.  You get the point.)

    clip_image002

    ‘‘
    a)
    yYbflcAR (‘f £01rb4

    (ê.
    LA.. nAee?
    f.1
    •%
    /.

     

     

    * Perco-waiting: the act of standing around waiting for a cup of coffee to complete brewing.  I see it daily.

Posted by JohnGuin | 0 Comments
Filed under:
More Posts Next page »
 
Page view tracker