# Smoke testing

Smoke testing bzw. Rauchtest ist ein Begriff aus dem Englischen, gebräuchlich im handwerklichen Bereich (z. B. in der Gas-/Wasserinstallation, Elektronik oder beim Bau von Holzblasinstrumenten) wie auch in der Softwareentwicklung. Es bezeichnet den ersten Probelauf nach einer Reparatur oder der ersten Implementierung eines neuen Algorithmus um sicherzugehen, dass das Gerät oder die Programmfunktion nicht schon im Ansatz fehlschlägt. Nach einem smoke test ohne Vorkommnisse kann die Apparatur eingehender geprüft werden.

## Smoketest bei sanitären Anlagen

Smoketests im Haushalt, aber auch in chemischen Fabrikanlagen, werden benutzt, um Stellen zu finden, an denen Flüssigkeit austreten kann. In Abflusssystemen wird dies gemacht, um zu sehen, wo Grund- oder Regenwasser in die Rohre gelangen kann. Der ungiftige Rauch tritt an Leckstellen aus. Smoke testing ist besonders nützlich, wo eine komplette, permanente Versiegelung des gesamten Systems unerwünscht oder unsinnig ist, beispielsweise bei belüfteten Abwassersystemen.
Beim Smoketest von Sanitäranlagen ist es hilfreich, den zu prüfenden Teil des Systems zu isolieren, zum Beispiel mit Sandsäcken, die in den Kanalisationsschacht hineingelassen und dann in Position gebracht werden. Eine komplette Blockierung aller Rohre allerdings könnte einen Stau von verbliebenem Wasser verursachen, welches wiederum den Rauch am Austreten hindern kann.
Große Gebläse werden auf offene Kanalschächte gelegt, jeweils an beiden Enden des zu prüfenden Rohrabschnittes. Dann wird Rauch, entweder von einer Rauchbombe oder flüssiger Rauch, über die Gebläse in die Rohre gesaugt. Wenn alle Siphons in den angeschlossenen Haushalten funktionieren, sollte der Rauch über andere Kanaldeckel oder über die Belüftungsschächte der Abwasserrohre entweichen. Defekte Abwasserrohre oder trockene Siphons aber lassen den Rauch ins Haus eintreten.
Wenn Rauchwolken woanders als in den Abwasserbelüftungen der Häuser oder an den Rändern von Kanaldeckeln auftauchen, werden diese Stellen markiert, vermessen, notiert und ggf. fotografiert.

## Überprüfungen bei der Reparatur von Holzblasinstrumenten

Beim smoke test wird ein Ende des Blasinstruments verschlossen und Rauch, üblicherweise Tabakrauch, in das andere hineingeblasen. Entweichender Rauch ist ein sicheres Zeichen für unsauber gesetzte Klappen oder schlechte Verbindungsstücke. Nach diesem Test wird das Instrument gereinigt, um Rauchrückstände wie Nikotin zu entfernen. Natürlich ist dieser Brauch gesundheitsschädigend für den Reparateur und den Spieler, und seit Anfang des Jahrhunderts wird die Methode kaum noch benutzt.

## Tests in der Elektronik und im Ingenieurshandwerk

Die Begriffe smoke test oder power on test werden in der englischsprachigen Elektronik verwendet, wenn ein sich in der Entwicklung befindender Stromkreis zum ersten Mal an eine Stromquelle angeschlossen wird. Dies kann durchaus geschehen, bevor die Arbeit fertiggestellt ist, einfach um sicherzugehen, dass keine größeren Fehler gemacht wurden, die alle weitere Arbeit nutzlos machen würden. Bei größeren Leistungen (bei SMD-Komponenten können wenige Watt genügen) kann in einem fehlerhaften Stromkreis tatsächlich Rauch entstehen, z. B. wenn Widerstände durchbrennen.

## Smoke testing in der Softwareentwicklung

Smoke testing wird von den Entwicklern vor einem ersten Release durchgeführt, oder auch von Testern, bevor sie einen Build für weitere Tests akzeptieren.
Im Allgemeinen besteht ein smoke test aus einer Sammlung von Tests, die neue oder reparierte Software durchlaufen muss. Diese Tests werden manchmal schon automatisch durchgeführt, z. B. vom Entwicklungssystem, das auch die Software kompiliert.
Ein smoke test, etwas formeller auch build verification test, ist eine oberflächliche Überprüfung der Programmfunktionen. Der Tester geht durch das ganze Programm und probiert Dinge wie „Kann man diese Funktion überhaupt benutzen?“, „Öffnet dies hier ein Fenster?“, „Tun alle Buttons auf diesem Fenster etwas?“. Sobald eine fundamentale Frage wie diese hier mit „nein“ beantwortet werden kann, muss nicht weiter getestet werden. Das Programm ist so unfertig oder kaputt, dass ein weiteres Testen unsinnig wäre. Diese protokollierten Tests können manuell oder automatisiert stattfinden. Die automatischen Testvorgänge werden meist direkt nach der Kompilierung durchgeführt und zwar meist in Form von Modultests.