Tuesday, July 21, 2009

Where is the "Requirement"? Vs What More "Can I See Here?"

The word "Requirement" is used by the laymen in his native language or with synonym words -- necessity, essential etc., which gives same meaning of requirement. Not just humans but also other vertebrates and non-vertebrates exhibit their requirement needs. The activities of vertebrates and non-vertebrates may show its needs as change in their requirements or as fresh requirements.

For example, when a child was born, parents or people would have covered the child with cloths. Do same cloths fit a child after couple of years? If yes, for how long those same cloths fit a child? Now a child exhibits requirement in terms of change -- in size of cloths, in this context. Similarly a banyan plant when planted, what space did it need? After 100 years does same space is sufficient for a planted banyan tree? Also the objects which looks like or so called as non-living being, (appears to) change its requirement as it evolves with the ecosystem in which it is understood to be present.

Do software applications too change its requirements as it evolves? While writing a software application, does desired deliverable (which is or which was) said by a user or written by a user or understood by an author who interacted with the user(s), is what the user(s) needs or needed? If yes, then those are the only deliverable or requirements?

Does whatever a user says or said or going to say is what she or he needs? Or, are there any other users who can give much more information that helps in the understanding of said words or written words or not yet said words and support the mission of delivering deliverable? Or, what I have understood about the deliverable, mission and AUT is correct? How and when can I know what I have is what a user actually needs? I am learning this day by day in each mistake I do.

I was asked, "Where is the requirement for all these? There is no requirement for all these, it is not a bug." for the observations reported from testing. These statements may be agreeable, if users are comfort using AUT with its behavior witnessed and not yet witnessed. But is this agreeable forever?

Concerns in AUT can be user specific and also context specific. A bug for me may not be a bug for other. I am not the author of implemented code or written requirement document and neither a user always in the operational environment. I will be prone to commit mistakes while learning and understanding AUT. I (tester) would not know always whether it is a problem or not using AUT. On illustrating AUT's behaviors with scenarios and risks that might turn around, observations reported were considered and prioritized accordingly.

If something works as implemented, is it to be understood that it is as per requirement or this is what a user needs? Might be the requirement asked by user or written by the author is not viable for near future or I misunderstood it for something else. Things I observe and understand can take or have more than one view. If AUT is as per requirements, design & implementation and as desired to use, then it is not hard to say "this is not what was expected", when any or all of these i.e., requirements, design, implementation and as desired are not agreeable or understood incorrectly.

I cannot stop myself getting biased while testing. But it can be identified and interpreted. The question that I ask for myself is, "How can I know what is needed by the clients as they are asking it for their needs and it is not for my purpose." This heuristic helps me and also failed in few contexts.

Picture: Systems and User interaction.
Note: The above diagram is with reference to my understanding of user needs, problems and software model.

Might be I identify only part of the little union area of three systems -- 'Users', 'Sub-systems and Models' and 'Problems, Requirement and Solutions' which is within another systems. Each subsystem and system will keep growing in its area. The union of these three systems within a system may give new systems. Probably it would be a challenge to me, to know the union areas every aspect in all possible views. If one system grows and covers rest of the other, those might be challenges to me in a system to identify and understand them.
I learned "Requirements are always incomplete and it evolves over the period of time gradually. Might be due to this incompleteness and changing needs of a person or the users, it is called as requirements."

I proceed asking myself "What More Can I See Here?" I am learning and testing to gather information for minimizing the confusions as a service to my clients. If one feels observations as a concerns or not a concerns it is yet another way of looking at it. And it adds insight for what I have to concentrate and look ahead and what my clients want to know from my testing.

Here is a scenario as a video, I witnessed. Is this scenario was in requirement of milk container manufacturing? Those who took milk from container by opening the knob always saw milk flowing to cup below the opened knob. It was a routine observation with this milk container and other such container. Milk flowed down and appeared as a free flow with no disturbances into a coffee or tea cup -- may be one of the requirement and design of container, what a user expected. Did you see anything here?

