The NVP BUG Report Logo
The NVP BUG Report
September 2009
In This Issue
Welcome Message
Summertime Project Blues
If You Wouldn't Say it at Home, Don't Say it to a Tester



The Bug's Last Words

Applications requiring critical response time should be thoroughly tested for performance.

Performance testing is the critical part of many applications. In manual testing this is mostly ignored part by testers due to lack of required performance testing large data volume.

 Find out ways to test your application for performance. If not possible to create test data manually then write some basic scripts to create test data for performance test or ask developers to write one for you.
 
September Seminar: "Managing a Virtual Test Team"

We're offering another FREE seminar in Downtown Toronto!

Learning Objectives:
- What to do first
- What not to do

The talk discusses the challenges involved in testing a project when development was mostly complete in an Agile environment with a customer who had not supplied all the requisite information and was changing their minds and requirements.  We talk about how we tackled it; the steps we took; how successful we were and what the outcome was.


Stay tuned for details!
 
Welcome,  !
Well that went by quickly didn't it?!  We hope you enjoyed the summer and found some time to enjoy the nice weather, when it was nice!

As the fall nears, many of you must find yourselves in a different place than last fall.  The summer is normally a time of relaxations with projects slowing or ending altogether.  This summer seems to have been one of hard work as those projects that were cut with the fall of the economy were picked up.

At NVP we'd like you to know that we are here to help this fall.  Let's set up a meeting or a 1/2 day assessment and we can discuss your current needs and what you can do to catch up quickly and cost effectively!  Call 1-800-811-4718.

We hope you enjoy this month's Bug Report.  If you have any questions or comments, please email nvp@nvp-inc.com or reply to this email.

Until next time...
Your QA Advisors at NVP Software Testing

Summertime Project Blues
Real-World Experiences

Written by: Neil Price-Jones, CSTE - NVP Software Testing


Summer time in Canada is supposed to be vacation time.  The kids are off school, the weather is warm, soccer starts up and everyone relaxes a bit.  Not so much so with the project(s) from 'someplace even hotter' continuing.   Not to mention the cool and wet summer.  Obviously global warming has moved from the environment and taken up residence in IT.
 
In a previous Bug Report we talked about a project with no test plan, no test cases, no environment, no schedule and no criteria for completion. At that point we were about ½ way through.  Needless to say the project continues in a desultory fashion 3 days at a time every two to three weeks.
 
We wrote the test plan but could not enforce sign off so it was just subsumed and not used.
 
We built a large number of test cases (one line objectives only in most cases) for System Integration Testing and User Acceptance Testing.  The System Integration Testing cases were almost completely executed and found a number of defects.  The UAT ran for less than 4 hours and then was abandoned for schedule reasons.
 
We built enough environments but could not enforce Change Control or restrict access.  They were moderately successful as a tool for controlling the test.
 
The schedule changed daily depending on availability of the virtual test team.  We grabbed whomever we could and tried to get something done.
 
The completion criteria was based on the loudest shouter in the meetings although the ultimate customer kept pushing back.
 
So where are we now?
 
We eventually stumbled into joint UAT with the final customer with 2 cycles scheduled where we would support their testing.
 
6 cycles later we cannot get them to sign off.  Why not?
 
  • There is no enforceable criterion for completion and sign off.
  • There is no plan that says we are done.
  • The test resources come for the day but are not seconded full time to the project and keep getting distracted by higher priority items.
  • The environments need to be rebuilt every time we run another UAT cycle.  The customer has no trust in their integrity.
  • There is always one more item which the customer can find to refuse sign off.

If you have experienced a similar situation or have any comments / suggestions / questions, please reply to this email and your response may be chosen for the next Bug Report.
If You Wouldn't Say it at Home, Don't Say it to a Tester

Written by PRAKASH SODHANI for Software Test and Performance Magazine - www.stpmag.com

In a surprising number of the organizations I have worked in, software testing was considered a luxury. "If you have time, you might do some testing," I might hear. Or else, "whatever can be done in the stipulated time is good enough" might have been the directive. From what I've seen, many large companies no longer employ domain experts for software testing, but instead now favor computer programmers who are willing to test. I believe this is a mistake. Testers rely not only on domain and technical expertise but also on people skills, which are useful for working through requirements and test cases with analysts and users. Rare indeed is the developer equipped to handle such potentially volatile situations as these.

