Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Пример fuzzy testing для поиска URL в тексте
Search
Moscow Python Meetup
PRO
October 24, 2012
Technology
1
800
Пример fuzzy testing для поиска URL в тексте
Как fuzzy testing помог дополнить регулярку и выявить не самые очевидные баги.
Moscow Python Meetup
PRO
October 24, 2012
Tweet
Share
More Decks by Moscow Python Meetup
See All by Moscow Python Meetup
Moscow Python Meetup №105. Кирилл Гладких (ООО Штаб, Python разработчик). Как вайбкодить по-сениорски
moscowdjango
PRO
0
76
Moscow Python Meetup №105. Пётр Андреев (МФТИ, лектор по курсу Advanced Python). Дотянуться до кремния. HighLoad Python: SIMD, GPU
moscowdjango
PRO
0
27
Moscow Python Meetup №105. Антон Важнецов (K2 Cloud, Тимлид). Подход к глубоким изменениям. Миграция SDN в боевом облаке на Python
moscowdjango
PRO
0
22
Moscow Python Meetup №104. Как научить Алису рецептам дореволюционной кухни
moscowdjango
PRO
0
28
Moscow Python Meetup №104. Оптимизация сервиса АБ тестирования или как уйти от Django ORM к Fastapi query builder
moscowdjango
PRO
0
43
Moscow Python Meetup №104. CI/CD Pytest для тестирования качества данных здравоохр. в Великобритании
moscowdjango
PRO
0
27
Moscow Python Meetup №103. Станислав Коленский (Самозанятый, репетитор). Как учат программированию в школьный период и на сколько можно готовить кадры с подросткового возраста
moscowdjango
PRO
0
51
Moscow Python Meetup №103. Мария Рубаненко (Fintech AI / Tech lead DS). Суперсжатие на строках
moscowdjango
PRO
0
85
Moscow Python Meetup №103. Михаил Попов (Assigna Python Backend Developer). Vibe coding. Очевидные преимущества и непоправимые угрозы
moscowdjango
PRO
0
45
Other Decks in Technology
See All in Technology
20251027_マルチエージェントとは
almondo_event
1
510
プレイドのユニークな技術とインターンのリアル
plaidtech
PRO
1
600
境界線が消える世界におけるQAエンジニアのキャリアの可能性を考える / Considering the Career Possibilities for QA Engineers
mii3king
2
110
OTEPsで知るOpenTelemetryの未来 / Observability Conference Tokyo 2025
arthur1
0
400
オブザーバビリティが育むシステム理解と好奇心
maruloop
3
1.9k
dbtとAIエージェントを組み合わせて見えたデータ調査の新しい形
10xinc
7
1.7k
Raycast AI APIを使ってちょっと便利なAI拡張機能を作ってみた
kawamataryo
0
230
Retrospectiveを振り返ろう
nakasho
0
150
AIでデータ活用を加速させる取り組み / Leveraging AI to accelerate data utilization
okiyuki99
6
1.6k
2025/10/27 JJUGナイトセミナー WildFlyとQuarkusの 始め方
megascus
0
100
RemoteFunctionを使ったコロケーション
mkazutaka
1
180
NOT A HOTEL SOFTWARE DECK (2025/11/04)
notahotel
0
350
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3k
Music & Morning Musume
bryan
46
6.9k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Site-Speed That Sticks
csswizardry
13
940
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
940
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Visualization
eitanlees
150
16k
Transcript
Пример fuzz testing для поиска URL в тексте Николай Ходов
(
[email protected]
)
Fuzz testing
Условное деление
Задача • В произвольном тексте: • Найти все URL'ы
Бесплотные попытки https?://(.*?) А как же вот это?! • ya.ru
• It.s.bori.ng • vk.com/durov • Google.com/#plus-plus • //st.domain.com/?q=1 • И еще миллионы вариантов...
Пишем регулярку (https?://)?<domain>{1,3}.<TLD>(/<path>)*(?<query_string>?)(#<hashtag>?)? RFC 1738 +
Тестируем вручную • 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 строке мозг усиленно отказывается что-либо придумывать.
Пусть тестирует сам компьютер! Kwh89 ydhfj 09 u ><LAKSUy236 v
Fully Random URL Текст должен остаться неизменным
Баги • Домены не могут начинаться на “-” (тире) •
RFC не последняя инстанция (//) • Разные наборы символов для query string и для пути
Надежность • Не дает 100%-покрытия на границах (где обычно все
самое вкусное) • Не факт, что будут выявлены критичные баги • Но... • Вы можете прогнозировать поведение программы в стресс-режиме
Применимость • Применим на стыках взаимодействия программ (форматы файлов, передача
данных, внешние события) • Очень сильно помогает выявить на раннем этапе то, что может “завалить” программу в боевом режиме
Вопросы?