Not a Good "Six Degrees" Moment

OK--you know how like everyone on the planet is supposed to be at a minimum six degrees from everyone else?

Well today I experienced the not so pleasant version of this concept.  I found out this morning that I knew three people on Flight 1549.    The VP of Marketing, the guy who is in charge of Marketing tech innovation & development, and the marketing dev manager were all on that flight.  In particular Don Norton was the "door guy".  You know, sitting on the emergency door row of the plane and was instrumental in getting the doors open and getting everyone out safely.

See his interview on Fox News here  Read Darren's experiences here

Talk about incredible.  Thank the gods everyone got out safe with only relatively minor injuries.  Since everyone got out safe I feel like it is possible to poke a bit of fun at the whole thing.  We've been talking locally about who should play Don in the movie version.  I'm thinking Charlie Sheen maybe...

Still though, I'm glad everyone was safe and sound.

<gulps>

 EDIT:  Here's Darren & Don on Larry King last night:  here

And people thought I was making a joke about the movie of Flight 1549

Apologies for long absence

Greetings Geekdom.  My apologies for the  long  absence and my apology  to the gentlemen who I was conversing with regarding is Automated Testing "testing"

First  to you:  I got your response email.  I will post it up here in the next day or two with my thoughts  on your questions.

Second to the geeksphere:
My absence can only be blamed on two things:  hectic holidays and being extremely busy at work.  All I've wanted  to do since Thanksgiving was come home and veg out.  And if I wasn't veg'ing out, I was out X-mas shopping.  :)

So anyway...things have finally settled down a bit. 

On the professional front, my new gig extended a FTE position to me and I started with them as an FTE on the 29th of December.  And man can we say they keep me busy...OY...I've created more test cases in the three months I've been there than I did in an entire year at my previous gig.

Now granted a lot of these cases are not reusable action created scripts.  For the most part, they all have test case specific code in them but they work and I'm saving  a manual tester 8 manhours worth of repetive work every week.  Given the cost of my time, we'll recoup the time spent in three months of weekly exection.  How's that for justifying one's  existence.  BOO-YAH!

Additionally I'm now coordinating automation development by several offshore resources we have through an offshore  firm in Mumbai.

Now in  gerneral,  I am not a huge fan of outsourcing.  I'd rather hire americans and have the work done here.  But so far I've been really impressed with these guys.  They can think on their feet and adapt to changes in priorities with the agility of the best onshore resources I've worked with.   Not to say I still think we aught to hire american..but at  least I'm getting more stuff done than I could by myself.

And finally I do have a QTP/.NET Web  related question for the geekdom.

One of my applications under teset is a .NET Web app.   (Not sure which framework but I suspect it is 2.0.)  Now when this application is initialized it starts out as a regular  website rendered in a browser.

Once the user logs in to the system, the app renders a popup for the actual app with no "Go" entry fields, no "processing" e or anything etc.

As a result of the supression of the browser's native navigation clues etc, the users of the system complained that they couldn't tell when the app  was doing something.  So the dev added a "Processing" function that appears when the app has to go off and  do something.  It disables 90% of all of the objects on the page and in some cases if you do an if exists it will fail to find the object as entered into the OR.  I call this the "grey screen of ennui" because it is ANNOYING as all get out.

The principle problem with this feature is that the display of the feature does not put the browser into a "non ready" state.  Therefore "Sync" is useless. 

My question is, can someone suggest another way of dealing with it?  Right now I have a function that utilizes a for next loop running If Exists over and over again.  However, I'm finding that it is not 100% reliable.  So I need a better  way....

Any suggestions the geekdom might have aside from requesting an application enhancement to make the grey screen of ennui put the browser into a non-ready state would be most appreciated.

More to come on the "Is Automated testing  testing" debate.

Can Automated Testing be Called "Testing"?

WARNING--THIS IS A VERY--VERY--LONG POST

To respect a friend's blog space, I've decided to respond to a commenter on Theo Moore's blog  regarding a review he posted about TestComplete.

The commenter posted the following comment to me:


Dear MES,

Thanks for answering my query on be half of Theo. I would still love to hear from her (I think theo is female not a male).

>> there are things that you can do with QTP that qualify as "testing."

Can you name them? I am especially interested to know what is testing according to you. QTP is a tool, a software that can help a human tester in executing some tests and do some comparision. Testing in my opinion is a deep human intellectual investigative activity that happens to cognitive engagement of human with the environment of software. It is way beyond what a tool can do. It is possible that testing according to you may be different from my definition. But, equating automation to testing is something that is difficult for me accept with some probing around.

