Servus zusammen,
ich habe beruflich ein Testsystem geschrieben, welches via JSON, Dateien einliest und damit das Interface von Linearem Code (also ohne OOP, genauer gesagt ist das C-Code) abtestet.
Aktuell haben wir knapp 4000 Testfälle. Was wir aber nicht wissen ist, wie viel Code wurde denn nun eigentlich getestet, sprich welche Couverage haben wir denn da nun eigentlich.
Im Englischen Forum scheint das auch schon mal jemand probiert zu haben siehe https://forum.lazarus.freepascal.org/in ... ic=37186.0 aber so recht schlau geworden bin ich daraus nicht.
Bevor ich mir nun ein eigenes Tool baue, mit welchem man den Code instrumentalisiert und dann die Coverage rausmisst, dachte ich mir ich frag mal ganz Frech hier im Forum, ob da jemand Erfahrungen mit hat ...
[Edit]
Das hier scheint auch related: https://gitlab.com/ccrdude/laz-codecoverage-helper
Code Couverage Messen, aber wie .. [Gelöst]
- corpsman
- Lazarusforum e. V.
- Beiträge: 1629
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Code Couverage Messen, aber wie .. [Gelöst]
Zuletzt geändert von corpsman am Di 31. Mai 2022, 11:09, insgesamt 1-mal geändert.
--
Just try it
Just try it
-
- Beiträge: 2122
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Code Couverage Messen, aber wie ..
Im grunde kannst du dir die Coverage informationen mittels Valgrind holen:
und musst die dann nur noch statistisch auswerten.
Auf die schnelle habe ich dazu das als all in one lösung gefunden: https://github.com/squeek502/grindcov
Alternativ, könntest du mal KCov versuchen, das kann theoretisch beliebeige binaries mit DWARF2 symbolen:
https://github.com/SimonKagstrom/kcov
Code: Alles auswählen
$> valgrind --tool=callgrind --compress-strings=no --compress-pos=no --collect-jumps=yes "command"
Auf die schnelle habe ich dazu das als all in one lösung gefunden: https://github.com/squeek502/grindcov
Alternativ, könntest du mal KCov versuchen, das kann theoretisch beliebeige binaries mit DWARF2 symbolen:
https://github.com/SimonKagstrom/kcov
- corpsman
- Lazarusforum e. V.
- Beiträge: 1629
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Code Couverage Messen, aber wie ..
Danke für die Tipps, das Valgrind wollte ich eh schon immer mal ausprobieren, leider arbeite ich unter Windows muss mal schaun ob das dort auch so einfach geht ...
--
Just try it
Just try it
- corpsman
- Lazarusforum e. V.
- Beiträge: 1629
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Code Couverage Messen, aber wie ..
Sodale, hab nun einiges Ausprobiert, und wie für mich typisch habe ich nun eine Custom Made variante gebastelt die macht was ich will
Im Prinzip habe ich nun ein kleines Tool das vor dem Compilieren meinen Code instrumentalisiert (und zwar nur den Teil den ich testen will) und einen "PfadBesucht" befehl einbaut.
Im Finalen Testsystem wird dann vor dem Ausführen der Tests jeder Pfad als "Nicht" besucht markiert und nach den Tests geschaut welche besucht wurden.
Das Funktioniert derart gut, dass es nun schon auf die nächsten Projekte ausgerollt wird
.
Mit hilfe eines kleinen weiteren Tools kann man dann auch anzeigen welche Pfade unbesucht sind. Und weil mein Tool custom made ist haben wir auch gleich eingebaut, dass man Pfade via Review von der Pfadanalyse streichen lassen kann. Ist echt cool geworden, danke für eure hilfe.

Im Prinzip habe ich nun ein kleines Tool das vor dem Compilieren meinen Code instrumentalisiert (und zwar nur den Teil den ich testen will) und einen "PfadBesucht" befehl einbaut.
Im Finalen Testsystem wird dann vor dem Ausführen der Tests jeder Pfad als "Nicht" besucht markiert und nach den Tests geschaut welche besucht wurden.
Das Funktioniert derart gut, dass es nun schon auf die nächsten Projekte ausgerollt wird

Mit hilfe eines kleinen weiteren Tools kann man dann auch anzeigen welche Pfade unbesucht sind. Und weil mein Tool custom made ist haben wir auch gleich eingebaut, dass man Pfade via Review von der Pfadanalyse streichen lassen kann. Ist echt cool geworden, danke für eure hilfe.
--
Just try it
Just try it