Thursday, 19 September 2013

Testing Principles-

Testing Shows Presence of defects-
Software testing shows the presence of defects & not the absence. Like if no fish get hooked in the fisherman's hook, doesn't states that there is no fish in the pond. As a software test team,we can only reduce the probability of undiscovered defects but can not give the guaranty that the software is bug free or there will be no defect in a tested software.

Exhaustive testing is impossible-
'No amount of observations of white swans can allow the inference that all swans are white, but the observation of a single black swan is sufficient to refute that conclusion'. Same happen with software testing, after a lots of testing,we can not say that the software is bug free , we can only find the maximum possible bugs. We can not test all possible input combinations with all possible preconditions except for trivial cases.

Early testing-
First understand then focus & then start....
It is best to start testing as early as possible in a software development life cycle. The most useful benefit of this concept is that it reduces the cost of bugs & give a strong base to the software.

Defect clustering-
By 80/20 theory of Pareto Principle – 80% of the bugs caused by only 20% of the code . It means that a small number of modules contain a large no of defects in a system. These small number of module become defect prone & are also responsible for most of the operational failures.

Pesticide paradox-
We can not laugh again & again on the same joke because our mind get prepared for the end result & we lose interest Similarly,if we repeat same set of test cases again and again ,we will not find any new bug. To reduce/manage this pesticide paradox effect we need to review the old test cases regularly & to add new changes in the software & also review the area of the software to be tested to find more defects.

Testing is context dependent-
We need different tools & skill for fishing than for hunting of a lion. In same way we need do different type of testing of different application. The treatment of a banking application will be surely different than a free educational website. We will be more serious about the security of the banking application than its look but it is opposite for the free educational website.

Absence-of-errors fallacy-
We can not give a local travel bus instead of a car , to a newly married couple for sweet romantic drive. No matter both ( bus & car) are used for traveling, having working engine & covered place to sit. Ideally there is no issues in the working of a bus but it is not fulfilling the requirement of its user. Similarly the software will be of no use if it doesn't fulfill the customer's requirement though we have find & fixes almost all the possible bugs/defects.

Thanks !!! :)

Wednesday, 11 September 2013

Software Testing Concept-

Software Testing is to find out a way for- Knowing your customer's requirement completely for making a software under the budget & time defined for project to meet the customer's needs exactly.

Software Testing validates( means -are we making right software) & verifies ( means – are we making the software right) the software,for following conditions-

1- The software made, is exactly the replica of the agreement signed between customer & company for design & development.

2- The customer will be completely satisfy with the working of software at his end after implementation .

( According to IEEE-STD-610 -
Validation: The process of evaluating software during or at the end of the development process to determine whether it satisfies specified requirements.
Verification: The process of evaluating software to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase. )

According to ANSI/IEEE 1059 standard, Testing can be defined as -A process of analyzing a software item to detect the differences between existing and required conditions(that is defects/bugs/errors) and to evaluate the feature of the software item.

There are many methods of software testing. Depending upon these methods,we (test team)decide that at which state of software development life cycle,we will involve software testing. But it is always considered good to involve testing as early as possible so that we can reduce the cost of bugs.

It is like a game , where test team tries to find out all the odd behaviors(The behavior which is not needed) of the software made by development team by knitting a strong trap by using different test strategies & It is Fun to knit traps for those who are having great mind & strong skills & are able to use their commonsense to it's fullest .

Thanks !!! :)

Friday, 6 September 2013

Doubts About Software Testing....?

As a new member in testing world , My mind was surrounded by thousands of questions like-

1-Why do we need software testing?
2-What if , we remove testing phase from software development model?
3-Is testing really important?
4-If The developers have already big brain & more skillful (as people thinks) then why they do mistakes?
5-Is there any guarantee that tested project will never get fail? …. & so Many......

There is a big difference b/w 'Guru Ji' & 'Paid Faculty' & unluckily I always got paid faculty whose passion was money & not the education, So it was only my experience who can help me in finding the answer of above question But it may take a long time.... :(
I'm lucky that God gave me a bug inside me who never allows me to sit idle & wait for the things so I started reading/participating Blogs, books , article ,groups , communities to find the answers..

Now as my current experience , I can summarize my answers as -

1- Software testing is the process of validating & verifying that software will work as expected & surly will satisfy the need of the customer/user. This is the end object of any software development investment. So we can say that We Need Software Testing to achieve the end objective of Software development.

2- Software testing itself removes the bugs/issues or we can say the unexpected behavior of the software so if we remove this phase we may get the software with unexpected behavior or it may also get fail .

3- Yes, Yes & Yes... testing is really important to insure that the chances of product of getting fail have been reduce to a great extend & the product will work as expected under defined terms & conditions.

4- There is no comparison b/w a developer & a tester because they work in two different ways for achieving a same goal (but as a team).The developer uses his brain & skill in creating a thing while a tester uses his brain & skill in insuring that the thing is as expected.

5- Testing shows the presence & not the absence of the bugs. So there is no guarantee that tested project will never get fail but there Is a great probability that the software tested perfectly,will not get failed under explored failing areas (till now). But if a tested product get failed under defined terms & conditions then there may be the chances of getting new ,unexplored areas of testing,which may give a new direction or idea to testing world.

These are the answers based on my experience , knowledge & research till now, I found for my questions. But testing is the process of learning. Still I’m a learner in this field & I’ll talk after some time about above question after gaining more knowledge ,more experience & after doing lots of researches.

Thanks !!! :)