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