# Програмний модуль @molfar/amqp-client | Програма та методика випробувань
# Об'єкт випробувань
Об'єктом випробувань є програмний модуль @molfar/amqp-client – "Програмний модуль для реалізації взаємодії мікросервісів за допомогою передачі повідомлень", що призначений для забезпечення обміну повідомленнями між компонентами системи та забезпечення повної функціональної сумісністі та взаємодії між мікросервісами – відповідними клієнтськими додатками (також званими «клієнтами») та серверами проміжного програмного забезпечення (також званими «брокерами»), які здійснюють маршрутизацію, гарантують доставку, розподіл потоків повідомлень та підписку на потрібні типи повідомлень.
# Мета випробувань
Перевірити надійність функціонування програмного модуля @molfar/amqp-client та його окремих функцій.
# Вимоги до програмного модуля
Програмний модуль не має призводити до збою (фатального порушення роботи системи) та повинен задовільнати наступним вимогам:
- повертати правильну конфігурацію з'єднання по URL
- коректно зберігати конфігурації з'єднання по клієнту
- повертати правильну конфігурацію з'єднання по клієнту
- створювати або повертати існуючу конфігурацію з'єднання по клієнту
- створювати правильний
Publisher
- створювати правильний
Consumer
- закривати правильне з'єднання по клієнту
- закривати правильне з'єднання для всіх клієнтів
- повертати правильний розмір пулу конфігурацій з'єднання
- повертати правильний екземпляр для
Publisher
- правильно ініціалізувати
Publisher
-залежності - зберігати
callback
вmiddleware
дляPublisher
- правильно виконувати логіку для
Publisher
- закривати канал та з'єднання для
Publisher
- повертати правильний екземпляр для
Consumer
- правильно ініціалізувати
Consumer
-залежності - зберігати
callback
вmiddleware
дляConsumer
- правильно виконувати логіку для
Consumer
- закривати канал та з'єднання для
Consumer
- повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутніми
amqp
,exchange
,message
властивостями дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутнім
amqp(object)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
amqp(відсутній url)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
amqp(url має бути string)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутнім
exchange(object)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
exchange(відсутні вкладені поля)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
exchange/name(string)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
exchange/mode(string)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутнім
exchange/options(object)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
exchange/options(відсутні вкладені поля)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
exchange/options/durable(string)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
exchange/options/autoDelete(boolean)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутнім
message(object)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
message(відсутні вкладені поля)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутнім
message/options(object)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
message/options(відсутні вкладені поля)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
message/options/noAck(boolean)
дляPublisher
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
amqp(відсутній url)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
amqp(url має бути string)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутнім
queue(object)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue(відсутні вкладені поля)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue/name(string or null)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутнім
queue/exchange(object)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue/exchange(відсутні вкладені поля)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue/exchange/name(string)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутнім
queue/exchange/options(object)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue/exchange/options(відсутні вкладені поля)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue/exchange/options/durable(boolean)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue/exchange/options/autoDelete(boolean)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутнім
queue/options(object)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue/options(відсутні вкладені поля)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue/options/noAck(boolean)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue/options/exclusive(boolean)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue/options/durable(boolean)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
queue/options/prefetch(number)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутнім
message(object)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
message(відсутні вкладені поля)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутнім
message/options(object)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
message/options(відсутні вкладені поля)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
message/options/noAck(boolean)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає невалідним
message/options/exclusive(boolean)
дляConsumer
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з відсутньою
url
властивості дляManager
-валідації - повертати правильне повідомлення про помилку, що виникає у зв'язку з невалідним
url(string)
дляManager
-валідації - повертати правильний результат перевірки
options
вBase
дляBase
-валідації - повертати правильний результат конкатенації 2 об'єктів в результаті тестування функції
deepClone
- повертати правильний результат конкатенації змішаного об'єкту з будь-якими іншими типами в результаті функції
deepClone
# Вимоги до програмної документації
Склад програмної документації, пропонованої на випробуванні:
- ГОСТ 19.402-78. (opens new window) ЕСПД. Опис програми
- ГОСТ 19.301-79. (opens new window) ЕСПД. Програма та методика випробувань. Вимоги до змісту та оформлення
- ГОСТ 19.401-78. (opens new window) ЕСПД. Текст програми. Вимоги до змісту та оформлення
# Засоби і порядок випробувань
Для запуску комплексів тестів використовуються менеджер пакетів для мови програмування JavaScript – npm (Node Package Manager)
, та команда
npm test
Порядок проведення випробувань:
- Виконати комплекс тестів "AmqpManager – тестування класу", запустивши файл
infrastructure\amqp-manager.test.js
- Виконати комплекс тестів "Publisher – тестування класу", запустивши файл
infrastructure\publisher.test.js
- Виконати комплекс тестів "Consumer – тестування класу", запустивши файл
infrastructure\consumer.test.js
- Виконати комплекс тестів "Publisher валідація", запустивши файл
validation\publisher.test.js
- Виконати комплекс тестів "Consumer валідація", запустивши файл
validation\consumer.test.js
- Виконати комплекс тестів "Manager валідація", запустивши файл
validation\manager.test.js
- Виконати комплекс тестів "Base валідація", запустивши файл
validation\base.test.js
- Виконати комплекс тестів "deepClone – тестування функції", запустивши файл
utils\deepClone.test.js
Для обробки результатів тестування та створення протоколу випробувань в HTML використовується Jest reporter
версії 2.1.6 (opens new window).
# Методи випробувань
Для проведення випробувань пропонується наступий переліків комплексів тестів та окремих тестових прикладів:
- Комплекс тестів "AmqpManager – тестування класу", що міститься у файлі
infrastructure\amqp-manager.test.js
, має наступні тестові приклади:- Тест перевірки повернення правильної конфігурації з'єднання по URL
- Тест перевірки коректності збереження конфігурації з'єднання по клієнту
- Тест перевірки повернення правильної конфігурації з'єднання по клієнту
- Тест перевірки створення або повернення існуючої конфігурації з'єднання по клієнту
- Тест перевірки створення правильного
Publisher
- Тест перевірки створення правильного
Consumer
- Тест перевірки закриття правильного з'єднання по клієнту
- Тест перевірки закриття правильного з'єднання для всіх клієнтів
- Тест перевірки повернення правильного розміру пулу конфігурацій з'єднання
- Комплекс тестів "Publisher – тестування класу", що міститься у файлі
infrastructure\publisher.test.js
, має наступні тестові приклади:- Тест перевірки повернення правильного екземпляру
- Тест перевірки правильної ініціалізації
Publisher
-залежностей - Тест перевірки збереження
callback
вmiddleware
- Тест перевірки правильності виконання логіки
- Тест перевірки закриття каналу та з'єднання
- Комплекс тестів "Consumer – тестування класу", що міститься у файлі
infrastructure\consumer.test.js
, має наступні тестові приклади:- Тест перевірки повернення правильного екземпляру
- Тест перевірки правильної ініціалізації
Consumer
-залежностей - Тест перевірки збереження
callback
вmiddleware
- Тест перевірки правильності виконання логіки
- Тест перевірки закриття каналу та з'єднання
- Комплекс тестів "Publisher валідація", що міститься у файлі
validation\publisher.test.js
, має наступні тестові приклади:- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутніми
amqp
,exchange
чиmessage
властивостями - Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
amqp(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
amqp(відсутній url)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
amqp(url має бути string)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
exchange(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
exchange(відсутні вкладені поля)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
exchange/name(string)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
exchange/mode(string)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
exchange/options(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
exchange/options(відсутні вкладені поля)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
exchange/options/durable(string)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
exchange/options/autoDelete(boolean)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
message(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
message(відсутні вкладені поля)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
message/options(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
message/options(відсутні вкладені поля)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
message/options/noAck(boolean)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутніми
- Комплекс тестів "Consumer валідація", що міститься у файлі
validation\consumer.test.js
, має наступні тестові приклади:- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутніми
amqp
,queue
чиmessage
властивостями - Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
amqp(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
amqp(відсутній url)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
amqp(url має бути string)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
queue(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue(відсутні вкладені поля)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue/name(string or null)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
queue/exchange(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue/exchange(відсутні вкладені поля)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue/exchange/name(string)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
queue/exchange/options(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue/exchange/options(відсутні вкладені поля)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue/exchange/options/durable(boolean)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue/exchange/options/autoDelete(boolean)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
queue/options(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue/options(відсутні вкладені поля)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue/options/noAck(boolean)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue/options/exclusive(boolean)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue/options/durable(boolean)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
queue/options/prefetch(number)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
message(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
message(відсутні вкладені поля)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутнім
message/options(object)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
message/options(відсутні вкладені поля)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
message/options/noAck(boolean)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає невалідним
message/options/exclusive(boolean)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутніми
- Комплекс тестів "Manager валідація", що міститься у файлі
validation\manager.test.js
, має наступні тестові приклади:- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутньою
url
властивості - Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з невалідним
url(string)
- Тест перевірки повернення правильного повідомлення про помилку, що виникає у зв'язку з відсутньою
- Тест "Base валідація", що міститься у файлі
validation\base.test.js
, для перевірки повернення правильного результату перевіркиoptions
вBase
- Комплекс тестів "deepClone – тестування функції", що міститься у файлі
utils\deepClone.test.js
, має наступні тестові приклади:- Тест перевірки повернення правильного результату конкатенації 2 об'єктів
- Тест перевірки повернення правильного результату конкатенації змішаного об'єкту з будь-якими іншими типами
# Додаток
Вміст тестових файлів, результати тестування програмного модуля та розширена інформація про тестове покриття, яке в середньому склало 70.74%, наведено в: