Ein Unterschied zwischen Aussage-und decision-coverage
Statement coverage wird gesagt, um sicherzustellen, dass jede Anweisung im code wird mindestens einmal ausgeführt.
Decision/branch-coverage wird gesagt, um zu testen, dass jede Verzweigung ein - /Ausgabe der Entscheidungen, die getestet wird, d.h. alle Aussagen, die in beiden false/true-Zweige ausgeführt werden.
Aber ist es nicht das gleiche? In der Statement-coverage, die ich brauchen, um ausführen alle Aussagen, so dass ich denke, es kann nur durch ausführen aller möglichen Wege. Ich weiß, ich bin hier etwas fehlt..
InformationsquelleAutor der Frage Pietrossek | 2013-01-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort von Paul nicht ganz richtig ist, zumindest denke ich das (nach ISTQB-Definitionen). Es ist ein ziemlich signifikanter Unterschied zwischen der Aussage, decision/branch-und bedingungsabdeckung.
Ich verwende das Beispiel aus der anderen Antwort, sondern ein bisschen modifiziert, so kann ich alle drei test-coverage-Beispiele. Tests hier geschrieben gibt 100% test-coverage-für jeden Typ.
Haben wir zwei Aussagen hier - wenn(a||b) und wenn(c), um vollständig zu erklären, diesen Versicherungsschutz Unterschiede:
Diese Weise haben wir ausgeführt jeder und jede Anweisung.
branch/decision coverage braucht man mehr test:
So haben wir alle Zweige getestet, D. H. wir gingen durch alle Pfade.
condition coverage muss ein weiterer test:
So haben wir alle Bedingungen getestet, was bedeutet, dass wir gingen durch alle Wege (äste) und löste mit jeder Bedingung konnten wir - erste 'if' - Anweisung wahr war im ersten test, weil der eine=true es ausgelöst hat, und in den letzten test, da b=true " ausgelöst. Natürlich kann jemand argumentieren, dass der Fall mit a=true und b=true sollte auch getestet werden, aber wenn wir prüfen, wie sich 'oder' funktioniert, dann können wir sehen, es ist nicht erforderlich, und auch die variable c kann einen beliebigen Wert haben, da es in diesen tests nicht ausgewertet.
Zumindest interpretierte ich es so. Wenn jemand noch interessiert 🙂
EDIT: In den meisten Quellen fand ich in letzter Zeit decision/branch-coverage-Bedingungen sind äquivalent und der Ausdruck, den ich beschrieben, wie decision coverage ist in der Tat condition coverage daher, dass update von der Antwort.
InformationsquelleAutor der Antwort Faflok
Müssen Sie möglicherweise eine Aussage wie:
Wenn Ihr code coverage sagt sowohl den test1-und test2-Linien betroffen sind, dann haben Sie die statement coverage, aber voll zu bekommen Zweig Abdeckung, die Sie benötigen, um zu testen, wenn a wahr ist, wenn a falsch, aber b wahr, wenn a und b falsch sind, aber c und d sind wahr, und e ist falsch, usw.
Branch-coverage deckt jede mögliche Kombination der branch-Entscheidungen und so ist schwieriger, eine 100% Abdeckung.
InformationsquelleAutor der Antwort Paul Rutland
Kann ich dies hinzufügen, die oben, die ich gefunden um zu werden fehlt, Wenn die tests haben komplette branch-coverage dann können wir sagen, es hat auch vollständige anweisungsüberdeckungaber nicht Umgekehrt.
100% branch coverage => 100% statement coverage
100% statement coverage impliziert nicht 100% branch coverage
der Grund dafür ist in der branch-coverage abgesehen von der Ausführung alle Anweisungen, sollten wir auch überprüfen, ob die tests führt alle Zweige, die interpretiert werden kann als die alle Kanten im Kontrollfluss Zweig
a = true, b = true wird 100% statement-coverage, aber nicht branch-coverage
In der branch-coverage müssen wir decken alle Kantendie wir verpasst haben, in der Erklärung Abdeckung gezeigt, die als roten Linien im Bild oben
InformationsquelleAutor der Antwort murali krish