>>> It is capablye of so much more than simple record and playback

Yes it is ... I did not comment on record/playback aspect. QTP can do lots of things. None --- none of them can qualify to be testing in totality. QTP helps a human tester in testing. I agree it does more than simple R/P

>>> I've used it to verify applications are storing data to a database correctly using ADO DB connection objects. I've used the DOM model of a webpage to dynamically determine objects on the page (with a little help from my friends of course) so that the tests were not relying on the Object Repository.

You are right. QTP can do all these. But none of these can be called "testing" on their own. They are tasks or constituents of testing. If you call these as testing - I can only say that your definition of testing is very narrow and is nothing more than comparing expected result to actual result.

>>> So, frankly--castigating Theo on his choice of language in an industry with no standards regarding what is a Test Case versus Test Script versus Test Scenario only shows your ignorance

I may be ignorant -- but I am open to learn from you and improve my understanding of testing. I feel that what theo is calling as testing is actually is automation. I am sure she knows the difference.

By saying there is no standard in terminologies, what stops me from calling automation as fish and testing as elephant. Blogs and public communications are open for criticism and scrutiny. So, I posted my view points - let Theo clarify what is the meaning of testing according to her.

>>> is in no way suggestive of Theo's lack of experience in this arena. Which btw he has considerable knowledge.

My intention was never to question and challenge Theo's experience. As a tester I challange anything that is testable.

Even my this comment is open for challenge

Shrini Kulkarni 
First--I feel M. Kulkarni should understand a few things about my Quality Control/Quality Assurance (QA/QC) background before I respond to his questions directly.
  1. I have been a QA/QC professional since 1998. 
  2. I am a Certified Software Testing Engineer (CSTE awarded in 2005)
  3. In my career I have been an accomplished manual tester.
  4. Currently I consider myself to be an accomplished software automation engineer specializing in Keyword driven automation framework development using HP QuickTest Pro as my toolset with homegrown extensions via vbScript.
  5. And since he seems to think it matters--I am female.

For the purposes of this discussion I am going to assume that M. Kularni is referring to Software Testing.

Now to respond to M. Kulkarni's questions:

>>I am especially interested to know what is testing according to you.

Software testing is a deep and complex subject. 

There are many activities that qualify as testing.  In the strictest terms, testing is a Quality Control mechanism to ensure software defect detection and correction.  Now, does that mean that all "tests" are executed against software.  No--it does not. Any time a Quality Control or Quality Assurance professional performs a document inspection on a business requirements document, software specification or technical design, they are executing "tests" against those documents.  They are verifying that the document is complete, that the requirements listed within are clear, consise, measurable, testable, unambigous and without room for interpretation.  This is something that an automated testing tool could never do.  Well, I say never, but until we create artificial intelligence, it may as well be never.  These are the types of activities that humans do best.

That doesn't mean that Automated testing doesn't have a roll to play in a software testing organization.  The best use of automated testing is to do those tasks that are frankly monotonous.  Those tasks that when performed by people are likely to produce user error.  For example, I've been spending the last two weeks at my job automating a series of test cases that a manual tester has to execute every week.  These tests are rudimentary, very simple and frankly boring.  They are the kinds of tests that in my 10 years of experience have been "passed" by manual testers without them actually doing the work because they've ran them week after week after week with no failures.

This is the strength of an automated test suite.  It does the work that people don't want to do.  In a parallel sense, Babbage invented the calculator because people didn't want to add things anymore.  Its error prone and frankly machines do those kinds of things better.

 >>Testing in my opinion is a deep human intellectual investigative activity that happens to cognitive engagement of human >>with the environment of software.

That is an interesting point of view.  I don't know that we differ on our definition of testing.  My educational background is in the hard sciences, Physics in particular.  And my approach to software testing is unique in that when performing manual testing activities, be it test script execution or exploratory testing, I take a very scientific methodical approach to testing.  The principal difference between software testing and scientific method experimentation is that in Scientific Method, if your experimental results don't match your theory you change your theory.  In software, you change your experiment.  What do I mean by this:  Well in software the "theory" is your requirements document.  And the experiment is what the software does when you try to apply a set of steps to recreate the "theory" as described in the requirements document.  If the software doesn't recreate the theory, you change the software to make it match the theory.

