Die einfache Antwort ist, dass es vom System abhängt. Wenn Sie eingebettete Software für einen Herzmonitor oder Sicherheitsüberwachungs-Tools für einen Kernreaktor schreiben, ist der Standard weit höher als beim Schreiben einer Blogging-Plattform.
Dies ist wirklich eine Frage für einen guten Systemtester (und ich bin keine), aber ich werde es versuchen.
Ihre grundlegende Maßnahme wird die Testabdeckung sein: Wie viel der Anwendung wurde tatsächlich getestet (sowohl durch Komponententest als auch funktionell).
Sie müssen jeden potenziellen Anwendungsfall (und die Parameter für diesen Anwendungsfall) auf die Wahrscheinlichkeit prüfen, dass er tatsächlich verwendet wird (so dass Sie Randfälle löschen können), auf die Komplexität (einfachere Dinge enthalten mit geringerer Wahrscheinlichkeit Fehler oder eher mit geringerer Wahrscheinlichkeit schwerwiegende Fehler) Fehler zu finden), Testkosten (in Bezug auf die Zeit) und mögliche Auswirkungen eines Fehlers, wenn er in diesem Bereich entdeckt wird (hier kommt der Kernreaktor gegen die Blogging-Plattform ins Spiel).
Basierend auf dieser Einschätzung müssen Sie herausfinden, welche davon wie detailliert getestet werden sollen. Sobald Sie eine solche Liste haben, kann das Team (einschließlich eines Produktmanagers / Projektmanagers / Anwendervertreters) diese Liste durchgehen und anhand der von Ihnen festgelegten Einschränkungen Prioritäten setzen.
Eine nützliche Technik, über die Sie nachdenken sollten, ist, dass Sie auch die Anwendungsfälle variieren können, die mit jeder Version getestet werden. Zum Beispiel könnten Sie eine Liste nicht kritischer Testfälle haben und die Hälfte mit einer Version und die andere Hälfte mit der nächsten (dann alternierend) testen. Auf diese Weise erhöhen Sie die gesamte Testabdeckung, die Sie für den Aufwand erhalten (obwohl das Risiko besteht, dass Regressionsfehler auftreten).
Dies könnte sich auch auf Plattformtests auswirken - wenn Sie zwei Datenbank-Back-Ends (oder mehrere Browser) unterstützen, testen Sie die eine Hälfte der App auf der anderen, die andere Hälfte auf der anderen und tauschen Sie dann die nächste Version aus.
(Ich denke, dies wird als Striping bezeichnet, aber zitiere mich nicht dazu.)
Und dann ist das Letzte, worüber Sie nachdenken müssen, nicht das, was Sie testen, sondern das, was Sie tatsächlich beheben, wenn Probleme entdeckt werden. Es ist üblich zu sagen "alle Fehler beheben", aber die Realität ist, dass es Zeitdruck gibt und nicht alle Fehler gleich sind. Auch hier sind regelmäßige Bug-Scrubs mit allen relevanten Parteien der beste Weg nach vorne. Dies ist besonders relevant, wenn eine Fehlerbehebung besonders aufdringlich sein kann, da der zusätzliche Aufwand beim erneuten Testen und Regressionstesten den Nutzen der Fehlerbehebung überwiegen kann.