What is the added value of smoke test?

Or maybe with our implementation. I am new to a team that wants to go through this process, and this seems to have confused some of our team members, including me. We were given the fact that I would consider the user acceptance test or a list of manual actions that you would click to see if everything works. I thought it would be simpler because we simply divided the sections of the application and simply switched to it, trying to find huge errors. This will not include any scripts, just clicking on each page, possibly filling out the material, making sure that it submits in order. And this brings me to my other point, it seems to me that testing smoke is basically useless. I would think that instead you would have unit tests or even automatic tests that go through the list of requirements to make sure that this happens correctly. Even if this had not been completed, I would have thought that the developer who first checked the code would at least run a mini smoke test to make sure that their functionality worked first. We put it together in a meeting so you can imagine the confusion, and that brings me back to my question, what value are we going to get out of this type of smoke testing?

+6
testing
source share
10 answers

The value of any testing is to increase confidence in the implementation. Doing this kind of "smoke test" here is to increase the confidence that it really built correctly and that there are no serious and awkward errors, for example, the user interface will not appear. So this is basically a low-effort test to confirm that nothing serious has happened.

This may not seem very useful, but I saw that heavily tested code produces a "smoke test" due to, for example, an unexpected build failure or a damaged image. Usually when it is shown to an important customer.

+9
source share

If you define a smoke test as "Run through the basic functions of the system to make sure they work," then I think that has a value. Unit tests, if necessary, are not all included. They do not detect integration errors. Regarding test automation, I have yet to see a system that can be fully tested with automation, and even if possible, such automation takes time and effort.

In principle, the value that I see in it allows us to make sure that the changes we made to the code today did not break anything that worked yesterday. Depending on how much you adhere to your encoding rules, this is not always the case.

+5
source share

To answer the question “What is a smoke test?”, Imagine that you tested a piece of electrical or electronic equipment.

Plug it in and turn on the power:

  • Do you see it turning on (for example, a screen or a power indicator)? Good!
  • Do you see some kind of smoke? Poorly!

And it's all! "smoke test" is a minimal test: not rigorous testing.

The meaning of "smoke test" is that it is cheap or economical: for example, for 1% of the cost of a full test, it captures 90% of the most likely errors. For example, in a primitive factory toaster, you can do:

  • Costly initial design test
  • Costly prototype test
  • Costly test of the first item from the mass production line
  • Cheap smoke test from each subsequent product from the mass production line

I’m not sure which places “smoke tests” are currently developing software for, now automatic testing has become more popular. In the old days, people advocated “daily assembly” as a measure of quality assurance (in particular, to help with “continuous integration”) ... and then advocated “daily assembly and smoke test ” as a way to do better than just daily assembly ( i.e. make a daily build and ) so that it runs at all) ... but these days it is better than it can be a "daily build and advanced automation test suite."

+5
source share

We conduct this type of smoke testing where I work.

Of great importance is that we can make sure that all parts are assembled together before moving on to users for user acceptance testing. An application I’m thinking about living on three servers, as well as negotiating with an inherited system. Making sure that we can handle it and that every detail can talk with other things that it needs is a simple and important test.

+3
source share

I assume your sense of "smoke test" is the same as mine - I'm trying to blow up the program the way you can.

I learned about the value of this 20+ years ago when I just finished (or, as I thought) most of the code for the WYSIWYG editor. I proudly showed it to my officer (Hey, Dbell!), Who said, “Carefully!” He immediately created a paragraph with about 1000 characters, copied it thousands of times and created a document about 32 MB in size, deleted everything, unzipped it, and the program completely exploded.

I was completely horrified and said: "You cannot do this!" He grinned and said, "Why not?"

Finding and fixing a problem (which turned out to be easily replicable as soon as you knew what the threshold events looked like) found a subtle and serious error in memory management. A simple push-button test would never have detected it.

Today's equivalent of this is Fuzz testing ( http://en.wikipedia.org/wiki/Fuzz_testing ). It does not replace step-by-step testing of requirements, but often reveals problems that other methods will not have.

+1
source share

The Smoke test is that putting broken software in the hands of users can be extremely expensive: it can spend a lot of time on people, it may require management, meetings, etc. to fix. Thus, it is worth spending a little time on each assembly to make sure that it is not broken, can save you a lot of time if there is a problem.

General rule: it’s always cheaper to find problems as early as possible.

And, if you have not tried it in the same way as the user, you cannot be sure that it will work exactly as it should. There are always unforeseen problems that only a person can catch, for example. visual problems, installation problems ...

Thus, automated tests should always be complemented by a small manual test before putting the work into the hands of users.

+1
source share

Smoke testing is definitely worth the effort.

Here's an excellent article by Steve McConnell called " The Daily Build and the Smoke Test ." That is what led me to the idea.

For more information on continuous integration and daily builds, look at Martin Fowler for an excellent introduction to the topic.

NTN

amuses

Rob

+1
source share

In my opinion, "Smoke Test" before the final release, regardless of whether the release is for the user or the QA team, is absolutely necessary. Automated testing can only be tested in the way scripts are written, and there is always the potential that something will be missed.

A simple interface flaw can spoil the perception of your QA application or user and make them suspect or question the basic underlying components. Without further ado, before you release it, you open yourself so that your software is perceived as low quality only due to small interface errors.

+1
source share

Smoke testing is not exhaustive, basic and short-term, to make sure that critical functionality is not broken due to the latest code modifications. In addition, in the flexible part, it is part of the QA process for conducting smoke testing at each new gathering in each software testing company . This is also called a build health check.

Scenarios that are covered during smoke testing: 1. Checking the login. 2. Positive application workflow. 3. The main functionality of all functions.

Additives for smoke testing additives:

The ultimate goal of smoke testing is to test the basic and important functions without going into the finer details of the application in a quick start with each build.

The following are the values ​​added when making the assembly when testing smoke:

  • To check assembly stability
  • Early identification of major mistakes.
  • Provides confidence that the application will run smoothly
  • Health test input
  • Saves engineer time before continuing with detailed functional testing -
  • Documentation of such scenarios is especially useful when the daily deployment process follows.
+1
source share

Like any best practice, you really need to believe in it to keep an eye on it. The smoke test or Build Verification Test should be performed at least every day with each build, or if you do not have a daily build, and then every day to check that your environment is busy.

Knowing that your capable every day of your testing cycle is an advantage. If you do not run a smoke test every day to check the basic connectivity or functionality, you will not be able to report that you are blocked during testing, and the development team will not take this direction with regard to errors with the highest priority for correction.

I would recommend a recorded time metric of your smoke tests compared to blocking defects and the speed of the test. This may prevent you from looking like a bottleneck and may save your work if someone is serious about you.

0
source share

All Articles