One day opening knob of milk container, every one placed a tea cup below the opened knob. And none noticed milk spilling out of cup. Where is the requirement for this scenario? The cost was, who came to have a cup of milk did waste the milk by spilling it down. Why this problem was not seen or thought of earlier? Was there any requirement in design and molding of milk container, which was not tested with this scenario? Or, every one expected that milk flows as usual into cup below the opened knob with no turbulence provided milk was available in container?

Video: Milk spilling out of cup.

Few questions bogged me looking at this scenario:
  • What made all to think that milk flows into tea cup in their hand, on opening the knob of milk container?
  • Once the knob of milk container was turned open, what made all not to see the flow of milk into tea cup in their hand?
  • Is this scenario was never witnessed by any users earlier, who witnessed it today? If witnessed, when, where, how why and how frequently they witnessed it?
  • Why did they not think of this unexpected, when they turned open the knob of milk container?
  • Were they annoyed to clean the spilled out milk? Were they bugged by the incident they witnessed? If yes who were annoyed who were not annoyed? What did they do when they were annoyed?
  • What quantity of milk was lost for these unthinkable and unexpected happening?
  • Did user witnessed new problems from spilled out milk? If yes what were they? Who faced those problem(s)? What did it cost? And to whom did it cost?
Here is a video, which I believe that demonstrates 'What More Can I See Here?' and gathers the information by identifying problems.

Video: Identifying the concerns with the model.
Note: The credit for this video goes to the team or person who made it.

Few questions questioned me looking at this video:
  • What was their mission? How often they reviewed their accomplishment with the mission to be accomplished?
  • Was any requirement asked before changing previous design? Might be they would have seen requirement. But did they say, "There is no requirement to change."?
  • Did they see any problems from the information gathered?
  • How often they reconstructed their learning, thoughts and design for the concerns they witnessed?
  • Did they change requirement(s)?
  • Did they identify concern(s) with requirement they had?
  • How did they learn to identify concern(s)?
  • Did they follow any document to see whether they met requirement? If they saw requirement document(s), did they stick on to it alone when concerns were witnessed?
  • How did they test requirement and model developed?
  • Who were involved in discussion of requirement gathering and understanding?
  • Who were involved while learning (testing) the model they developed?
  • How did they record gathered information? How they made use of it? And who all analyzed it?
Again such questions keep coming out each time I explore. Is there any requirement written or present or assumed by default to ask, "It is not a bug. Where is the requirement?", if found like no requirement available for information identified by explorations?

Today's needs may change as tomorrow's concerns; and today's concerns may change as tomorrow's needs.

Wednesday, July 15, 2009

I am h(f)ired because I use my brain!

I was moving to house previous day. It was late night and did not find any public transport for 25 minutes. I was talking to one my colleague who works with me by discussing and debating. Finally, we found a bus and moved inside the bus.

My friend found his seat in the front seat of my seat, where I found a seat for me. Beside me a person was seated and was looking seriously looking at me. We began our conversation for 30 minutes without knowing each other name. I would like to call him as a Fellow Traveler --- he gave me good lessons to learn and I learned.

Me: Hi!
Fellow Traveler: Hi! Seems like you are looking for a job.

Me: Yes. I always look for that as it always helps me to know where I am. Seems like your employer is ABC.
Fellow Traveler: Not now. Today I work for JKL.

Me: Any opening for learners in your workplace.
Fellow Traveler: Learners?

Me: Yes.
Fellow Traveler: What work you do in your office?

Me: I am a Tester.
Fellow Traveler: What tools do you use for testing?
Me: I use my brain?
Fellow Traveler: What? Brain? I asked tools.
Me: Yes, that is what I use and that tool works for me.

Fellow Traveler: Are you not fired yet?
Me: I was hired as they discovered that I used my brain. Don't know when they will fire me, if I don't use my brain or for using brain.
Fellow Traveler: Looks funny! What they say to you when you use your brain?
Me: "When you are going on vacation?"

