8

Я новичок в модульном тестировании, поэтому я хотел бы получить мнение о некоторых, кто немного более известен.единичные тесты для скрипинга экрана?

Мне нужно написать код для очистки экрана в ближайшее время. Целевая система - это веб-интерфейс, в котором будет обильный анализ HTML и подобная волатильность. Я никогда не буду уведомляться о каких-либо изменениях целевой системой (например, они внесли редизайн на свой сайт или иным образом изменили функциональность). Поэтому я ожидаю, что мой код будет нарушен.

Таким образом, я думаю, что мой реальный вопрос в том, насколько изменится мой модульный тест, если он будет затронут или изменит интерфейс (сайт, который я соскабливаю)?

Я думаю, что модульные тесты или нет, мне нужно будет сильно протестировать во время выполнения, так как мне нужно обеспечить, чтобы данные, которые я потребляю, были девственными. Даже если бы я выполнял модульные тесты до каждого запуска, веб-интерфейс мог бы по-прежнему меняться между тестами и временем выполнения.

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

Благодаря

+1

Я не думаю, что вы имеете в виду «модульные тесты». Unit Tests - это то, что вы выполняете для проверки кода, который вы написали, по существу, на уровне метода. То, как я читаю ваш вопрос, звучит скорее как ваш разговор об автоматических тестах, чтобы узнать, достаточно ли для вашего ввода достаточного количества ресурсов для выполнения остальной части работы. Это правда? –

+0

Ну, я не уверен, но, к примеру, я предположил, что может быть метод getGoogleSearchResult(), и для этого метода я мог бы сделать тест и утверждения. И нет, я не очищаю поисковые запросы Google.:) – Chris

ответ

6

Единичные испытания всегда должны быть рассчитаны на то, чтобы иметь повторяющиеся известные результаты.

Поэтому для модульного тестирования экрана-скребок, вы должны писать тест против известного набора HTML (вы можете использовать фиктивный объект для представления этого)

рода вещи вы говорите Безразлично «Это действительно звучит как сценарий для модульного тестирования для меня - если вы хотите, чтобы ваш код работал как можно более надежно, то это больше, как вы говорите, о тестировании внутри кода и обработке исключений.

Я бы также включил некоторый код предупреждения, поэтому они информировали вас о любых случаях, когда HTML не анализируется, как ожидалось.

+0

Да. Я сделал что-то очень похожее. Получите HTML-код, соответствующий различным случаям (раздел отсутствует, раздел отсутствует, пустая таблица и т. Д.) И передайте эти строки в ваш класс разбора (который должен быть отделен от вашего веб-загрузчика). – TrueWill

+0

Спасибо, я думаю, это действительно говорит о моем конкретном конфликте с этим. И согласился с кодом предупреждения! – Chris

1

Я думаю, что тесты вещь блок может быть полезно здесь, если у вас есть сервер сборки, они будут давать вам раннее предупреждение код больше не работает. Вы не можете написать единичный тест, чтобы доказать, что скриншоты все равно будут работать, если сайт изменит свой HTML (потому что вы не можете сказать, что они изменят).

Возможно, вы сможете написать модульный тест, чтобы проверить, что что-то полезное возвращается из ваших усилий.

+0

Проверка того, что что-то полезное (и попадает в известные ограничения) в основном то, что я имел в виду, если бы я писал модульные тесты для различных методов скремблирования. – Chris

2

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

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

Никогда не пытайтесь проверить правильность компоновки.

+0

В миксе нет браузера. Просто выполнение командной строки и завиток. – Chris

Смежные вопросы