Фреймворк для створення заглушок до зовнішніх систем при приймальних тестах
Організація, проектування, стандарти /
Тестування
Є веб-додаток, який є набір REST сервісів, ним користуються різні мобільні клієнти. Стоїть завдання покриття коду автоматичними системними тестами без участі у написанні програміста. Проблема яку потрібно вирішити, це те, що додаток є фасадом/агрегатором до безлічі інших сервісів як підконтрольних так і за сферою впливу, наприклад youtube, wikipedia, сервіси партнерів, є навіть такі додатки у нас у розробці які навіть не мають власної БД а є чистими посередниками. Практика написання автотестів тестером, коли програма залежить тільки від баз даних, однієї або кількох проста як божий день і давно відпрацьована із застосуванням DbUnit, тестер описує датасети в XML, які потрібно накотити на базу до тесту і датасети, що описує потрібний стан бази, яке має вийти після тесту. , плюс selenium та http-unit перевіряють виведення системи. Але ось рішення коли програма сама є клієнтом безлічі зовнішніх систем не виглядає для мене тривіальним для тестування. Коли пишеш юніт тести все просто, для кожної зовнішньої системи створений шлюз який завжди має чіткий інтерфейс, тому в юніт тестах все тривіально мокається через Mockito, але ось як зробити заглушку до зовнішніх систем при інтеграційному тестуванні?
Перше що спадає на думку це писати тестові імплементації для зовнішніх систем, оскільки з ними ведеться робота чітко на рівні інтерфейсів і сам додаток на Springframework підтасувати потрібну заглушку не складає труднощів, але ця ідея мені не подобатися тому що тестеру доведеться писати код, а цього би не хотілося, тому що він може як помилятися в самому коді, та й код буде не найкращогоЯк тому що культура написання коду у тестерів відсутня, як і багатьох програмістів.
Другий варіант скористатися який-небудь для генерацією проксизаглушки на льоту. Як я собі це уявляю це за принципом роботи мусить нагадувати симбіоз DbUnit та Mockito. Щоб їй можна було згодовувати XML щось на кшталт такого:
Це моє приблизне бачення як має виглядати конфігурація фреймворку для генерації таких проксей, якщо хтось знає щось подібне буду дуже вдячний. Взагалі, як я уявляю такий проксі повинен ще писати історії викликів у БД, щоб можна було застосовувати аналог verify з Mockito. Як варіант якщо готових рішень немає, то доведеться писати самому, чого звичайно б не хотілося.