mvn package
java -jar bank-1.jar
Порт: 8080
Файловая h2 в ${user.home}/database.mv.db (inmemory для тестов)
Пересоздается при каждом запуске.
При старте проекта в базе автоматически создаются 1000 аккаунтов с идентификаторами от 1 до 1000 и с балансом 100000.
Покрытие 94% без игнорирования моделей и т.п.
Во всех тестах используется база h2 inmemory.
1) AccountControllerSuccessTest
- успешное создание аккаунта
2) AccountControllerValidationTest
- аккаунт с существующим id нельзя создать
- баланс не может быть меньше 0
3) TransferMoneyControllerSuccessTest
- Перевод между двумя аккаунтами
- Последовательный перевод по кругу между тремя аккаунтами
- Допустимость нулевого баланса после перевода
4) TransferMoneyControllerValidationTest
- Недостаточно денег на балансе для перевода
- Аккаунт не существует
- Перевод самому себе запрещен
- Сумма перевода должна быть положительной
- Сумма перевода не может быть равна 0
5) FullLifeCycleControllerTest
- Пошаговое создание аккаунтов, перевод между созданными аккаунтами и проверка баланса
- Проверка корректности работы TransferMoneyService в многопоточной среде. 101 поток переводит со счета A на B и еще 101 поток переводит со счета B на A.
Скачать jmeter-5.3
Выполнить в консоли:
/.../apache-jmeter-5.3/bin/jmeter -n -t /.../bank/jmeter_test/forward_and_backward_100_rps.jmx
Тест forward_and_backward_100_rps.jmx переводит с аккаунта 14 на аккаунт 24 и обратно. Баланс в итоге может отличаться от изначального, т.к. количество переводов в одну сторону может получиться больше чем в обратную.
Тест дает нагрузку примерно 100 запросов в секунду в течении 60 секунд.
В итоге получим, что выполнено ~6066 запросов и 0% ошибок.
Выполнить в консоли:
/.../apache-jmeter-5.3/bin/jmeter -n -t /.../bank/jmeter_test/forward_and_backward_balance_correctness.jmx
Тест forward_and_backward_balance_correctness.jmx переводит с аккаунта 19 на аккаунт 29 и обратно. Запускается 10000 запросов в одну сторону и 10000 запросов в другую.
В итоге получим, что выполнено 20000 запросов за ~18c. и 0% ошибок.
Баланс пользователей 19 и 29 остался таким же, каким был до теста.
Swagger доступен по адресу: http://localhost:8080/swagger-ui.html#/
Порт: 8080