Thursday 25 July 2013

SOFTWARE TESTING


Software applications are today’s integral part of human life and plays a vital role in our daily life. We humans are addicted to the use of software all through the day 24X7. No matter where we are and what we are doing. The cell phones we use, the car we drive, the home appliances we use at home for our daily needs are in some form or the other driven by software inbuilt with in the device.
Software used involves the user’s emotions and experience highlights the, affective, meaningful and valuable aspects of human-computer interaction. Additionally, it includes a person’s perceptions of the practical aspects such as utility, ease of use and efficiency of the system.

Software – its prominence:

Users don’t have to buy what is tested.  Instead, they get forced to use it the way it works.

The important aspects of software are
  1. Accomplishments – When using the software, people need to feel a sense of accomplishment without disrupting the momentum of their lives.  They need to feel like they are getting something done that was otherwise difficult.  They need to do this without giving up any part of their life.  Example: Can they accomplish something while waiting in line?
  2. Connection – When using your software, they should be motivated to connect with people they actually care about (e.g., not Facebook friends).  These connections should be enriched in some manner.  Example: Were they able to share it with Mom?  Did they talk about it over Thanksgiving dinner?
  3. Identity - When using the software, they should feel like they’re not alone.  They should be asking themselves, “Who am I?”, “Do I fit in with these other people?”.  They should be able to share their identity with joy.
  4. Sensation – When using the software, they should experience a core sensory pleasure.  Examples: Can they interact with it in a fresh way via some new interface?  Can they see or hear something delightful?
The User expectations in short:       
  • Modern users have no tolerance for anything but the most amazing experience.
  • The app should help them get from thought to action, nothing in between.
  • Users expect software to gather all the data they need and think for them.
Why software Testing
Software testing is a process used to help identify the correctness, completeness and quality of developed computer software. With that in mind, testing can never completely establish the correctness of computer software.

The definition of testing is "the process of questioning a product in order to evaluate it", where the "questions" are things the tester tries to do with the product, and the product answers with its behavior in reaction to the probing of the tester.

Testing helps is Verifying and Validating if the Software is working as it is intended to be working. This involves using Static and Dynamic methodologies to Test the application.

Because of the fallibility of its human designers and its own abstract, complex nature, software development must be accompanied by quality assurance activities. It is not unusual for developers to spend 40% of the total project time on testing.

Testing objectives include

1. Testing is a process of executing a program with the intent of finding an error.
2. A good test case is one that has a high probability of finding an as yet undiscovered error.
3. A successful test is one that uncovers an as yet undiscovered error.
Taxonomy
There is a plethora of testing methods and testing techniques, serving multiple purposes in different life cycle phases. Classified by purpose, software testing can be divided into: correctness testing, performance testing, reliability testing and security testing. Classified by life-cycle phase, software testing can be classified into the following categories: requirements phase testing, design phase testing, program phase testing, evaluating test results, installation phase testing, acceptance testing and maintenance testing. By scope, software testing can be categorized as follows: unit testing, component testing, integration testing, and system testing.
Software testers – The thought process
  • If you want to be excellent at testing, you need to use System 2 Thinking.  Testing is not a straight forward technical problem because we are creating stuff that is largely invisible.
  • Don’t plan or execute tests until you obtain context about the test mission.
  • Leaping to assumptions carries risk.  Don’t build a network of assumptions.
  • A tester’s job is to preserve uncertainty when everyone around us is certain.
  • Avoid assumptions when:
o    critical things depend on it
o    when the assumption is unlikely to be true
o    the assumption is dangerous when not declared
                        Huh?  Really?  So?   (James Bach’s critical thinking heuristic)
o    Huh? – Do I really understand?
o    Really? – How do I know what you say is true?
o    So? – Is that the only solution?


The art of being happy at work
I came across an article  to make  ways to make my day funnier and more adventurous. Came across an explanation on the word F.L.O.W
FLOW in psychology is the mental state, where a person loose sense of time by doing something very interesting. So when you feel that way, that’s a full happiness at work.
People who experience flow describe it as “a state of effortless concentration so deep that they lose their sense of time, of themselves, of their problems,“ and their descriptions of the joy of that state are so compelling that Csikszentmihalyi has called it an “optional experience” 
everybody experienced that state in some kind of activity. Kids like to play video games a lot losing sense of time.



F
Focus
Focus on something  in particular task, goals achievements
L
Learning
Learn Something New
O
Optimize
Keep Balance between Boredom and anxiety areas
W
Wow
Enjoy Every Single Moment
F.L.O.W
A state of effortless concentration by doing something interesting