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.



2 comments:

  1. Ravi

    How do you identify the requirements which you are not aware off?

    Regards
    Vikas

    ReplyDelete
  2. @Vikas

    I like this question. Before going further I would like to say, this is my way of identifying (learning) them for now. It works for me and also failed for me.

    Analyzing the question you brought up, I got a question in me -- What does 'not aware off' mean?

    >> not aware off:

    1. which is documented and I don't know.
    2. which is not documented and known to others and not to me.
    3. which is not documented and it hasn't come into any of our thoughts so far.
    4. which is not doucmented and known to others and not to me.
    5. which is known but not sure whether is that or not.
    6. which is documented and not come into any of our thoughts so far.
    7. which is documented and not come into my thoughts so far.
    8. which is ambigious whether it helps or not. If helps, does it helps the people who will use it and how. If not, to whom it will not help and how.
    9. it is documented, but don't know what to be expected from it.
    10.it is not documented, but know what is expected from it for others and not to me.
    11.which is understood by clients (user who is paying for it, test manager, project manager, product manager, team lead, co-team members, employer) and not known to me.
    12.If I misunderstood and have incorrect needs statement.
    13.There is no requirement written i.e., not available as a document or any readable source. Or any other circumstances where I do not have them.

    To my understanding and little learning, testing helps and have helped me to identify the "not aware off" so far.

    Looks like you are reading testing blogs. If not search for other testers blog too. It can help you more and more.

    ReplyDelete

Please, do write your comment on the read information. Thank you.