Fellow Traveler: Without test tools, how will you do that? To come in to my work place, you have to know testing tools.
Me: What does the 'testing tools' means, which you are talking about? What does 'you have to know testing tools' means?
Fellow Traveler: Tools that is used to automate the testing which you do.
Me: I test almost what I don't see and see, I don't hear and hear, I did not know, that I don't understand and I understand by learning from testing it. Where shall I place your "automate the testing which you do"?

Fellow Traveler: Oh! You are cracking my knuckles man. I meant what test automation tools you use for the testing you do in your work place.
Me: I know to use them and learning to use them by knowing them i.e., the test automation tools you just said.

Fellow Traveler: Do you know WinRunner?
Me: I can run the Winrunner.

Fellow Traveler: Do you know QTP?
Me: I do Questioning Tests Passionately.
Fellow Traveler: I never heard that. Do you know any other abbreviation for that?
Me: I can keep telling for that. The other one now that I have for you is...
Fellow Traveler: I am wondering, why you are not fired yet? Have you used LoadRunner?
Me: I make loads of tests to find information.
Fellow Traveler: What that loads of tests you do?
Me: I discover, invent, explore and reinvent the questions. This helps me to find the information and some time it does not; but provides the other information, which helps me again to create the loads of tests I said.

Fellow Traveler: Do you know Rational Robot?
Me: I am a human, who is learning to think rationally.

Fellow Traveler: Common man, don't poke with your answers. How they are bearing you?
(my friend in front seat was looking at us and was smiling, listening to our conversations)
Fellow Traveler: To work in my company you have to know these tools?

Me: Which tools?
Fellow Traveler: WinRunner, QTP, LoadRunner, Rational Robot.

Me: Did you skip any more software test automation tools?
Fellow Traveler: Why?
Me: There are also open source test automation tools, which might be handy depending upon your project contexts. I wanted to know, why the tools you said, are used in your company?
Fellow Traveler: We make applications that are huge and used in real time by several people at a given point of time. A tester cannot do the testing for this kind of applications.

Me: OK. Who made the applications you told?
Fellow Traveler: Are you deaf? I said right, we make applications that are huge.
Me: How huge it is? I want to know what the huge means to you.
Fellow Traveler: You are funny man.
Me: Yes it appears so. When your people who are also human, can make applications, which you said, that were huge, why can't the human test it?

Fellow Traveler: What do you want to say?
Me: You said your applications were huge and used as a real time system. I don't know how huge it is and what the huge means for you. I can see every application as real time system and also as non-real time system. Putting the huge application into the hands of automation will be like, for an example, you are sitting in Volvo bus which is air conditioned, quite luxury seats and the other features it has. I have never traveled in Volvo bus.

But, the Volvo bus in which you are seated now, say it is traveling in road traffic of Bengaluru where the person driving the bus is covered his head completely such that he can only breath and survive but not able to see anything neither hear anything but can move his hands and body while driving the bus.

Are you safe in that bus though it is Volvo? Might be you are safe till some extent or to the full extent of your journey in that bus. But what is the guarantee that you are safe? Also, when the person driving the bus in which you are seated is able to see and hear by moving his hands and body, still no guarantee of your safety of your journey. All what we have is some words or claims that say using service(s) of so and so will make us so and so which are either advertised or communicated orally or done by both the way. And we are all factors of it, when we witness it.

But the risk might be bit lower when compared to the other case and all it depends on the people inside the bus, the person driving the bus, and the tool being used -- the Volvo bus. Right? This way, if you model the test by testers hope the risk of using the huge application you said might be lower or not at all; then you need to think about the strategies to work on.

Fellow Traveler: You are saying that test automation is of no use?
Me: I did not tell those word anywhere. But, knowing how to use them for helping testing what I do is required. Test Automation Tools does not do the testing what I do; it might help my testing activities, which is human tasks and to know what extent it helps is useful data. But, it cannot replace the human tasks without the intervention or interpretation of human and human thinking. Test Automation Tools cannot be paralleled with human for the tasks each do on their own cognitive and intuitive.

