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

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

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

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

Avatar for Moscow Python Meetup

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. Применимость • Применим на стыках взаимодействия программ (форматы файлов, передача

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