Тесты влияют на архитектуру.
Не УСТАЮ это ПОВТОРЯТЬ.
Вот какая штука.
У нас в одном из проектов (седьмом уже по счёту, который мы покрываем тестами) - была такая вещь.
Приложение слушало TCP/IP и принимало "поток данных", которое потом распаковывало и преобразовывало в сообщение для постановки в очередь.
И это было сделано МОНОЛИТНО в ОДНОЙ процедуре.
Когда мы стали это тестировать мы сначала оказались "в тупике".
Как "это" тестировать - было непонятно.
"Эмулировать" клиента - НЕ ХОТЕЛОСЬ. Ибо НЕ БЫЛО задачи тестировать СОБСТВЕННО коммуникацию клиент-сервер.
Что мы сделали?
Мы РАЗДЕЛИЛИ этот МОНОЛИТНЫЙ код на ДВЕ составляющих - на собственно ПРИЁМ сообщения и на его РАСПАКОВКУ и дальнейшую укладку в очередь.
После этого мы сохранили сообщение в файл. И ПЕРВУЮ часть (приём сообщения) - ОПУСТИЛИ.
Стали сразу читать сообщение из файла (как будто бы оно пришло от клиента), да и из ЛЮБОГО другого потока (TStream) и добавлять его в очередь.
И с тестами СРАЗУ всё срослось.
Более того мы сразу получили возможность читать задания из файлов (и прочих потоков). В обход TCP/IP.
Тесты влияют на архитектуру.
Не УСТАЮ это ПОВТОРЯТЬ.
Вот какая штука.
У нас в одном из проектов (седьмом уже по счёту, который мы покрываем тестами) - была такая вещь.
Приложение слушало TCP/IP и принимало "поток данных", которое потом распаковывало и преобразовывало в сообщение для постановки в очередь.
И это было сделано МОНОЛИТНО в ОДНОЙ процедуре.
Когда мы стали это тестировать мы сначала оказались "в тупике".
Как "это" тестировать - было непонятно.
"Эмулировать" клиента - НЕ ХОТЕЛОСЬ. Ибо НЕ БЫЛО задачи тестировать СОБСТВЕННО коммуникацию клиент-сервер.
Что мы сделали?
Мы РАЗДЕЛИЛИ этот МОНОЛИТНЫЙ код на ДВЕ составляющих - на собственно ПРИЁМ сообщения и на его РАСПАКОВКУ и дальнейшую укладку в очередь.
После этого мы сохранили сообщение в файл. И ПЕРВУЮ часть (приём сообщения) - ОПУСТИЛИ.
Стали сразу читать сообщение из файла (как будто бы оно пришло от клиента), да и из ЛЮБОГО другого потока (TStream) и добавлять его в очередь.
И с тестами СРАЗУ всё срослось.
Более того мы сразу получили возможность читать задания из файлов (и прочих потоков). В обход TCP/IP.
Тесты влияют на архитектуру.
Комментариев нет:
Отправить комментарий