Poprawa jakości Jami

Badania jednostkowe

  • Trudno jest przeprowadzić testy jednostkowe na projekcie Jami ze względu na warunki wyścigowe związane z wielowymiarowym uzależnieniem.

  • Używamy lcov do pokrycia, konfigurację lcov można znaleźć w pliku Makefile.am demona. Pokrycie można również znaleźć na stronach https://docs.jami.net/coverage/ i https://dl.jami.net/docs/dhtnet/coverage.

  • System musi zostać wdrożony, aby zacząć przekonywać zespół do przeprowadzenia testów jednostkowych na nowy kod przed połączeniem

  • Można je uruchomić, wykonując make check w folderze daemon lub oddzielnie w folderze testów jednostkowych z gdb: gdb ut_media_encoder

  • Środowisko musi być ustawione z –disable-shared podczas polecenia./configure

  • Klienci również posiadają testy (por. jami-client-qt/tests dla Desktop, jami-client-android/jami-android/app/src/androidTest dla Android).

Badania integracyjne

  • Każdy z nich przechodzi testy integracyjne w dokersach na maszynach budowlanych.

  • Kod przeglądu dokonuje kolega programista, czasami kod jest przeglądany przez tego samego programisty, należy unikać tego, aby podkreślić prawo Linus.

  • Sonarqube pozwala Jenkins zbudować Jami i weryfikować linting. Filtry i wyniki można znaleźć na: sonar- jami.savoirfairelinux.net Sonar wykorzystuje clang-tidy jako preprocesor linting kompilator, można znaleźć filtry clangs w pliku.clang-tidy w folderze daemon.

  • W SFLVault sonarqube można znaleźć w usłudze m#2637, a loginy administratora w usłudze s#7169.

Doktor i opinie:

  • Wszystkie dokumenty można znaleźć na doc.jami.net

  • Problemy są zadawane przez deweloperów lub użytkowników na git.jami.net

Agent

Każdej nocy setki połączeń są testowane przez 2 agentów, a każdego ranka na czacie publikowana jest wiadomość z wynikiem (czy wszystkie połączenia się powiodły, czy nie).

Badania dymu

Przed wypuszczeniem każdego klienta musi być lista scenariuszy.

Scenariusze opisane są tutaj: [Testy dymu jamiego]

Są one przeglądane przez QA dpt. przed wysłaniem do programistów, jeśli jest to konieczne.

Jeśli w wersji znajduje się złączony commit sieciowy, dział QA powinien być w stanie zautomatyzować różne testy łączności (jak opisano poniżej w konfiguracjach Połączeń).

Zwołuje konfiguracje.

Oto lista konfiguracji sieci, które muszą zostać przetestowane:

(IPv4! IPv6) + (TURN!! TURN) + (STUN!! STUN) + (UPnP!! UPnP) dla obu stron.

Jeżeli obie strony są tylko IPv4 bez TURN/STUN/UPnP, połączenie powinno być wyłącznie lokalne.

Co należy zrobić

  • Ustanowienie w zespole systemu zapewniającego utrzymanie i tworzenie testów jednostkowych.

  • Każda główna funkcjonalność powinna być przetestowana jako całość poprzez dodanie testu (np. upewnienie się, że wiadomość została odebrana, połączenie zostało zakończone poprawnie po obu stronach itp.)

  • Każda nowa funkcjonalność powinna być testowana na każdej platformie przed połączeniem w celu zmniejszenia regresji.

  • Zintegrować sonarkub na każdym klient

  • Automatyzacja testowania zachowań Jami na temat kompatybilności sieci