Welcome to my software testing thoughts portal .The opinions/thoughts expressed on this blog are my own personal opinions/thoughts and do not represent my employer's view in any way. Come On ! Let us share to learn together.

Friday, March 26, 2010

Smoke Testing - Past and Future


The term “Smoke testing” is familiar to all software testing professionals. All software testing professionals should know the history how the term smoke testing coined. It is the term actually used by the hardware designing/testing professionals. Once they assemble the electronic circuit elements in a board named PCB, they will connect the power supply to the board and switch on the power supply to check whether the circuit works fine at least at a very basic level or the circuit burns out emitting smoke due to some issues. If smoke is not seen then the smoke test is passed.Similarly in software testing smoke testing is meant for checking whether the software is working correct at its basic level.


Smoke testing is normally done by the testing team to take a firm decision on whether the build can be taken for further detailed testing or can be rejected back to the development team with valid reasons and data.

Smoke testing is also known as Build Verification Test (BVT) or Build Acceptance Test (please note that user acceptance testing is different from build acceptance testing) or intake testing.

Now it’s my turn to share my own perceptions on smoke testing. Testing team do the smoke testing to validate the minimum stability of the software. I would like to have development team also to do a smoke test kind of stuff before they deliver the build to the testing team. This may look like a foolish thought as of now but there are chances in near or far future that someone will follow this practice quoting like its development team’s duty also to ensure a minimum stable enough build have to go to testing team for testing. At that time even these practices may get new terms like “Developer’s smoke test” and “Tester’s smoke test”.(or like Outgoing smoke testing and incoming smoke testing.Hmmmm..How addicted we are with this communication/mobile technology!)

Also on the lighter side, in hardware testing one can see the real smoke when smoke test fails but in software testing the smoke cannot be seen but can be realized at development team’s desk like these poor testing guys rejected our build in their smoke testing.



Friday, March 12, 2010

What is software testing?-Birth of a New definition?

Software Testing- A great term as well as a good profession for most of the young talented minds especially in India. So what is really meant by software testing? To this question there may be so many answers like finding bugs, indicating and hence improving the product/service quality, reducing the risks etc. Even someone will tell like Software testing is an art. Some others will tell like it is a science. So there are so many perceptions floating around about software testing. Why it is so and what is really software testing?

Here are some common answers we used to hear from people

1. Software testing is to find the defects in the product/application.

2. Software testing is meant to improve the quality of the product/application.
3. Software testing is to reduce the risks associated with the product.
4. Software testing is to reduce the risks associated with the business.

Now it’s the time to validate each of the answers mentioned above.

1. Software testing is to find the defects in the product/application.

So just finding the defects is enough to ship the product to the end customers/users? What has to be done once defect(s) are found out? Will you buy a product of a company whose advertisement quotes like "In our product "x" no of defects found out? Definitely not right? So then how can a person claim like software testing is just finding the defects. This may be true in the perspective of a third party testing company whose responsibility lies only with respect to finding the defects and reporting them to their client companies who will take decisions further on those defects reported. Even some junior testers in some companies claim like just finding the defects is the responsibility of them and further decision has to be taken by the team lead/manager/upper management.

2. Software testing is meant to improve the quality of the product/application.

If software testing is meant to improve the quality of the product then what would be the responsibility of the development group-Just coding with enough time they have and push to testing team creating tight deadlines? According to me testing group will indicate the current quality of the product so that development group or management can take further decision on shipping the product to the market. So responsibility lies with development group for product quality improvement. But testing group has to ensure that correct inputs are given to the development group on what ways product quality has to be improved further. So testers are quality indicators and not quality improvement responsibility holders.

3. Software testing is to reduce the risks associated with the product.

Software testing being the last part of the SDLC is seen as a phase where testers can take responsibility to reduce the risks of the failure chances of the product failures. Software testing itself is seen as a risk reducing tool/method in the software development life cycle. This is how we used to see from the past of software testing history. But in my perspective we as software testers can assess the risks/chances of risks of the product failures the customer place and will indicate the level/severity of the risks identified or expected. Again it is some other department/group who will take real responsibility in reducing those risks identified to the maximum extent possible. So software testing is just an enabler to reduce the risks of the product failures.

4. Software testing is to reduce the risks associated with the business.

Agreed that whatever business we are doing it has to succeed. In software business product has to be delivered with acceptable quality to the end customers who are paying for it. But how software testing alone can reduce the risks associated with the business. There are other entities like marketing, sales, finance, strategic/product portfolio teams associated with the business. Even if one or more entities fail to deliver their duties/responsibilities then the business of the organization may fail. So according to me software testing is just one of the enablers to reduce the risks associated with the business of the organization.


Then what would be the definition of software testing? According to me, Software testing is defined as “A method/tool to indicate the quality of the software by detecting and reporting the defects in the software application/product to the development/engineering group for the purpose of taking sincere and correct actions to fix those defects with the intention to reduce the risks of the product failures and hence to reduce the risks associated with the product business”.

So is this the birth of a new definition for software testing?

Finally, one can say like testing is not merely finding defects,its about mitigating risks.

Note: Erik Van Veenendaal in his book "The Testing Practitioner" describes testing as " THE PLANNING, PREPARATION AND EXECUTION OF TASKS TO ESTABLISH THE CHARACTERISTICS OF A SOFTWARE PRODUCT AND TO DETERMINE THE DIFFERENCE BETWEEN THE ACTUAL AND REQUIRED STATUS, IN ORDER TO MEET THE QUALITY REQUIREMENTS OF THE CUSTOMER AND TO MITIGATE RISK".