So what does that mean in regards to automated testing.  Well...first and foremost, automated testing cannot be done on "new" code.  A manual tester must ensure that the code is working correctly and that the code is stable before you consider applying an automated solution.  Meaning..."Regression Testing" should be the primary domain of automated test execution.  The exception to this rule would be using an automated solution to create data for testing a new function.  An example would be generating rows of data in a database to verify an ETL process works correctly.  So,  using an automated script, a tester puts 100 rows into a transactional system, then requests the DBAs run the ETL and see how many rows end up in the data warehouse.  It would be extrememly time consuming for the tester to create this data themselves.  So, using an automated process allows the tester to exercise the code that changed..without spending manhours putting the seed data in the system first.

So I think this gets the ball rolling regarding how I feel Automated Testing plays a roll in a QC/QA organization.  Is it a panacea?  No... Is it capable of everything?  No

However, does it have its place within a testing approach?  Absolutely.

Thanks for reading this exhaustive post..I'm sure there's more to come. 

Latest Frustration with QTP

Because of QTP, I now know that its possible to stare a hole in your monitor trying to puzzle out why a section of code isn't working like you'd expect it to.  And here's what I mean:


If Browser("Browser").Page("Page").Link("Link).Exist(0) = True then
Reporter.ReportEvent micPass "Link Found", "YES"
End If

Now I stared a hole in my monitor this afternoon trying to figure out why if the *.Exists(0) in debug mode equals True, then why on earth is this line of code not reporting a true condition for the If Then.

Why ....  Why  ... 

I added debug login, I added msgbox reports I added all sorts of debug logic to try to figure out why this wasn't working.

Finally...I started looking at txt files that represent other scripts and code I've written in the past...when suddenly I note that these other scripts if they are evaluating an Exists(0) function they just say


If Browser("Browser").Page("Page").Link("Link).Exist(0) Then
Reporter.ReportEvent micPass "Link Found", "YES"
End If


WITH NO = TRUE!!!

And so I removed the = TRUE from my code and PRESTO everything started working...everything was right with the world again.


DUH.....Talk about making you feel stupid....

Oh well..at least I found the bug...

WebApp is busy, but browser is "Ready"

Ok so I've hit an ANNOYING snag in my automation travels at my New Co.  which is starting to drive me NUTS.

Apparently, on one of their Web Apps, the client couldn't tell when the application was processing something and therefore busy.  This is in part due to the fact that when the application login is successful, they render it in a popup with no navigation or menus or anything.  So you can't see the "e" spinning or the progress bar.  I also suspect they are using a lot of AJAX calls as well but I digress

To solve this problem, New Co. put in this feature where if the app is processing something the screen greys out.  Cute?  Yes.  Informative to a human?  Yes.  Valuable to an automated test strategy?  NO!

And Here's why:  This "grey out" feature does not put the browser into a non-Ready state.  Now you may be wondering why this is such a big deal...I mean...surely the browser remaining in a Ready state is a great thing...right?

No--its not.  It sucks..and I'll tell you why.  The reason it sucks is that it makes "Sync" totally useless.  Sync basically asks the browser, "Are you done yet?" before attempting to proceed with the next lines of code.  Totally eliminates the need for the dreaded "Wait" statement.  Which is the automation equivalent of using a sledgehammer to open a peanut.

So what do I have to do to get around this?  I have to essentially make my own sync.  The annoying part of this is that I can't really use the same "sync" across the application.  I have to have one for each action I'm working on.  At least that's what I've been able to deduce for now, investigations into a more elegant solution continue.

For example:

'Verify Link under test exists
blnFound = False
intcount = 1
Do While blnfound = False
If Browser(Environment("BrowserHandle")).Page(Environment("PageHandle")). _
  & Link("innertext:="&strLinktext).Exist(0) Then
   blnfound = True
 Else
   blnfound = false
   intcount=intcount + 1
   Wait(2)
   If intcount > 10 Then
    Exit Do
   End If
 End if
Loop

So I basically have to turn what should be one line of code (Browser(Environment("BrowserHandle")).Page(Environment("PageHandle")).Sync ) into 14 lines of code, not including the DIM statements b/c I always use Option Explicit for my scripts.

And if I forget to build one of these little gems, the script runs so fast that I end up getting an application generated ViewState mismatch error OR it can't find the next object it needs b/c either the object is disabled thanks to that grey out dealie...or it doesn't exist yet b/c the application is attempting to navigate to the page where that object lives.

ARGH....

Anyone have any suggestions on this?  Aside from asking the devs that when the app greys out to put the browser in a non-ready state...which I am planning to do btw.

(sigh)

Twitter Plugin for GWB

Has anyone else noticed that the Twitter plugin for GWB doesn't appear to update consistently?  I've noticed that over the course of a few days, the twitter feed on my blog gets REALLY stale.

In order for it to update, I have to go into the Options menu, and "re-attach" my twitter account to my blog.

Once I do that, it pulls the latest tweets in to the blog, but over the course of the next day or two..its back out of sync again.

Anyone else see this?

Am I just cracked?

Is there a setting in the Options panel I need to tweak to make this more "syncronous"?

(shrugs)

New Job Beginnings

Well folks, I've made it through the first week and am charging ahead in the second week.

First week was just acclimating to the new job.  First two days were HR orientations etc.  Policy discussions etc.

Now, I get to jump head first into the fray and start sinking my teeth into what they hired me for.

Good news is I get to get back to automation which I was forced to wander away from at my previous job.  YAY Automation...bad news is that they had about two dozen existing scripts written against an existing windows application.

These existing scripts are orgazined in a very strange manor and I spent the latter half of last week trying to resurrect one of these two dozen scripts into a viable script to no avail.  Much to my chagrin, I threw in the towel Monday when I discovered that my version of QTP (9.5) will crash on a regular basis just trying to explore objects with the ObjectSpy or Object Repository.  I created a support ticket with HP..(crickets so far) and I'm off doing something else for a different application.

Good News is once I switched over to this new application, I had my first script completed this morning.   Proving Automation can be done efficiently, quickly and with a certain level of maintainability.

Automation is basically a new concept at (EMPLOYER LOCATION REDACTED) and I'm going to have to work with the manual testers to explain to them what good "automateable" test cases look like.  My first automation script was very simple.  The second was a test case with 87 design steps in it...That is WAY too big.  And I'm meeting with the manual tester tomorrow to break these scripts into smaller digestable chunks.

We'll see how it goes...they may baulk at this but if it gets their cases automated so they don't have to execute them...then why wouldn't they want to sign up for it.

And with my sparkling personality, how could they resist?

 

I'm all a twitter...

So I decided to jump on the Twitter bandwagon yesterday.  In some sort of strange cosmic way, I've been motivated to do this by peer pressure.  One of my good buds who is also in the GWB community works at a company where instant messaging is forbidden.  No G-Chat, No AIM, No MSMessenger etc.

And frankly I miss chatting with him.  And a few weeks ago we went out to dinner and I saw that he was tweeting via his cell phone.  So I decided that since I'm going to be moving to a new job on Sept 29th and I too may drop off the chatsphere that I'd investigate Twitter.

So--now I'm a twitter too...(Hums the Dr. Pepper theme song).

You'll see I've added a twitter feed to my blog so people can see what I'm doing that way too.  May prove interesting...may prove obnoxious...haven't decided yet.  I did change my cell phone plan so I have unlimitted text messages now.  So I don't end up with some UNGODLY phone bill.

We'll see how that works--hubby may go nuclear on that one...but we'll see.

=)

 

Change...

It's official.  After nearly 4 years at my current job, I have made the leap from the lion's head and are venturing into a new job.  My last day will be Sept 25th and from there I will start a new chapter in my work career.

New in the sense that I have to build a new wardrobe basically from the ground up.  For the first 10 years of my professional career, jeans & t-shirts were acceptable attire.  I could basically wear whatever I wanted.  That ends with this new job.  This new job is business casual and I have a "laundry list" of new clothes I need to buy.   In addition to new warddrobe requirements, it will be the first time in eight years I go to a different corporate park for work. 

The end is bittersweet for me but I think the move will be good.  I will get to get back on the QTP/VB Script train and return to a Software Automation focus.  As well as build out a Quality Center implementation for this new company.  Hopefully this will pan out better than my attempts to roll out Quality Center at my current job. 

I suppose I won't know until I land at my new job how things will work out..but I am hopeful. 

(fingers crossed)

IE 8 Beta?

Hear ye Hear ye, looking for some info from the Geekdom about IE Version 8.

Does anyone have a rough idea about when it would be rolling out of beta and into full production release?

The reason I ask is that I have a beta version installed in my testing lab here at (redacted job location) and I've discovered that our commerce sites have some issues with IE 8.

And the dev management wants to know when it would be going into full production so we can start prioritizing fixes for IE 8 compatibility.

Any opinions on the subject would be greatly appreciated.

Thanks in advance!

«July»
SunMonTueWedThuFriSat
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678