Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Пример fuzz testing для поиска URL в тексте                        Николай Ходов (nkhodov@gmail.com)
Fuzz testing
Условное деление
Задача●   В произвольном тексте:●   Найти все URLы
Бесплотные попытки                     А как же вот это?!                 ●   ya.ru                 ●   It.s.bori.ng      ...
Пишем регулярку                                              RFC 1738                              +(https?://)?<domain>{1...
Тестируем вручную●   self.assertEqual(strip_links(word1 https://ya.ru word2), word1    word2)●   self.assertEqual(strip_li...
Пусть тестирует сам компьютер!Fully Random URL   Kwh89 ydhfj 09 u ><LAKSUy236 vТекст должен остаться неизменным
Баги●   Домены не могут начинаться на “-” (тире)●   RFC не последняя инстанция (//)●   Разные наборы символов для query st...
Надежность●   Не дает 100%-покрытия на границах (где    обычно все самое вкусное)●   Не факт, что будут выявлены критичные...
Применимость●   Применим на стыках взаимодействия    программ (форматы файлов, передача    данных, внешние события)●   Оче...
Вопросы?
Nächste SlideShare
Wird geladen in …5
×

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

738 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Technologie
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ http://1lite.top/9DSc8 ◀ ◀ ◀ ◀
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

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

  1. 1. Пример fuzz testing для поиска URL в тексте Николай Ходов (nkhodov@gmail.com)
  2. 2. Fuzz testing
  3. 3. Условное деление
  4. 4. Задача● В произвольном тексте:● Найти все URLы
  5. 5. Бесплотные попытки А как же вот это?! ● ya.ru ● It.s.bori.ng ● vk.com/durov ● Google.com/#plus-plus ● //st.domain.com/?q=1https?://(.*?) ● И еще миллионы вариантов...
  6. 6. Пишем регулярку RFC 1738 +(https?://)?<domain>{1,3}.<TLD>(/<path>)*(?<query_string>?)(#<hashtag>?)?
  7. 7. Тестируем вручную● 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 строке мозг усиленно отказывается что-либо придумывать.
  8. 8. Пусть тестирует сам компьютер!Fully Random URL Kwh89 ydhfj 09 u ><LAKSUy236 vТекст должен остаться неизменным
  9. 9. Баги● Домены не могут начинаться на “-” (тире)● RFC не последняя инстанция (//)● Разные наборы символов для query string и для пути
  10. 10. Надежность● Не дает 100%-покрытия на границах (где обычно все самое вкусное)● Не факт, что будут выявлены критичные баги● Но...● Вы можете прогнозировать поведение программы в стресс-режиме
  11. 11. Применимость● Применим на стыках взаимодействия программ (форматы файлов, передача данных, внешние события)● Очень сильно помогает выявить на раннем этапе то, что может “завалить” программу в боевом режиме
  12. 12. Вопросы?

×