4. Задача
● В произвольном тексте:
● Найти все URL'ы
5. Бесплотные попытки
А как же вот это?!
● ya.ru
● It.s.bori.ng
● vk.com/durov
● Google.com/#plus-plus
● //st.domain.com/?q=1
https?://(.*?) ● И еще миллионы
вариантов...
8. Пусть тестирует сам компьютер!
Fully Random URL
Kwh89 ydhfj 09 u ><LAKSUy236 v
Текст должен остаться неизменным
9. Баги
● Домены не могут начинаться на “-” (тире)
● RFC не последняя инстанция (//)
● Разные наборы символов для query string и
для пути
10. Надежность
● Не дает 100%-покрытия на границах (где
обычно все самое вкусное)
● Не факт, что будут выявлены критичные
баги
● Но...
● Вы можете прогнозировать поведение
программы в стресс-режиме
11. Применимость
● Применим на стыках взаимодействия
программ (форматы файлов, передача
данных, внешние события)
● Очень сильно помогает выявить на раннем
этапе то, что может “завалить” программу в
боевом режиме
Русского термина нет: fuzz – это пух. Можно провести такое сравнение: fuzz testing – это как человек, который пытается усидеть на скачущем быке. Скорость и амплитуда движений быка зависит от многих условий.
Черный ящик – мы ничего не знаем о системе: поис багов, сплойтов, падений системы Серый ящик - есть догадки о поведении: протоколы, форматы файлов Белый ящик – все знаем о системе: все выше перечисленное Рандомные данные: что будет с системой, если она будет получать “белый шум”? Правильные данные: корректно ли система обрабатывает множество различных наборов данных? Ошибочные данные: как система себя поведет в случае сбоя или некорректных данных?
В наиболее произвольном тесте найти все ссылки.
Казалось, бы просто выделить все части текста, начинающиеся на http:// Но есть множество форматов записи адреса, и приведенный список – только верхушка айсберга.
Читаем RFC – получаем регулярку 1. От 1-ого до 3-х внутренних доменов 2. Последний домен должен быть из списка TLD (Top-Level Domains) 3. Пути 4. Строка запроса 5. Хештег
Ну, это надо протестировать. Давай придумывать тесты: раз строка, два строка, умф, пойду покурю, 10 строка, ррррррррр, что же еще придумать.... 15 строка: я сдаюсь
В произвольное-произвольное место произвольной-произвольной строки вставляем произвольный-произвольный адрес. Пропускаем полученный текст через поиск адресов, вырезаем их – ничего не должно измениться.