Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Пример fuzzy testing для поиска URL в тексте

Пример fuzzy testing для поиска URL в тексте

Как fuzzy testing помог дополнить регулярку и выявить не самые очевидные баги.

Moscow Python Meetup

October 24, 2012
Tweet

More Decks by Moscow Python Meetup

Other Decks in Technology

Transcript

  1. Бесплотные попытки https?://(.*?) А как же вот это?! • ya.ru

    • It.s.bori.ng • vk.com/durov • Google.com/#plus-plus • //st.domain.com/?q=1 • И еще миллионы вариантов...
  2. Тестируем вручную • self.assertEqual(strip_links('word1 https://ya.ru word2'), 'word1 word2') • self.assertEqual(strip_links('word1

    domain.arpa/test.link word2'), 'word1 word2') • self.assertEqual(strip_links('word1 ya.ru/yandsearch? sdfsdfsdf=1fsdf word2'), 'word1 word2') • self.assertEqual(strip_links('word1 naked.domain.asia word2'), 'word1 word2') • … • На 15 строке мозг усиленно отказывается что-либо придумывать.
  3. Пусть тестирует сам компьютер! Kwh89 ydhfj 09 u ><LAKSUy236 v

    Fully Random URL Текст должен остаться неизменным
  4. Баги • Домены не могут начинаться на “-” (тире) •

    RFC не последняя инстанция (//) • Разные наборы символов для query string и для пути
  5. Надежность • Не дает 100%-покрытия на границах (где обычно все

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

    данных, внешние события) • Очень сильно помогает выявить на раннем этапе то, что может “завалить” программу в боевом режиме