From a4ac6dd930354cdc29a06d5f8ddc059af404a50c Mon Sep 17 00:00:00 2001 From: Renzo Kottmann Date: Fri, 21 Jun 2019 14:38:31 +0200 Subject: [PATCH] Translated and streamlines qs doc --- docs/qs.md | 50 ++++++++------------------------------------------ 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/docs/qs.md b/docs/qs.md index c69471d..6b08310 100644 --- a/docs/qs.md +++ b/docs/qs.md @@ -1,47 +1,13 @@ -# Qualitätssicherung +# Quality Management -## Umgesetzte QS-Maßnahmen +Some information on how we aim to ensure certain level of quality. -### Automatische Unit-Tests (Java-Code) +## Measures -* Die korrekte Funktionsweise des Prüftools wird durch mehr als 60 Unit-Test überprüft. -* Die Unit-Tests sind Teil des bereitgestellten Codes und werden durch den Maven-Build automatisch ausgeführt. -* Die Unit-Tests decken alle grundsätzlichen Funktionen des Prüftools ab. Daneben wird das korrekte Verhalten der - Anwendung bei verschiedenen Fehleingaben überprüft und nachgewiesen. -* Die Testabdeckung (Coverage) liegt derzeit bei ca. 85% des Java-Codes. - Diese Abdeckung wird mittels der Bibliothek jacoco automatisch ermittelt und zeigt, dass alle wesentlichen Funktionen - durch Tests überprüft werden. - Die verbleibenden 15% lassen sich fast ausschließlich auf Fehlerbedingungen (Exceptions) zurückführen, - die in der Praxis auch bei Fehleingaben nicht auftreten können und entsprechend durch keine Unit-Tests durchlaufen - werden. - -### Automatische Code-Analyse (Java-Code) - -* Der Quellcode wird dauerhaft und automatisch durch das weit verbreitete System [Sonar](https://www.sonarqube.org/) zur - statischen Code-Analyse geprüft. -* Das Prüftool wird von Sonar mit aktuell ca 1.800 Zeilen Quellcode als klein (S) eingestuft. -* Es existieren aktuelle 7 "Code Smells" und 3 "False Positives". -* Sämtliche „Code Smells“ sind auf nicht abgetestete Bedingungen (siehe oben) zurückzuführen. -* Ein Beispiel für ein "False Positive" ist "Illegale Ausgabe auf STDout", was jedoch eine konkrete Anforderung an das - Prüftool ist. -* In den Aspekten "Reliability", "Security" und "Maintainability" wird der Quellcode jeweils mit dem bestmöglichen - [Rating](https://docs.sonarqube.org/display/SONAR/Metric+Definitions) "A" bewertet. - -### Berücksichtigung von Best Practices für XML-Security - -* Es wurden explizit Best Practices für die sichere XML-Verarbeitung mit Java (XML, XML Schema, XSLT) berücksichtigt, um - beispielsweise XXE (XML eXternal Entity) Attacken und allgemein externe Referenzierungen (Entities, XIncludes) - auzuschließen. - -### End-to-End-Testsuite für die Prüftool-Konfiguration XRechnung - -* Um die korrekte Funktion der Prüftool-Konfiguration XRechnung zu testen, wurde eine Suite aus 10 Testdokumenten und - insgesamt 310 prüfbaren Aussagen (Assertions) über die resultierenden Prüfberichte erstellt. -* Durch diese Testsuite werden, ausgehend von dem Prüfbericht-Schemas alle möglichen Optionen und Auswahlmöglichkeiten - mindestens je einmal positiv und einmal negativ getestet. -* Diese Zusicherungen können vom Prüftool selbst mittels des Schalter `--implemenation-assertions` automatisch geprüft werden. -* Zudem wird die Integrität aller erstellten Prüfberichte automatisch gegen das Schema (XML Schema und - Schematron-Regeln) des Prüfberichts getestet. -* Für weitere Details siehe [xrechnung/test/readme.txt](configurations/xrechnung/test/readme.txt). +* We perform unit tests (see [source code](src/test/java/de/kosit/validationtool) ) +* We perform static code analysis using [Sonar](https://docs.sonarqube.org/display/SONAR/Metric+Definitions) +## XML-Security Best Practices + +* We follow the recommndations on best practices for JAVA XML to mitigate XML eXternal Entity (XXE) attacks and per default we do not allow external references on Entities and XIncludes \ No newline at end of file