А как вообще тестировать такие программы ?
От: okman Беларусь https://searchinform.ru/
Дата: 29.05.10 16:39
Оценка:
Всем доброго дня !

Известно, что использование тестов в работе существенно помогает.
Лично для меня это, как правило, множество простых тестов для каждого разрабатываемого компонента,
плюс какой-нибудь скрипт, запускающий "прогон".

Но есть такие программы, которые плохо поддаются внешнему управлению (например, сервисы в Windows),
к тому же многопоточны и логика потока выполнения которых далеко не последовательная, а зависит
от множества факторов, которые трудно эмулировать.

Так как же грамотно организовать тестирование таких систем, чтобы работоспособность программы оставалась
подтвержденной на каждой итерации цикла разработки, и при этом не нужно было постоянно переписывать
тонны кода для проверки нескольких простых ситуаций ? Есть литература по этой теме ?

Спасибо.
Re: А как вообще тестировать такие программы ?
От: AndrewJD США  
Дата: 31.05.10 12:09
Оценка:
Здравствуйте, okman, Вы писали:


O>Так как же грамотно организовать тестирование таких систем, чтобы работоспособность программы оставалась

O>подтвержденной на каждой итерации цикла разработки, и при этом не нужно было постоянно переписывать
O>тонны кода для проверки нескольких простых ситуаций ? Есть литература по этой теме ?

Можно начать с того, что сервис мог работать в нескольких режимах: как сервис и как обычное приложение. На обычное приложение уже можно натравливать разные рода тулзы
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re: А как вообще тестировать такие программы ?
От: Marduk Великобритания  
Дата: 01.06.10 13:26
Оценка: 2 (1)
Здравствуйте, okman, Вы писали:

O>Всем доброго дня !


O>Известно, что использование тестов в работе существенно помогает.

O>Лично для меня это, как правило, множество простых тестов для каждого разрабатываемого компонента,
O>плюс какой-нибудь скрипт, запускающий "прогон".

O>Но есть такие программы, которые плохо поддаются внешнему управлению (например, сервисы в Windows),

O>к тому же многопоточны и логика потока выполнения которых далеко не последовательная, а зависит
O>от множества факторов, которые трудно эмулировать.

O>Так как же грамотно организовать тестирование таких систем, чтобы работоспособность программы оставалась

O>подтвержденной на каждой итерации цикла разработки, и при этом не нужно было постоянно переписывать
O>тонны кода для проверки нескольких простых ситуаций ? Есть литература по этой теме ?

O>Спасибо.


У тестирования сервисов тоже есть своя система, по которой они тестируются.

Во-первых, вым надо проработать какой-либо интерфейс для внешнего доступа, чтобы потом можно было этот сервис вызывать извне (в т.ч. программно) и получать результат выполнения.
Как только это есть, можно начать проектировать тесты.

Для начала можно рассматривать тестируемый сервис как изолированный элемент и проработать основной набор happy-path вызовов. Для этого, конечно, надо сделать "заглушки" там, где данные берутся из других сервисов. То есть, в таких случаях лучше передавать некоторые зафиксированные значения, если есть возможность.

Когда есть базовые тесты, можно будет добавить немного негативных тестов, проверяющих, что и ошибки обрабатываются корректно. Это уже больше надо для тестового покрытия. Для базовой "быстрой" проверки работоспособности сервиса достаточно happy-path тестов.

Аналогично делается для смежных сервисов. В результате получаем набор компонентных тестов. Затем проверяем взаимодействие сервисов. То есть пишем тесты, в которых вызов одного сервиса должен так или иначе задействовать другой сервис и посмотреть, как они друг на друга влияют.

То есть, общая схема заключается в том, чтобы суметь сэмулировать вызовы сервисов, затем рассмотреть эти сервисы поотдельности, а вдальнейшем эмулировать более высокоуровневые задачи.

С точки зрения технической реализации тесты зачастую могут сводиться чуть ли не к запуску некоторой командной строки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.