I once read an article by Harry Robinson, a test architect in Microsoft's Engineering Excellence Group. In "Bumper Stickers for Testers," Robinson said the things we testers frequently say about our work reflect the pride we have in our profession. That article got me thinking about the times I've been happy when someone appreciated my work, as well as times when I've been frustrated. There have been remarks that have made me furious, and others that are so absurd as to be laughable.

All that thinking led me to this article, which is a compilation of comments I've heard over the years, many that are reiterated nearly every day. If you haven't heard some of these things yourself-from coworkers, developers, team leaders or managers-then you haven't been a software tester very long.

1) " There's nothing wrong with my code. Check with the other developer."

Often you will work with more than one developer. If you're lucky, at least one will have done some unit testing before tossing the code to the QA team. But even when they do, they often forget to test their code's integration. Sure, features might work as expected in isolation, but when you try to test end to end, you start seeing issues. One developer refers you to the other and thus starts the vicious cycle.

Even more frustrating is that once the flaw is tracked back to the first developer, he politely says, "My bad. I forgot to do one thing. I'll fix it and let you know".

ADVICE: Ask the developer if they've done their unit and integration testing.

2) " Can you show me the defect?"

Applications differ in complexity, and some take longer to test. One complex application I recall testing had multiple paths to be tested completely. I found that somewhere around the last step, I wasn't seeing the expected result when using one particular set of data. I tried with another set, just to see if I could reproduce the result, but it turned out to be happening only for the first set of data. I opened a defect, assigned it to the developer and proceeded to test other functionalities.

After a few minutes, an e-mail from the developer popped up asking me to come to his desk to reproduce the issue. I generally wouldn't mind doing this, but why did I even bother documenting all the "reproduce steps" and attachments in the defect's description? Visiting the developer sidetracked me from what I was doing and wasted both our time.

ADVICE: Ask the developer to try to reproduce the issue using your documented steps and to contact the tester only if something other than the issue arises.

3) " This shouldn't take much time to test."

Have you ever told a developer that a particular feature shouldn't take more than a couple of hours to write code for? Probably not. But developers certainly know how long something should take to test, don't they?

It amazes me how people with multiple years of experience in the industry still don't understand that testing might not be their domain. Suggestions about how to test are one thing, but to state that such-and-such a feature shouldn't take a lot of time to test is like saying "I know this feature works. You just confirm it." Depending on the issues involved, even a simple "Login" might take more than a few minutes.

There is no way I can say "it will be done in one hour." It all depends on a tester, how deeply they test and whether unforeseen circumstances arise. But when you know that people around you will become angry if you take more time than they think you need, your tendency might be not to test at all or not to test deeply, or thoroughly, enough.

ADVICE: When possible, don't agree to arbitrary testing timetables. If asked for an estimate, take your initial guess and triple it.

4) " This was working yesterday, and I haven't changed anything."

You have a list of test cases you want to execute before the deadline. You finish the list and go home assuming that everything is done. Your plan for the next day is to perform a last-minute smoke test and then send the "Testing Complete" message to all the stakeholders.

But that plan falls apart when you discover that your primary test cases are no longer working. You tense up-many of the other test cases depend on the result of your primaries. The developer, as expected, claims that nothing has changed since last night.

You frantically begin running all the test cases again to see if others have the same issue. Several hours later, you get an e-mail from a developer that a build was deployed the night before, and that since it was "not expected to affect anything," only developers were notified. The result was unnecessary frustration, anxiety and wasted time.

ADVICE: Insist that the test and/or QA departments be on the notification list for all new builds.

5) " Why test it that way? That's not realistic."

A good tester comes up with a variety of scenarios to break the application under test-to think of potential situations before hearing from the user. Some test cases might sound improbable, but whoever thought someone would mistake a computer's CD tray for a drink holder?
One application I was working on had a simple "Login" page that threw an exception when I entered special characters in the user name field. When I told the developer, he asked, "Who in the world would put special characters in the user name field?" Under normal circumstances, no one. But someone might do it by mistake, I said, and we need the application to handle it gracefully.

