Wenn die Software-Qualitätssicherung mit einer bestimmten Anzahl von Fehlern beginnt, ist es vielleicht einfacher, alle Probleme zu finden. Viele Rätselbücher zeigen Ihnen zum Beispiel eine Zeichnung und fordern Sie auf, eine genaue Anzahl versteckter Objekte zu finden. Oder man zeigt Ihnen ein Paar Zeichnungen und bittet Sie, eine bestimmte Anzahl von Unterschieden zwischen ihnen zu erkennen.
Bei der Software-Entwicklung ist die angestrebte Anzahl von Unterschieden - oder Fehlern - nicht immer so spezifisch. Wie viel einfacher wäre die Software-Qualitätssicherung, wenn uns jemand ins Ohr flüstern könnte, wie viele Fehler es zu finden gibt? In Wirklichkeit wissen wir das nie. Wir kennen nur ein Minimum: Wenn wir 37 Fehler gefunden haben, wissen wir, dass es mindestens 37 Fehler gibt. Vielleicht gibt es noch einen zu finden, vielleicht aber auch Hunderte - wir können es nicht genau sagen.
Es wäre hilfreich, eine ungefähre Vorstellung davon zu haben, wie viele Fehler noch vorhanden sind, damit wir unsere Testressourcen optimal einsetzen können. Wenn wir immer davon ausgehen, dass es noch Hunderte von Fehlern zu finden gibt, testen wir möglicherweise ein Produkt auf Kosten anderer zu stark. Wenn wir Grund zu der Annahme haben, dass wir alle oder fast alle Fehler gefunden haben, können wir unsere Ressourcen so umverteilen, dass sie ihre Zeit und ihre Bemühungen optimal nutzen.
Grobe Schätzungen
Nichts kann Ihnen sagen, wie viele Fehler bei der Software-Qualitätssicherung übrig bleiben, aber ein wenig Mathematik kann Ihnen eine Schätzung geben. Angenommen, Sie haben einen Tester, der eine Reihe von Fehlern gefunden hat. Wenn Sie nicht nur wüssten, wie effizient sie bei der Fehlersuche ist, sondern auch die Wahrscheinlichkeit, dass sie jeden Fehler in einem bestimmten Zeitraum findet, könnten Sie abschätzen, wie viele es zu finden gibt. Aber Sie können nicht wissen, wie viele Wanzen sie gefunden hat, ohne zu wissen, wie viele es zu finden gibt.
Nehmen wir nun an, Sie haben einen weiteren Tester, der ebenfalls eine Reihe von Fehlern gefunden hat. Sie wissen auch nicht, wie hoch der Anteil der Wanzen ist, die er gefunden hat. Aber wenn Sie die Fehlerzahlen der beiden Tester kombinieren, können Sie abschätzen, wie viele Fehler es gibt.
Das mag zu schön erscheinen, um wahr zu sein, ist es aber nicht - entscheidend ist, wie viele Fehler beide Tester gefunden haben. Angenommen, der erste Tester fand 20 Fehler und der zweite 30, aber es gab nur einen Fehler, den beide fanden. Sie könnten vermuten, dass es eine Menge Fehler zu finden gibt, da beide so viele mit kaum einer Überschneidung finden konnten. Wenn jedoch 18 der Fehler auf der ersten Liste auch auf der zweiten Liste zu finden sind, haben Sie das Gefühl, dass Ihre Tester wahrscheinlich die meisten davon gefunden haben.
Der Lincoln-Index
Sie können eine Schätzung mit einem Instrument, dem "Lincoln-Index", quantifizieren. Wenn der erste Tester A-Fehler gefunden hat, der zweite B-Fehler, und beide gemeinsam C-Fehler gefunden haben, wäre die geschätzte Gesamtzahl der Fehler AB/C. Im ersten Beispiel oben ist A = 20, B = 30 und C = 1. In diesem Fall wären insgesamt schätzungsweise 600 Fehler zu finden. Aber im zweiten Beispiel oben ist A = 20, B = 30, und C = 18. In diesem Fall gäbe es schätzungsweise 33 1/3 Käfer.
Wie finden Sie 1/3 eines Fehlers? Sie finden vielleicht 1/3 Fehler in Ihrer Suppe, aber Sie finden keine 1/3 Softwarefehler. Der Lincoln-Index ist ein einfaches mathematisches Modell und kann Ihnen daher nicht genau sagen, wie viele Bugs es gibt. Sie geht von einigen vereinfachenden Annahmen aus, nämlich dass Tester zufällig und unabhängig Fehler finden. Das wird in der Praxis nicht ganz zutreffen, was bedeutet, dass wir skeptisch gegenüber der Zahl sein sollten, die sie erzeugt. Dennoch gibt uns der Lincoln-Index eine Schätzung, mit der wir arbeiten können - viel besser als zu sagen: "Ich habe keine Ahnung, wie viele Bugs es gibt."
Der Lincoln-Index beruht auf folgender Rechnung: Angenommen, es gibt insgesamt N Fehler und der erste Tester hat eine Wahrscheinlichkeit p, jeden Fehler zu finden. Dann würde sie etwa A = Np Käfer finden. Wenn der zweite Tester eine Wahrscheinlichkeit q hat, jeden Fehler zu finden, würde er etwa B = Nq finden. Und wenn sie unabhängig voneinander Fehler finden, würden sie etwa C = Npq Fehler gemeinsam finden. Dann sollte AB/C etwa (Np)(Nq)/(Npq) = N, die Anzahl der Bugs, betragen. Die Wahrscheinlichkeiten, dass jeder Tester einen Fehler findet, heben sich gegenseitig auf.
Fazit
Der Software-Qualitätssicherungsprozess wird zwar nie so einfach sein wie ein "Finde die Unterschiede"-Rätsel, aber für bestimmte Arten der Softwareentwicklung gibt es einfache Hilfsmittel, um die schwer fassbare Anzahl der Gesamtfehler zu schätzen. Mit dem Lincoln-Index können wir den Grad der Überschneidung zwischen unseren Testressourcen bestimmen, was in der Regel auf den Anteil der noch zu entdeckenden Fehler hinweist. Mit dieser groben Schätzung können wir datengestützte Entscheidungen darüber treffen, wie wir unsere Ressourcen am besten einsetzen.