Verbesserung der Qualität von Jami

Einheitstests

  • Es ist schwieriger, einheitliche Tests auf dem Jami-Projekt durch die Rennbedingungen auf mehrere Ebenen Abhängigkeit zu machen.

  • We use lcov for the coverage, you can find the lcov’s configuration in the daemon’s Makefile.am. Also, the coverage can be found at https://docs.jami.net/coverage/ and https://dl.jami.net/docs/dhtnet/coverage

  • Ein System muss eingeführt werden, um das Team zu überzeugen, einen Einheitstest für den neuen Code vor der Fusion durchzuführen.

  • Sie können sie starten, indem Sie make check im Daemon-Ordner oder separat im Einheitstest-Ordner mit gdb: gdb ut_media_encoder

  • Die Umgebung muss während des Befehls./configure mit -disable-shared eingestellt werden

  • Clients also have tests (cf jami-client-qt/tests for Desktop, jami-client-android/jami-android/app/src/androidTest for Android)

Integrationsprüfungen

  • Jedes Commit wird in Dockern der Baumaschinen durch Integrationsprüfungen durchgeführt.

  • Code-Review wird von einem anderen Entwickler durchgeführt, manchmal wird der Code von demselben Entwickler überprüft, dies sollte vermieden werden, um Linus-Gesetz zu betonen. Das Jenkins verifizierte-Label wird manchmal entsorgt und durch +1 von einem Entwickler ersetzt, dies sollte auch vermieden werden.

  • Sonarqube lässt Jenkins Jami bauen und Linting überprüfen. Sie können Filter und Ergebnisse finden: sonar- jami.savoirfairelinux.net Sonar verwendet Clang-tidy als Preprozessor Linting-Compiler, Sie können Clangs Filter in.clang-tidy-Datei im Daemon-Ordner finden.

  • On SFLVault sonarqube can be found at service m#2637 and admin logins at service s#7169

Doktor und Feedback:

  • Sie finden alle Unterlagen auf docs.jami.net

  • Probleme werden von Entwicklern oder Benutzern auf git.jami.net gestellt

Agent

Every night, hundred of calls are tested via 2 Agents and a message is posted every morning in the chat with the result (if all call succeeded or not)

Rauchversuche

Bevor jeder freigibt, muss jeder Kunde eine Liste von Szenarien überschreiten.

Hier werden Szenarien beschrieben: [Jami-Rauch-Tests]

Sie werden von QA dpt überprüft, bevor sie bei Bedarf an die Entwickler gesendet werden.

Wenn eine Version einen Netzwerk-Commit enthält, der zusammengeführt wurde, sollte die QA-Abteilung in der Lage sein, die verschiedenen Verbindungsprüfungen zu automatisieren (wie unten in den Anrufkonfigurationen beschrieben).

Calls configurations.

Hier ist die Liste der zu prüfenden Netzwerkkonfigurationen:

(IPv4! IPv6) + (TURN!!TURN) + (STUN!!STUN) + (UPnP!! UPnP) für beide Seiten.

Wenn beide Seiten nur IPv4 ohne TURN/STUN/UPnP sind, sollte der Anruf nur lokal sein.

Was zu tun ist

  • Ein System innerhalb des Teams zu schaffen, um die Wartung und Erstellung von Einheitstests zu gewährleisten.

  • Each major functionality should be tested as whole by adding a test (i.e. making sure a message was received, the call was ended well on both side, etc…)

  • Jede neue Funktionalität sollte auf jeder Plattform vor der Fusion getestet werden, um die Regression zu reduzieren.

  • Integration von Sonarqube auf jeden Kunden

  • Automatisieren Sie die Prüfung des Verhaltens von Jamis auf die Netzwerkkompatibilität