четверг, 13 февраля 2014 г.

Коротко. Тесты влияют на архитектуру

Тесты влияют на архитектуру.

Не УСТАЮ это ПОВТОРЯТЬ.

Вот какая штука.

У нас в одном из проектов (седьмом уже по счёту, который мы покрываем тестами) - была такая вещь.

Приложение слушало TCP/IP и принимало "поток данных", которое потом распаковывало и преобразовывало в сообщение для постановки в очередь.

И это было сделано МОНОЛИТНО в ОДНОЙ процедуре.

Когда мы стали это тестировать мы сначала оказались "в тупике".

Как "это" тестировать - было непонятно.

"Эмулировать" клиента - НЕ ХОТЕЛОСЬ. Ибо НЕ БЫЛО задачи тестировать СОБСТВЕННО коммуникацию клиент-сервер.

Что мы сделали?

Мы РАЗДЕЛИЛИ этот МОНОЛИТНЫЙ код на ДВЕ составляющих - на собственно ПРИЁМ сообщения и на его РАСПАКОВКУ и дальнейшую укладку в очередь.

После этого мы сохранили сообщение в файл. И ПЕРВУЮ часть (приём сообщения) - ОПУСТИЛИ.

Стали сразу читать сообщение из файла (как будто бы оно пришло от клиента), да и из ЛЮБОГО другого потока (TStream) и добавлять его в очередь.

И с тестами СРАЗУ всё срослось.

Более того мы сразу получили возможность читать задания из файлов (и прочих потоков). В обход TCP/IP.

Тесты влияют на архитектуру.

Комментариев нет:

Отправить комментарий