Fellow Traveler: I am hearing strange things.
Me: Me too sensed the same sometime back, until I failed and now too I fail. Automation tool (i.e., a model) with bug (any software is not free of bugs) automated another model, which also has bugs. Something interesting, when I witnessed that.

Fellow Traveler: OK man, see you again.
Me: I wait for that moment. Bye! What work you do for your current employer?
Fellow Traveler: I work on systems.
Me: Systems? What systems? What does it mean?
Fellow Traveler: I have to leave; this is my stop where I get down.
Me: Bye.

Later my friend in the front seat began our conversation about the talk, which I had with fellow traveler. I learned from those conversations of fellow traveler and my friend. I hope the fellow traveler who was in conversation with me, might see this writing one day and we meet again.

The software (and combination of hardware & software) we make is a kind of an automation of human work, is what I have understood. I was questioning myself, "Is that tools are fallible?" "Only tool does experiences the failure?" And I kept writing many such questions and wrote statements (towards and against) as much as possible for the each questions. I knew human is fallible, then the heuristics identified by human are fallible, then the model built by human which are set of heuristics (programming instructions -- in this context) are fallible. A question remains is "Which is not fallible and not (to) prone for failure(s)?" If any such exist with us -- when (not), how (not), why (not) it is fallible and not (to) prone for failure(s)?

Wednesday, July 1, 2009

Hot and live. Possible bugs?

The below written behavior and observations were observed and inferred from hotmail.

In the context, a user has forgot her or his Windows Live ID's password and has entered incorrect alternate email-id while registering for the email-id. What shall the user do?

In this scenario, there is a context that can show a possible bug. And the same can be an advantage to the user in the different context. Sure there will be more than these two scenarios, since a tester can make a model to fail for what it is intended to do in more than one ways and similarly can make the model to pass for what it is intended to do in more than one ways.

Context-1 and problem: The user has forgot the password of her or his Windows Live ID. And has entered incorrect alternate email-id while registering for the email-id.

The user has not yet set any question and secret answer that might get help in resetting password nor did not know that she or he entered the incorrect alternate email-id. How the user can reset the password now using the page being viewed?

Clicked on hypertext 'Forgot your password?' Navigated to the page where a password can be reset. Entering the email-id (whose password has been forgot) and characters, which appears similar to CAPTCHA, took to the page that displayed a text "Reset your password"-- which appeared to be by black-in-color. It had two options with radio button for sending instructions to, reset the password. And, the options were the email-id for which the password is forgotten and the other was the alternate email-id.

Now, in this context scenario, user has entered the incorrect alternate email-id and also has forgotten the password of the Windows Live ID such that she or he cannot sign in to the email account to view the instructions of resetting the password. What shall the user do now? Should she or he need to create a new email-id again? Or if there is any other way to reset the password, won't it be time consuming for the user to spend her or his time in search of ways to reset the password? Is this a bug?

If entered this URL -- http://login.live.com, will show a page with title 'Sign In'. Clicking on hypertext 'Forgot your password?' will navigate to page with title 'Credential Management', Entering the email-id for which the password needs to be reset and the characters that appears in the image, will show a message text message as in below snap. What should the user do now?

Picture: message telling unable to reset the password.

Context-2: The user knows the password and wants to reset the password. But don't know how to reset the password once signed in to the email-id account. She or he uses this feature to reset the password, though the entered alternate email-id is correct or incorrect (until the alternate email-id option is not chosen).

On selecting radio button -- email-id (Windows Live ID) for which the password to be reset, and clicking on button continue appears like the instructions for resetting password is sent to the email-id (Windows Live ID) for which the password is to be reset. If chosen an alternate email-id, then the instructions will be sent to it.

Here the same page and options act as problem and also as a solution to a kind of problem to the user. The above advocated context's can be observed here.