ADVICE: Conduct your tests based on what is possible, not what is probable. Given enough time, if something can happen, it will happen.

6) " Test it this way, with this test data."

In one of the companies where I worked, there was very little documentation. To learn what and how to test, I was expected to track down and speak with the subject-matter experts to get the information I needed to get started.

Eventually, I found myself testing a database application, but again, there was no schema or documentation to write queries against.

I had to ask a developer, who told me he would send me the SQL queries and data that I would need for my testing.

That's right. I was told to use what the developer sent me, and to say that "everything looked good." Not surprisingly, the testing finished on time and everyone was happy.

ADVICE: Sometimes you just have to do the best you can with the hand you're dealt.

7) " It works on my machine. Something must be wrong with yours."

Surely we've all been in this situation: Something works on your computer, but when you try to reproduce it on someone else's, you can't. Here's an example: While performing some function testing, I saw a bug and opened a defect. After some time, the defect was sent back to me as "unable to reproduce," but I was still able to produce the issue.

Instead of going back and forth through the defect tracker, I went to the developer's desk to discuss it. He showed me what he was doing, and at first he seemed right. He told me to check if I was doing it right on my machine. Then I realized that the developer was verifying the bug on the "development" environment rather than on the "test" configuration. I pointed that out, and sure enough, he was now able to reproduce the issue.

ADVICE: Don't assume that the developer has read your defect documentation completely, pulled all the right levers and set all the right switches. Sometimes developers overlook the basics, just like we mere mortals do.

8) " I know that scenario doesn't work, but how's the application overall?"

Test cases and defects usually have priorities attached to them. Higher-priority defects get more attention and generally must be fixed before the product is deployed. It's one thing when a test case is assigned as high-priority by the QA team. It's another when it's done by a developer.

I once found myself testing an application that sent an e-mail to support personnel when a customer ticket was opened by the sales team. The app worked fine when a valid e-mail address was entered or when an e-mail address was selected from an address book. But I didn't know how the application was supposed to behave if the address book was ignored or if an invalid e-mail address was entered manually. The developer didn't know either and asserted that people would always use the address book feature.

So even though I knew that at least one use case wasn't settled, I was asked if everything was alright to move to production. I was told that this test case had a low priority.

ADVICE: Every defect should be documented, regardless of priority. That way, a fix can be on someone's "To Do" list and that part of the application (as well as the tester's backside) is covered.

9) " Try to reproduce the issue multiple times before you open a defect. If it only happens once or twice, I can't do anything about it."

Developers occasionally get irritated, and sometimes they let you know it. In one such situation, I was new to a project and my only source of help was one of the developers. I thought e-mail was not the best avenue for questions, so I tried using instant messaging instead. After two or three sessions with the developer, I received an e-mail from the project manager directing me to go through him with questions. I got the message.

Later on during that same project, I found some issues that I wasn't able to reproduce consistently; the defects might appear twice in five tries. When I mentioned this to the developer, he said it was probably a one-off thing and suggested that I focus on other issues.

ADVICE: Document the issues and move on. Prioritizing defects is not generally the tester's job, so it's probably best not to waste time forcing an issue.


10) " Sorry; I forgot to deploy my code in that last build. You'll have to wait before testing."

This is a classic that I have seen quite often: You start testing after a new build and an e-mail appears telling you to stop testing for one reason or another.

ADVICE: You can change only the things that are within your control. If stop orders are a part of your environment, changing your attitude toward them might help reduce the frustration they cause. Rather than viewing time before the order as wasted, look forward to receiving a better build that might contain fewer defects.

Here are some more:

11) Don't worry about this. Try the other scenarios.

12) I know I delivered the code late for testing, but everything looks good to me. When can I move my code to production?

13) I tested this functionality during development. It looks good.

14) There's no documentation for this functionality. Let me tell you exactly what you need to focus on.

TEST AUTOMATION QUOTES
(To view the rest of this article, please go to www.stpcollaborative.com)

Save 25%
Our new Targeted Quality Mentoring Program was designed for Quality Professionals by Quality Professionals.  By signing up today you can receive a 25% discount for yourself and anyone else in your company who signs up for the program.  CLICK HERE to find out more.