# Програмний модуль @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

# Вимоги до програмної документації

Склад програмної документації, пропонованої на випробуванні:

# Засоби і порядок випробувань

Для запуску комплексів тестів використовуються менеджер пакетів для мови програмування JavaScript – npm (Node Package Manager), та команда

npm test

Порядок проведення випробувань:

  1. Виконати комплекс тестів "AmqpManager – тестування класу", запустивши файл infrastructure\amqp-manager.test.js
  2. Виконати комплекс тестів "Publisher – тестування класу", запустивши файл infrastructure\publisher.test.js
  3. Виконати комплекс тестів "Consumer – тестування класу", запустивши файл infrastructure\consumer.test.js
  4. Виконати комплекс тестів "Publisher валідація", запустивши файл validation\publisher.test.js
  5. Виконати комплекс тестів "Consumer валідація", запустивши файл validation\consumer.test.js
  6. Виконати комплекс тестів "Manager валідація", запустивши файл validation\manager.test.js
  7. Виконати комплекс тестів "Base валідація", запустивши файл validation\base.test.js
  8. Виконати комплекс тестів "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%, наведено в:

Протокол випробувань

Тестове покриття

Останнє оновлення: 11/25/2021, 8:07:33 PM