Do kontroli wersji używamy Git ze zdalnym serwerem BitBucket. Zadania organizujemy w JIRA, a dokumentację piszemy na Confluence oraz bezpośrednio w kodzie (sphinx).
Aplikacja jest testowana na wielu poziomach, każdy z komponentów poddwany jest testom jednostkowym oraz funkcjonalnym.
Do CI używamy Jenkinsa i w zależności od platformy dodatkowe narzędzia:
- linting (pylint, tslint, pycodestyle)
- formatting (clang-format, cmake-format, prettier, robot-tidy)
- analiza statyczna (SonarQube)
- testy jednostkowe (GTest, pytest, jasmine)
- testy integracyjne (selenium, RobotFramework, scapy)
- fuzzing
- testy wydajnościowe (pktgen)
Jeśli kod nie przechodzi testów, to nie może zostać włączony do wersji master – to oznacza, że nie jest wdrażany. Stosujemy tzw. quality gate’y:
- Pokrycie kodu testami musi przekraczać 85% linii
- Liczba błędów lintera nie może wzrosnąć
Poprawne wyniki testów pozwalają na wdrożenie nowej wersji w środowisku testowym. Proces jest wyzwalany on-demand i odbywa się automatycznie, przy użyciu sparametryzowanego projektu w Jenkinsie. Ostatecznie nasi testerzy przeprowadzają testy ręczne aplikacji. Przygotowujemy scenariusze testowe w JIRA korzystając z wtyczki Zephyr.

Najnowsze komentarze